ࡱ> z}d( / 0DTimes New Roman1|dv 0|( 0D[SOes New Roman1|dv 0|( 0 DTahomaew Roman1|dv 0|( 0"0DNSefNaew Roman1|dv 0|( 0@DSymbolew Roman1|dv 0|( 0PDCourier Newman1|dv 0|( 01 ` .  @n?" dd@  @@``  F! f"MPRUVX\`abce}1&y~N-B4abc_.)(($ ^-^((X~VO*J87()*+',$g-.     V& !"#$%YfNOQSWYZ[]^_hiLKJIHGEDbCAAvB?>85=<I:K7643`91/.-0,(Mbe+NP[ ^]\)*d/012347cba`_=^]QORSTVWXYZ_`1acdfghijklmnpoqrst;uvxz}| xyzuvrstjlopqmdfghZ[\nke8!i9:EGCBA@?>=<DKHIJTC x1?@87 g4CdCdv 0p"ppp@ uʚ;2Nʚ;<4!d!d{ 0<4dddd{ 0? %W>Software Engineering o N ] z  Ng [ N WSN'Yf[{:gyf[Nb/g| http://cs.nju.edu.cn/people/lixuandong/softE.html&zH1~H :ContentsDConventional Methods for Software Engineering O~oN] zel Object-Oriented Software Engineering bT[aoN] z Software Process, Management, and Quality oNǏ z0{tN(ϑJ. % *p.%* Reference Se.s Roger S. Pressman Software Engineering: A Practitioner s Approach McGraw-Hill 1982(1/e), 1987(2/e), 1992(3/e) 1997(4/e), 2001(5/e) SƉSbT[a^!jb/g R _ W SN*zz*)Y'Yf[QHr>y http://moon.nju.edu.cnV3P* ;-Conventional Methods for Software Engineering.. &-Conventional Methods for Software Engineering.- '&Basic Concepts W,gi_Software is instructions (computer programs) that when executed provide desired function and performance, data structures that enable the programs to adequately manipulate information, and documents that describe the operation and use of the programs.  < Basic ConceptsoN {:g|~-Nv z^SvQ gsQeN0 z^ {NR-NvYt[aTYtĉRvc0 eN :NNONN z^@bvDef0 @L L(Basic ConceptsSoftware Characteristics Software is developed or engineering, it is not manufactured in the classical sense. oN/f1u_Sb] zS b_bv N/f O~aIN N1u6R Nuv0 Software doesn t  wear out . oN NO x_c 0 Although the industry is moving toward component-based assembly, most software continues to be custom build. 'YYpeoN/fꁚ[v N/fǏ] gvgN~ňwegv0U" m   `n m= Basic Concepts Software Applications Systems software Real-time software Business software Engineering and scientific software Embedded software Personal computer software Web-based software Artificial intelligence software 4  )Basic ConceptszGeneric Category for Software |~oN /edoN-NNmiddleware ^(uoN(  ,  Basic Concepts > Basic Concepts Evolution of Software oNvSU\Ǐ z ,{N6kN,{NS{:g Nv,{N*N z^vQs0R[(uvؚ~ z^QsKNMR1946-1956  ,{N6kN[(uvؚ~ z^Qs0RoN] zQsKNMR1956-1968  ,{ N6koN] z1968- 0*s rz@ Basic ConceptsbSoftware crisis oNqS:g OBlsQ|1Y _S9(u1Yc ۏ^b^ S`'`] N~b2!*Basic ConceptsdNuoNqS:gvSV oN,gvyrp {tNXTv‰p (u7bv‰p oN_SNXTv‰p* )  )2ABasic ConceptsNuoNqS:gvSVoN,gvyrp oN_SۏU\`Qaϑ oN_S(ϑNċN {tTc6RoN_SǏ zvS_V oNl g x_c i_ oN~b8^asT@wۏbO9eSegv*G GZ+Basic ConceptsNuoNqS:gvSV{tNXTv‰p We already have a book that s full of standards and procedures for building software, won t that providemy people with everything they need to know? bN ]~ gNsQN_SoNvhQTĉvfNM| S[N N~NNcO@b gvQwSvOo`T63 Da *.,Basic ConceptsNuoNqS:gvSV{tNXTv‰p My people have state-of-the-art software development tools, after all, we buy them the newest computers. bN]~ gN_}Y_YvoN_S]wQ N bNb ggev{:g0 If we get behind schedule, we can add more programmers and catch up. YgbN]~=TNR SNXRfYv z^XTegv Nۏ^0 bZiZ%ZEZ!ZZ Hl!I.Basic ConceptsvNuoNqS:gvSV(u7bv‰p A general statement of objectives is sufficient to begin writing programs - we can fill in the details later. gN*N[vhvibc1\N@wKbQ z^N Y~SN(WNTQeEQ0 Project requirements continually change, but change can be easily accmodated because software is flexible. (u7b[oNvBl NeSS 6q oN/fgo up;mv SN{f0W9eR0 Lo(k' )\n$B "BBasic Concepts NuoNqS:gvSVoN_SNXTv‰p Once we write the program and get it to work, our job is done. @boN_S1\/fQ z^v^lO[ЏL0 Until I get the program  running I have noway of assessing its quality. (W z^wckЏLKNMR l gRlċ0OvQ(ϑ0J?I\?)/Basic Concepts>NuoNqS:gvSVoN_SNXTv‰p The only deliverable work product for a successful project is the working program. N*NbRyv/UN^cNv1\/fSЏLv z^0 Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. oN] z1\/f^z^'Ye(uvech ُ_\MNObNvoN_SHes0 `St$  JSt0Basic ConceptszNuoNqS:gvSVqQ gv‰p oNbeQuN'`ЏLNTv~b]\Ov^ NY N~b/fNN_[fZPv{US]\O0 F*(=1Basic ConceptsSoftware Engineering The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (NATO Science Committee)0CBasic ConceptsoN] z ^(u{:gyf[0pef[S{tyf[I{St N] zSSR0el㉳QoNv] z0vQ-N {:gyf[0pef[(uNg !jWN{l ] zyf[(uN6R[ĉ0W0MNOb,gSnx[Cga {tyf[(uNR0Dn0(ϑ0b,gI{{t0'Y~vyhQfN *r rwDBasic Concepts^oN] zvW,gQ[ oNel oN]wQ oN] zhQTĉ oN] z{t oN] zt %0/EBasic ConceptsoN] zvW,gSt %NSystem Engineering To construct a system model, the engineer should consider a number of restraining factors: Assumptions Simplifications Limitations Constraints Preferences>h@f?@ System EngineeringSystem Simulation Many computer -based systems interact by the real world in a reactive fashion. Real-time and embedded systems often fall into the reactive systems category.0A System Engineering;System engineering process: Business process engineering The system engineering process is called business process engineering when the engineering work focuses on a business enterprise. Product engineering The system engineering process is called product engineering when a product is to be built. d .<." B System EngineeringnBusiness process engineering The goal of business process engineering is to define architectures that will enable a business to use information effectively. Three different architectures must be analyzed and designed within the context of business objectives and goals: - data architecture - application architecture - technology infrastructureJa XFSystem Engineering|Business process engineering The data architecture provides a framework for the information needs of a business or business function. The application architecture encompasses those elements of a system that transform objects within the data architecture for some business purpose. The technology infrastructure provides the foundation for the data and application architectures.v` X|D GSystem Engineering C System EngineeringProduct engineering The goal of product engineering is to translate the customer s desire for a set of defined capability into a working product. To achieve this goal, product engineering must derive architecture and infrastructure. The architecture encompasses four distinct system components: software, hardware, data (databases), and people. A support infrastructure is established and includes the technology to tie the components together and the information that is used to support the components.* HSystem Engineering NSystem Engineering Product engineering System Analysis Identification of Need Feasibility Study Economic feasibility Technical feasibility Legal feasibility Alternatives Economic Analysis Technology Analysis l9' 9 & kDSystem EngineeringRequirements engineering The outcome of the system engineering process is the specification of a computer-based system or product at the different levels. But the challenge facing system engineers (and software engineers) is profound: How can we ensure that we have specified a system that properly meets the customer s needs and satisfies the customer s expectations? There is no foolproof answer to this difficult question, but a solid requirements engineering process is the best solution we currently have.4  ISystem EngineeringaRequirements engineering Requirements engineering provides the appropriate mechanism for understanding what the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution, specifying the solution unambiguously, validating the specification, and managing the requirements as they are transformed into an operational system.0IGJSystem EngineeringRequirements engineering process requirements elicitation requirements analysis and negotiation requirements specification system modeling requirements validation requirements management0!!ESystem EngineeringHow to model systems Every computer-based system can be modeled as an information transform using an input-processing-output template. To develop the system model, a system model template is used. The system engineer allocates system elements to each of five processing regions within the template: - user interface - input - system function and control - output - maintenance and self test Tv t KSystem Engineering LSystem EngineeringSystem specification Introduction A. Scope and purpose of Document B. Overview 1. Objectives 2. Constraints Functional and Data Descriptions A. System architecture 1. System context diagram 2. SCD Description~ r!g   _ MSystem EngineeringSystem specification Subsystem Descriptions A. Architecture Diagram Specification for Subsystem n B. Architecture Dictionary C. Architecture Interconnect Diagrams and Description System Modeling and Simulation Results A. System Model Used for Simulation B. Simulation Results C. Special Performance Issues Project Issues A. Projecte Development Costs B. Project Schedule Appendices'sD  T R;OSoftware Requirements AnalysisSoftware requirements engineering is a process of discovery, refinement, modeling, and specification. Both the software engineer and customer take an active role in software requirements engineering.PSoftware Requirements AnalysisRequirements analysis is a software engineering task that bridges the gap between system level requirements engineering and software design. TSoftware Requirements AnalysisRequirements engineering activities result in the specification of software s operational characteristics (function, data, and behavior), indicate software s interface with other system elements, and establish constraints that software must meet. QSoftware Requirements AnalysisIn requirements analysis and specification, communication content is very high, chance for misinterpretation or misinformation abound, and ambiguity is probable.  I know you believe you understood what you think I said, but I am not sure you realize that what you heard is not what I meant.  bwS`OvO`Of}vN`O:Nb@bv/fNHN FO/fb N[`O/f&TaƋ0R`O,T0Rvv^ N/fb@bcva` ...& 0 *$;$;(6RSoftware Requirements Analysis Software requirements analysis may be divided into five areas of effort: Problem recognition evaluation and synthesis modeling specification review2MKMJSSoftware Requirements AnalysisRequirements elicitation for software: Initiating the Process Facilitated Application Specification Techniques Quality Function Deployment Use Cases2'o'nUSoftware Requirements AnalysisAnalysis Principles: The information domain of a problem must be represented and understood. The functions that the software is to perform must be defined. The behavior of the software (as a consequence of external events) must be represented. The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion. The analysis process should move from essential information toward implementation detail. 4  \&Software Requirements Analysis?Guiding principles for requirements engineering Understand the problem before you begin to create the analysis model. Develop prototypes that enable a user to understand how human/machine interaction will occur. Record the origin of and the reason for every requirements. Rank requirements work to eliminate ambiguity.401 `.Software Requirements AnalysisoNBlRgNXT^wQYvyr_ UNONNbavi_ ͑etetOKNb:NTy;bR v^9hncTy;bR~TQv㉳QRl UNNTyvNQzbmmvSYDe-N8TSp`S_vnc Yt(u7bvsXSWwƋ[lka-Software Requirements AnalysisoNBlRgNXT^wQYvyr_ wQYb|~vlxNToNR^(uN(u7bsXvR wQYo}YvfNbTS4Yb__ۏLTNbcavR wQ g e w0Rh(g S w0Rhg vR0IZYV Software Requirements Analysis_How to analyze software requirements? Analyzing the information domain Modeling Partitioning 0'9'7W!Software Requirements AnalysisKey to understanding of software requirements All software applications can be collectively called data processing. Interestingly, this term contains a key to our understanding of software requirements. Software is built to process data, to transform data from one form to another; that is, to accept input, manipulate it in some way, and produce output. This fundamental statement of objective is true for all software we build.J.- 5<X"Software Requirements AnalysisfThe information domain information content ant relationships information flow information structure0ONY#Software Requirements AnalysisThe information domain Information content represents the individual data and control objects that constitute some larger collection of information transformed by the software. Data and control objects can be related to other data and control objects, and during analysis of the information domain these relationships should be defined. Information flow represents the in manner in which data and control change as each moves through a system. Information structure represents the internal organization of various data and control items.l '[H ]'Software Requirements Analysis The analysis model must achieve three primary objectives: to describe what the customer requires to establish a basis for the creation of a software to define a set of requirements that can be validated once software is built.4>>  {ESoftware Requirements AnalysisKAnalysis Modeling Data modeling Functional modeling Behavioral modeling <87^(Software Requirements Analysis zDSoftware Requirements AnalysisqData Dictionary a repository that contains descriptions of of data objects consumed or produced by the software.0a`|FSoftware Requirements AnalysisEntity Relation Diagram (ERD) The ERD depicts relationships between data objects. The ERD is the notation that is used to conduct the data modeling activity. The attributes of each data object noted in the ERD can be described using a data object description. J  }GSoftware Requirements AnalysisData Flow Diagram (DFD) The DFD serves two purposes: (1) to provide an indication of how data are transformed as they move through the system and (2) to depict the functions (and subfunctions) that transform the data flow. The DFD provides additional information that is used during the analysis of information domain and serves as a basis for modeling function. A description of each function presented in the DFD is contained in a process specification (PSPEC).6  ~HSoftware Requirements AnalysisState Transition Diagram (STD) The STD indicates how the system behaves as a consequence of external events. To accomplish this, the STD represents the various modes of behavior (called states) of the system and the manner in which transitions are made from state to state. The STD serves as the basis for behavioral modeling. Additional information about the control aspects of the software is contained in the control specification (CSPEC).L  ISoftware Requirements AnalysisbData modeling What are the primary data objects to be processed by the system: What is the composition of each data object and what attributes describe the object? Where do the objects currently reside? What are the relationships between each object and other objects? What are the relationships between the objects and the processes that transform them?*U UJSoftware Requirements AnalysisEntity Relation Diagram (ERD) Data objects: A data object is a representation of almost any composite information that must be understood by software. Attributes: define the properties of a data object and take on one of three different characteristics: (1) name an instance of the data object, (2)describe the instance, and (3) make reference to another instance in another table. Relationships: Data objects are connected to one another in different ways.4  LSoftware Requirements Analysis MSoftware Requirements AnalysisFunctional modeling Information is transformed as its flows through a computer-based system. The system accepts input in a variety of forms; applies hardware, software, and human elements to transform it; and produces output in a variety of form.0NSoftware Requirements AnalysisdFundamental system model oN|~vhQ萟Rh:ybN*NUSNvOo`SbcǏ z(_)Software Requirements AnalysisBasic DFD Notation External entity: A producer or consumer of information that resides outside the bounds of the system to be modeled. Process: A transformer of information that resides within the bounds of the system to be modeled. Data object: the arrowhead indicates the direction of data folw. Data store: A repository of data that is to be stored for use by one or more process.*m m$Xb,Software Requirements AnalysisOuXTvƉ|~  c+Software Requirements Analysis d*Software Requirements Analysis OSoftware Requirements Analysis.Behavior modeling States Transitions Events0PSoftware Requirements Analysis QSoftware Requirements AnalysisStructured Analysis Creating an entity/relationship diagram Creating a data flow model Control specification Process specification Creating a data dictionaryTB+Z$Software Requirements Analysis$The Software Requirements Specification Introduction A. System reference B. Overall description C. Software project constraints Information Description A. Information content representation B. Information flow representation (1. Data flow 2. Control flow) (au( `u RSoftware Requirements AnalysisThe Software Requirements Specification Functional Description A. Functional partitioning B. Functional description 1. Processing narrative 2. Restrictions/limitations 3. Performance requirements 4. Design constraints 5. Supporting diagrams C. Control Description 1. Control specification 2. Design constraintsJ(V( P SSoftware Requirements AnalysisThe Software Requirements Specification Behavioral Description A. System states B. Events and actions Validation and Criteria A. Performance bounds B. Classes of tests C. Expected software response D. Special considerations Bibliography Appendix (3z( 3z [%Software Requirements Analysis4Specification Review Complete Consistent Accurate0TDesign Software design sits at the technical kernel of software engineering and is applied regardless of the software process model that is used. Beginning once software requirements have been analyzed and specified, software design is the first of three technical activities - design, code generation, and test - that are required to build and verify the software. The importance of software design can be started with a single word - quality. Design provides us with representations of software that can be assessed for quality.4 WUDesign VDesignThe data design transforms the information domain model created during analysis into the data structures that will be required to implement the software. The architectural design defines the relationship between major structural element of software. The interface design describes how the software communicates within itself, with systems that interoperate with it, and with humans who use it. The component-level design transforms structural elements of software architecture into a procedural description of software components.l LoWDesignDesign process goal: The design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer. The design must be a readable, understandable guide for those who generate code and for those who test and subsequently maintain the software. The design should provide a complete picture of the software, addressing the data, functional, and behavioral domain from an implementation perspective.4  XDesignAbstraction Abstraction permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details. 2  YDesignRefinement Refinement is actually a process of elaboration. We begin with a statement of function (or description of information) that is defined at a high level of abstraction. That is, the statement describes function or information conceptually but provides no information about the internal workings of the function or the internal structure the information. Refinement causes the designer to elaborate on the original statement, provide more and more details as each successive refinement (elaboration) occurs.@   $ ZDesignYAbstraction and Refinement Abstraction and refinement are complementary concepts. Abstraction enables a designer to specify procedure and data and yet suppress low-level details. Refinement helps the designer reveal low-level details as design progresses. Both concepts aid the designer in creating a complete design model as the design evolves.4? > [DesignPModularity !jWWS Software is divided into separately named and addressable components, often called modules !jWW , that are integrated to satisfy problem requirements.\S7, \5\Design!jWW !jWW/fpencf0SgbLSI{ z^[avƖT /fUSr}T Tvv^NSNǏ TW[eg OYǏ z0Qpe0P[ z^0[0moduleI{0?D(;dDesignPArgument for modularity C(x) be a function that defines the perceived complexity of a problem x. E(x) be a function that defines the effort required to solve a problem x. For two problems, p1 and p2 if C(p1) > C(p2), then E(p1) > E(p2) C(p1 + p2) > C(p1) + C(p2) E(p1 + p2) > E(p1) + E(p2)@*6 cDesign eDesignHow do we define an appropriate module of a given size? Modular decomposability Modular composability Modular understandability Modular continuity Modular protection29n9mY@fDesignSoftware Architecture Software architecture is the hierarchical structure of program components (modules), the manner in which these components interact, and the structure of data that are used by the components. One goal of software design is to derive an architectural rendering of a system. This rending serves as framework from which more detailed design activities are conducted.4l k gDesignASoftware Architecture Control hierarchy Structured Partitioning0+*hDesign iDesignData Structure Data structure is a representation of the logical relationship among individual elements of data. Data structure dictates the organization, methods of access, degree of associativity, and processing alternatives for information. 0 0jDesignSoftware Procedure Software architecture (program structure) defines control hierarchy without regard to the sequence of processing and decisions. Software procedure focuses on the processing details of each module individually. Procedure must provide a precise specification of processing, including sequence of events, exect decision points, repetitive operations and even data organization and structure.4  AQkDesignInformation Hiding Modules should be specified and designed so that information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information.0lDesignEffective modular design: Function independence (!jWWRrz'`) The concept of function independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding. We should design software so that each module addresses a specific subfunction of requirements and has a simple interface when viewed from other parts of the program structure. T<31 42  cq>Design!jWWRrz'` !jWWrz/fc_SwQ grzR NTvQ[!jWWKNl gǏYvvN\O(uv!jWW0 !jWWRrzvaIN RRrR {ScS fNYNT\O_S TNoN rzv!jWWfNKmՋT~b0 ^ & '  %  & `mDesignqualitative criteria for measuring independence: Cohesion (QZ'`) Coupling (&T'`) F2"0 4= oDesignCohesion Cohesion is a natural extension of the information hiding concept. A cohesive module performs a single task within a software procedure, requiring little interaction with procedures being performed in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. We always strive for high cohesion, although the mid-range of the spectrum is often acceptable.4    pDesignSpectrum for cohesion: Coincidentally cohesion (vP6qQZ)N~NRsQ|~gceNO Logically cohesion (;QZ)N~NR(W; N T^\N{| OYGW:NQNO temporal (eQZ)N~NR_{(W TNkeQgbLNO Communicational cohesion (Oo`QZ)!jWWQ@b gCQ }_(uv TveQbQpencƖT-N Sequential cohesion (z^QZ)!jWW-Nvk*NCQ }/fN TNR'}[vsQ N*NCQ }vQ/f NN*NCQ }veQؚ Functional cohesion (RQZ)N*N!jWW[bN*NNN[bN*NRؚ +  !0 t0  .nDesign0Coupling Coupling is a measure of interconnection among modules in a software structure. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. In software, we strive for lowest possible coupling.4 '  & s@DesignnSpectrum for coupling: No direct coupling (eNUOޏc)$N*N!jWW-NvkN*Nrz0W]\O NSN*NvX[(WgNO&T 0 Data coupling (penc&T)$N*N!jWW|_dkǏSpeNbcOo` NNbcvNN/fpencNO&T 0 Control coupling (c6R&T)$N*N!jWWKN OvOo` gc6RbR-N&T 0Z+&6,)%tBDesignSpectrum for coupling: Common coupling (lQqQsX&T)$N*NbY*N!jWWǏN*NlQqQsXvN\O(u 1. N*NX[penc N*NSpencNO&T  2. X[SpencNO---NKN 0 Content coupling (Q[&T) 1. N*N!jWWSN*N!jWWvQpenc 2. $N*N!jWW gNR z^Nx͑S 3. N*N!jWW NǏck8^eQS lyvSN*NvQ 4. N*N!jWW gY*NeQSasT@w!jWW gY*NR 0j.-i Kq,)JowDDesignsQN&T'`TQZ'`vSR RN=\S1_v&T'`=\ϑO(upenc&T \(uc6R&T P6RlQqQsX&TvV [hQ N(uQ[&T RN=\SؚvQZ'`RN=\SؚvQZ'` v^Ƌ+RQNOQZ'`Pa`xEDesignDesign heuristics for effective modularity Evaluate the  first iteration of the program structure to reduce coupling and improve cohesion. 9eۏoN~g cؚ!jWWQZ'` MNO!jWW&T'`0 Attempt to minimize structures with high fan-out; strive for fan-in as depth increases. =\ϑQ\ؚGbQ~gvpev @wm^vXRNSfYvGbeQ0GbQǏ'YasT@w!jWWǏR YBg c6RTOSǏYv N~!jWW0N,eg vB\GbQؚ -NGbQ\ NOB\ؚGbeQ0R-"- aXP ,XPyFDesignDesign heuristics for effective modularity Keep the scope of effect of a module within the scope of control of that module. !jWWv\O(uVOc(W!jWWvc6RVQ0!jWWv\O(uV/fc!jWW-NN*N$Re@bq_Tv@b gvQ[!jWW!jWWvc6RVc!jWW,gNS@b gvcbcN^\N[v!jWW0 Evaluate module interfaces to reduce complexity and redundancy. RNMNO!jWWcSv YBg z^0!jWWcSv YBg'`/f_woNvN*N;NSV0cS^O_Oo` O{USv^NN!jWWvRN0H-- QO@?,~O@>zGDesignDesign heuristics for effective modularity Strive for  controlled entry modules by avoiding  pathological connections. USeQSUSQSv!jWW0MQQ[&T fNt㉌T~b0 Define modules whose function is predictable. !jWWvR^SNKm0v TveQ^ gv TvQ &TRNt0KmՋT~b0F--N.(,{.'qDesignGData design Architectural design Interface design Component design rDesign Data design Data design creates a model of data and/or information that is represented at a high level of abstraction. This data model is then refined into progressively more implementation-specific representations that can be processed by the computer-based system. 0  sDesignData design Data structure: At the program component level, the design of data structures and associated algorithms required to manipulate them is essential to the creation of high-quality applications. Database: At the application level, the translation of a data model into a database is pivotal to achieving the business objectives of a system. Data warehouse: At the business level, the collection of information stored in disparate databases and reorganized into a  data warehouse enables data mining or knowledge discovery that can have an impact on the success of the business itself. F  uDesign^Architectural design Architectural styles Mapping requirements into a software architecture <HGtDesignArchitectural styles Data-centered architectures Data-flow architectures Call and return architectures Object-oriented architectures Layered architectures0vDesignMapping requirements into a software architecture The call and return architecture. Structured design (data flow-oriented design method)  3ZwDesign Structured design provides a convenient transition from a data flow diagram to software architecture: the type of information flow is established; flow boundaries are indicated; the DFD is mapped into program structure; control hierarchy is defined; resultant structure is refined using design measures and heuristics; and the architectural description is refined and elaborated.4kk }JDesignTransform flow (SbcAm) Oo`leQۏeQ|~ Te1uYb__SbcbQb__0ۏeQ|~vOo`ǏSbc-N_ ~ǏR]YtNTQl@wQSbcbYb__y_|~0 F]L~KDesign LDesignTransaction flow (NRAm) NRAmvyrp/fpencl@wc6ebYNLuvOo`lbcbN*NNRy 6qT {勋NRyv

4Designh]wQ--PDL(Program Design Language) PDLwQ g%N^ 1 DesignDDesign specification b!. Architectural design A. Review of data and control flow B. Derived program structure c!. Interface design A. Human-machine interface specification B. Human-machine interface design rules C. External interface design 1. Interface to external data 2. Interface to external systems or devices D. Internal interface design rules > Z+.oDesignDesign specification d!. Procedural Design for each module: A. Processing narrative B. Interface description C. Design language description D. Modules used E. Internal data structures F. Comments/restrictions/limitations4  +Design|Design specification e!. Requirements cross-reference f!. Test provisions A. Test guideline B. Integration strategy C. Special consideration g!. Special Notes h!. Appendix R  9P DesignlDesign review (v Y[) oNv1u{tebvNh0b/g_SebvNhTvQN gsQNXTY(u7b0(ϑOToN/ecI{ qQ TۏL Y[0 [ۏL Y[vf>f}YY/fSNke0WSsoNv:w N SNOk*N:w(WۏL z0KmՋTNNKNMRNN~ck N >fW0WMNOTv_S6kT~b6kv9(u0 Y[Sbckĉv[g0^ckĉv[gThg Nye_04  Design Y[vhQ fn'` oNSbNoNBlĉ z^vR{|  c^(uWR{| (u N(u Code Generation z^vR{|  cbR'`(R{| z^S+Tz^bR v^S+T gv^SbR R^_QNR^_{Bl Q~QNQ~{Bl *8ONCode Generation z^vR{|  c\O(ue_R{| }TN_ NvQc ZPNHN ؏/f `7hZP v^cv~bR/f}TN_v HQZPNHN0TZPNHNĉ[}YNfnxv!k^0 \O(u_Nv^vc-N Nf>f wQvQ~bRgbLvHQT!k^0 f^    GqCode GenerationL z^vR{|  cc~+RR{| R'` '` [s'`'&Code Generation^ z^vR{|  c!jb[‰NLuv҉^R{| [a_bT[a ^[a_0/Code GenerationB z^vR{|  cvQ[e_R{| Qpe_ ;_ "!Code Generation N, aϑgy z^/f&TTNyr[vyv ^Q NbNNV } ^(uW {lT{ YBg'` oNЏLsX (u7bBl-NsQN'`ebv penc~gv YBg'` oN_SNXTvwƋ4ls^ S(uvы|~41A#AqCode Generation xΘ ' ZCode Generation z^/edsX s(W zǏ z'YY(WN~CASE]wQv/ec NۏL ُ~]wQR[b0ы0Ջ0yv{tI{N|RNR ُ~]wQ g:gƖb(WNwb_b z^/edsX0 aa$ <Code Generation z^/edsX^wQYvyr'` (u'`(uN N Tv0 N Tv^(uWT_Sel ^'`Ǐ_sQn M6RQ N Tv z^/edsX[O _>e'`eO0WXRe]wQ /ec Y(u/ecS Y(u!jWWvX[P0"}_Tg~b ꁧc'`Oꁫd\OvcknxNOS &^penc^cOpenc^:g6R X[P0{t]_SvoNNT O(ϑ gRNcؚ@b_SoNv(ϑ 8T_(u7b(u7b?aaO(u wQ g^:WzNRwckcؚoNuNR0 @ f0TestingSoftware testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation. The importance of software testing and its implications with respect to software quality cannot be overemphasized. It is not unusual for a software development organization to expend between 30 and 40 percent of total project effort on testing. In the extreme, testing of human-rated software can cost three to five times as much as all other software engineering steps combined!g1TestingvIn fact, testing is the one step in the software process that could be viewed as destructive rather than constructive.h2TestingTesting Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is one that has a high probability of finding an as-yet-undiscovered error. A successful test is one that uncovers an as-yet-undiscovered error.4  i3Testing.Testing Principles All tests should be traceable to customer requirements. Tests should be planned long before testing begins. The Pareto principle applies to software testing. (KmՋSs-Nv80%_SwnN z^!jWW-Nv20%) Testing should begin  in the small and progress toward testing  in the large. Exhaustive testing is not possible. To be most effective, testing should be conducted by an independent third party.^" ! &j4TestingmTestability Operability Observability Controllability Decomposability Simplicity Stability Understandability4 b  ` Gk5TestingB A engineered product can be tested in one of two ways: Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational while at the same time searching for errors in each function. (Black-box testing) Knowing the internal workings of a product, test can be conducted to ensure that  all gears mesh, that is internal operations are performed according to specifications and all internal components have been adequately exercised. (White-box testing)>@  7 l6Testing&Black-box testing (RKmՋ) When computer software is considered, black-box testing alludes to test that are conducted at the software interface. Although they are designed to uncover errors, black-box test are used to demonstrate that software functions are operational, that input is properly accepted and output is correctly produced, and that the integrity of external information is maintained. A black-box test examines some fundamental aspect of a system with little regard for the internal logical structure of the software. T  &&Testing wz=\RKmՋ ON*N z^3*NteWveQpenc 傡{:gvW[:N16MO Rk*NpencSSv

 RT$*TestingTest case design KmՋ(uOvW,gvh/fnx[N~KmՋpenc vQSsN*NbN{|visgؚ0 White-box testing methods Black-box testing methods0E517, &5TestingTest case design (White-box testing Methods) Using white-box testing methods, the software engineer can derive test cases that (1) guarantee that all independent paths within a module have been exercised at least once, (2) exercise all logical decisions on their true and false sides, (3) execute all loops at their boundaries and within their operational bounds, and (4) exercise internal data structures to ensure their validity. T3- ]2 TestingP;v Sv $R[v agNv $R[/agNv agN~Tv _v4#  )Testings~QY N z^ #include(stdio.h); main(){ float A, B, X; scanf( %f %f %f , &A, &B, &X); if (A>1)&&(B==0) X=X/A; if (A==2)||(X>1) X=X+1; printf( %f , X)} z^vKmՋpencNR+RnSv0$R[v0agNv0agN~TvT_iv;vhQ0 < C4 Z &Q  2Testing Sv SYYvKmՋpenc OKmՋ z^-Nk*NS\gbLN!k0 :NOk*NSgbLN!k z^vgbL_^/fsacbed A=2, B=0, X=4 傊bbpv$R[Q:N (A==2)||(X<1) ,UJB TestingR $R[v SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[vkySv~g\gbLN!k0 YR+Rv_sacbedTsabdb sacbdTsabedv$N~KmՋpenc n $R[vhQ 1 A=3, B=0, X=3 (sacbd) 2 A=2, B=1, X=1 (sabed) DfLTestingP agNv SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[h_-Nvk*NagNS0RTySv~g0 (WapA>1, A1, B=0, B`"0 (WbpA=2, A `"2, X>1, X 10 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)6D (3jE)Testing $R[/agNv SYYvKmՋpenc O_$R[h_-Nvk*NagNS0RTySv~g Nk*N$R[h__NS0RTySv~g0 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)@E3E2>GTestingR agN~Tv SYYvKmՋpenc O_$R[h_-NagNvTyS~T\QsN!k0 gkQySvagN~T 1 A>1, B=02 A>1, B `"0 3 A 1, B=04 A 1, B `"0 5 A=2, X>16 A=2, X 1 7 A `" 2, X>18 A `" 2, X 10 KmՋpenc 1 A=2, B=0, X=4 (sacbed, 1,5) 2 A=2, B=1, X=1 (sabed, 2,6) 3 A=1, B=0, X=2 (sabed, 3,7) 4 A=1, B=1, X=1 (sabd, 4,8)L*/"l?m TestingV _v SYYvKmՋpenc O_ z^vkagS_\gbLN!k z^V-N gs Rk*Ns\~ǏN!k 0 KmՋpenc 1 A=1, B=1, X=1 (sabd) 2 A=1, B=1, X=2 (sabed) 3 A=3, B=0, X=1 (sacbd) 4 A=2, B=0, X=4 (sacbed)@<o<jZKTesting@Test case design (Black-box testing) Black-box testing attempts to find errors in the following categories: (1) incorrect or missing functions, (2) interface errors, (3) errors in data structures or external database access, (4) behavior or performance errors, and (5) initialization and termination errors. Tw& Q TestingkTest case design (Black-box testing) Test are designed to answer the following questions: How is functional validity tested? How is the system behavior and performance tested? Is the systems particularly sensitive to certain input values? How are the boundaries of a data class isolated? What effect will specific combinations of data have on system operation? J[% 6 TestingTest case design (Black-box testing) Equivalence partitioning I{NRR Boundary value analysis Lu V$+ ]=U%| >VTestingRegression testing (VR_KmՋ) In the context of an integration test strategy, regression testing is the re-execution of some subset of tests that have been conducted to ensure that changes have not propagated unintended side effects.B(Testing~ňKmՋelk vT N~ňl NqR!jWWY(WKmՋ6keg|~v;NR egSscSYvbc!jWW SG0RNKNvT|vKmՋVNOB\sQ.!jWW-NvSsZf0 ꁕ^T N~ňl Nbc!jWWYvqR!jWW(WgTN*N!jWWňeQKNMR oN[SOv^ NX[(W0 N,O(u$Nyelv~T KmՋ6kegǑ(uvT N~ňl TgǑ(uꁕ^T N~ňl _Y`Q NNSN TeۏL0*   Testing/Integration test documentation An overall plan for integration of the software and a description of specific tests are documented in a test specification. This document contains a test plan, and a test procedure, is a work product of the software process, and becomes part of the software configuration.0TestingTest specificationKmՋffN 1. KmՋV 2. KmՋR KmՋebbKmՋRR:NQ*Neb R+RKmՋoNvTyyr'` ۏ^ YoNqR!jWWTbc!jWW sXNDn 3. KmՋek ,{nKmՋ6kvf~ňv!k^KmՋvvT^Kmv!jWWN(uv]wQbb/gYoNvfKmՋ(uOpenc0 ,{nKmՋ6kvg~g 4. [EKmՋ~g 5. SDe 6. DU_ l*6@+ 7  0 )  Testing0Validation testing ( gHe'`KmՋ)oN gHe'`S_oNvRT'`Y T(u7bTtg_v7h RoN/f gHev0 `7h{/fTtvggBlf /flQeNKmՋNXT 0 elў{KmՋl0 hQhQ萄vRBl_0RnhQ萄v'`Bl0RNech/fcknxvv^NONO(uvQ[Bl_N0RNSbf~b'`0fy i'`0|Q['`0QꁨRb` YI{ 0 SQsv~gRN'`Nb/gBlNSsNb/gBl NNv0WeN(u7bOSFU 0 oN|ReN Y[nxoN|ReNvT*NR]ZP}Y ]~v v^ g_v~f \O:NNT~b6kvW,gDe0 >>  Testing4System testing (|~KmՋ) Software is only one element of a large computer-based system. oNNN/fWN{:gv|~vN*N~bR0 Software is incorporated with other system elements, and a series of system integration and validation tests are conducted. |~KmՋ/fcboNN|~vvQN }Tv^ v^ۏLN|Rv|~~ňS gHe'`KmՋ0 @},  ?{/R?|(Testing~System testing System tests fall outside the scope of the software process and are not conducted by solely by software engineering. However, steps taken during software design and testing can greatly improve the probability of successful software integration in the larger system. |~KmՋ]~=0RNoN] ztuKNY v^Ng\1uoN_Sbb FO/f(WoNTKmՋ6k@bۏLv]\O\ gRNbR0WboNTv^0Rf'Yv|~KN-N0 A classic system testing problem is  finger-pointing . This occurs when an error is uncovered, and each system element developer blames the other for the problem. xQWv|~KmՋ/f vNc# S_SsNN*NNT T*N|~Rv_SL#+RNvR gku0x L8   #6G2TestingBWhat software engineers do in system testing: design error-handling paths that test all information coming from other elements of the system; [cQYt_ NKmՋN|~vvQNR OegvhQOo` conduct a series of tests that simulate bad data or other potential errors at software interface; ۏLN|RKmՋ !jN(WoNcSYQsv OWvpenc bvQNSv record the results of tests to use as  evidence if finger-pointing does occur. bKmՋ~gU_ Neg YgQsNvc#v`Qe 1\SNcQnx[v9hnc participate in planning and design of system tests to ensure that software is adequately tested.SN|~KmՋRN NOEQR0WKmՋoN|~0v.`"r.    Pb#P#`s=TestingCriteria for Completion of Testing S gS_KmՋEQR^ASRcя100%e MbOKmՋSsvR_0RS%c0 0$%$#$#$t>TestingVerification and Validation Software testing is one element of a broader topic that is often referred to as verification and validation (V&V). Verification refers to the set of activities that ensure that software correctly implements a specific function. Validation refers to a different set of activities that ensure that the software that has been bulit is traceable to customer requirements.lq P f a'u?TestingVerification and Validation Verification:  Are we building the product right? Validation:  Are we building the right product? The definition of V&V encompasses many of the activities that we have referred as software quality assurance (SQA). Although testing plays an extremely important role in V&V, many other activities are also necessary.49 ( ~l v@TestingDebugging ( An ART) Debugging occurs as a consequence of successful testing. That is, when a test case uncovers an error, debugging is the process that results in the removal of the error. Although debugging can and should be an orderly process, it is still very much an art. The external manifestation of an error and the internal cause of the error may have no obvious relationship to one another. The poorly understood mental process that connects a symptom to a cause is debugging.@  wATesting xB MaintenanceAny work done to change a software system after is is in operation is considered to be maintenance. 55% - 80% of software budget is spent on maintenance. Maintenance is more difficult than development for software system, and requires more creative works.*W yC MaintenanceCorrective maintenance wck'`~b Adaptive maintenance ^'`~b Perfective maintenance [U'`~b Preventive maintenance 2'`~b r  Maintenancenq_ToN~bvV } |~v'Y\ |~vt^ ~gvTt'` ^(u{|WTNR^ vQ[ z^ penc^I{  -87 Maintenance<oN~bvek t㉰s g|~ O9es g|~ ͑enx|~  MaintenanceoN~bvek hg(u7bvBlTffN T(u7bT_SۏLFU hg z^Tech nx[ z^vMOnT'`( xvz z^vO9eSL'`TO9eS_wvoR\O(u [9eSRۏLx O9e z^echT z^^04 _  ^ g Maintenance~O9e z^vSR N_c[ z^v(ϑ Oc z^Θ?" dd@,|?" dd@   " @ `"  n?" dd@   @@``@n?" dd@  @@``PR    @ ` ` p>> % n f   (   F J   Jn   s *r?PP  N +    + n2   s *u?+ U  n2   s *x?   n2   s *d{?+T n2   s *D~? n2   s *$?+U n2   s *? n2   s *?+U n2   s *ĉ? n   s *? n2   s *?J%t n2   s *d?% n2   s *D?j%   Nؖgֳgֳ ?P  LUSQdkYkHrh7h_    HЙgֳgֳ ?  8USQdkYkHre,g7h_ ,{N~ ,{ N~ ,{V~ ,{N~    Z1 ?``  Z* 2  ZП1 ?`   \*(2  Z1 ?`   \*(2N  6޽h? ? f33  eNW!jg#   L#D#` "(  F J  Jn  s *|?P  n  s *t|? n2  s *|?+JUt n2  s *|?+U n2  s *E|?+jU n2  s *|?+U n2   s *H|?+UD n2   s *|?+U n2   s *L|?+:Uc n2   s *b|?+U n2   s *|?+[U N + j  + jn2  s *|?+ jU  n2  s *|? j  n2  s *h|?+jT n2  s *H|?j n2  s *(|?+jU n2  s *|?j n2  s *|?+jU n2  s *|?j n2  s *|?+U# N       6  C BC DEF?pp"-<HbutP}@w,riiiigglu{rke\ApbSF=843k"S-:4!4 *&3: {q"h(a(a*^*^*^-\/V3S4S=OCMHMNJQJSHYCY?Q2Q2Q/Q/Q+Q+Q)N)N&HA= <)^X2!n`-J3ro@Z c    C v B8CDExF?#'(,.#pbW UW#`,g3t7k7b7]7U3%.'nEw k^RG>!7#-!*$#(3>GLLw8i(\QF:/&-8?JXi{}u}lgccaaglnnnlllH8*yl ^SE84443 !* 8888:HWcnnnnr   !!$$$/8CPWY^bbbglnr!t#w&w*t,t1r5g1\&PC:!4&+,(1*5+6+:/:8:=<?ACJCJ?N=S=SGNSY[denune^SH;1&&+16:?HJJJJ?O,M7D>;G6U6`?kJvXer|{{* 4>?]Nv^n}}l\N?3$'2;BFKQV_l|zjXDXj|?bufV/FL2e}rbN>-#}#|#xxvj#_#W$M-37CYepw#=@@{  n  C >B?CIDE\Fd?*A:H>H>C:A:>,8%-"   -8*A/0@ Q[   N |gֳgֳ ?p | ZUSQdkYkHrh7h_    HP|gֳgֳ ? p | NUSQdkYkHroRh7h_   Z|1 ?`` | ^* 2  Z|1 ?`  | `*(2   Z|1 ?`  | `*(2N  6޽h? ? f33  0( \  l  C  P   l  C    H  0޽h ? ̙33  @(   l  C  5 P  5 l  C \ 5  5 H  0޽h ? f33  P(   l  C (5 P  5 l  C 5  5 H  0޽h ? f33c      (  l  C d| P  |   # l|1?0 4What  # lS|1?P0  3How  # l1? @  5Do it  # l 1?` @  4Test  # l1?` 3UseB   fD1?pPpB  # lD1?pPPPB   fD1?0 @ B  # lD1?@ @ B   fD1?  B  # lD1? ` B   fD1? @ B  # lD1? H  0޽h ? f33  SK( k'h l  C $Wy P  y   # lOy1?p OSystem engineering   # lYy1?@ :Analysis    # l|y1? `  ATesting  # lx1?p  @Design  # l1?p E Maintenance     # l$31? 0  >CodeB    fD1?@p@B   # lD1?@B    fD1?P PB   # lD1?P B   fD1?` P ` B  # lD1?` P P B   fD1?p 0p B  # lD1?p  B   fD1? ` B  # lD1? p   f51? Z|~[IN  3 r51?@ NRg  3 r$51? p  N  3 r1? 4  Vx  3 rd1? d NKmՋ  3 rT}1?w V~bH  0޽h ? f33  (    l  C Lr P   l  C w   H  0޽h ? f33  (  l  C ay P  y l  C xby  y H  0޽h ? f33  (   l  C Tjy P  y l  C jy  y H  0޽h ? f33   (  l  C Doy P  y l  C py  y H  0޽h ? f33  0(  l  C zy P  y l  C {y  y H  0޽h ? f33^     @  (  ~  s *y P  y    fDy̙?  ? ` \lxNs^S&(2g$    fy?  ?   \|~oN&(2g$    fy?  ?  \/edoN&(2g    fy3f?  ?  L&(2g    fy̙?  ? @0] \lxNs^S&(2g$    fԛy?  ? @0  \|~oN&(2g$     fy?  ?@0  \/edoN&(2g     f4y3f?  ?00  L&(2g $    f|y?  ?0 ,$D 0 Z-NN&(2g     f4y3f?  ?` \^(uoN&(2g$     f`y3f?  ?]@0 \^(uoN&(2g$ H  0޽h ? 3333  P(  l  C  P   l  C    H  0޽h ? f33  `(  l  C y P  y l  C py  y H  0޽h ? f33  p( 0K{@K{ l  C y P  y l  C Hy  y H  0޽h ? f33  (  l  C    H  0޽h ? f33  0(   l  C s P   l  C X   H  0޽h ? f33  ph@(  r  S Q P     # lhT1?p OSystem engineering   # lLY1?@ :Analysis    # l91? `  ATesting  # l܈1?p  @Design  # l`1?p E Maintenance    # lhc1? 0  >CodeB    fD1?@p@B   # lD1?@B    fD1?P PB   # lD1?P B    fD1?` P ` B  # lD1?` P P B   fD1?p 0p B  # lD1?p  B   fD1? ` B  # lD1? p   fj1? Z|~[IN  3 r0H1?@ NRg  3 rq1? p  N  3 rLu1? 4  Vx  3 rdy1? d NKmՋ  3 rx}1?w V~bB  3 r1?] v*  r:_6kvRR SvQz^'`0T6k]\O SvQechv[Y'` /fNy %N  fD1? B ?  fD1? B @  fD1? B A  fD1?PB B  fD1? B C  fD1?PB D  fD1?P E 3 r1?g6 ; : World view  F 3 r!1?   ; Domain view  G 3 r%1?w K < Element view  I 3 r)1?V  = Detailed view J 3 r-1?Wf+ BDomain of interest L 3 r01?'   >System elementB M # lD1? B N # lD1?  B O  fD1?@@PB P  fD1?@ @ PB Q  fD1?ppPB R  fD1?PB S  fD1?PB T  fD1?PPPB U  fD1?PB V  fD1?PPPB W  fD1?PB X  fD1?PB Y  fD1?PB Z  fD1? PB [  fD1? PB \  fD1? PB ]  fD1?PB ^  fD1?PB _  fD1?00PB `  fD1?@@PB a  fD1?``PH  0޽h ? f33   (  l  C < P   l  C d=   H  0޽h ? f33  0 ( ||  l   C \E P   l   C F   H   0޽h ? f33  @(  l  C K P   l  C K   H  0޽h ? f33  P(  l  C P P   l  C xQ   H  0޽h ? f33  `( ~@ l  C Pg P   l  C  h   H  0޽h ? f33  p(   l  C v P   l  C Hw   H  0޽h ? f33  (  l  C ~ P   l  C l   H  0޽h ? f33  $(  $l $ C  P   l $ C X   H $ 0޽h ? f33J*  ))AH()(  (l ( C ̒ P    ( # l(1?  KThe enterprise  B (  fD1? B (  fD1? B (  fD1? B  (  fD1?   ( # l1?p  LA business area    (  f1?P  (  f1? B (  fD1?p B (  fD1?PB (  fD1? B (  fD1?B (  fD1?B (  fD1?B (  fD1? B (  fD1?0 0 B (  fD1? B (  fD1?@@B (  fD1?P P B (  fD1?00B (  fD1?` ` B (@  fD1?` B (  fD1?` @ (  f1? p@  ( # lİ1?   OInformation system   (  f1? 0 B !(  fD1?@ @ B "(  fD1?@ p@@ B #(  fD1?@ 0 @ B $(  fD1?@   B %(  fD1?@ `` B &(  fD1?@  B '(  fD1?@ B ((  fD1?@ B )(  fD1?@ @ @ B *(  fD1?@  B +(  fD1?@ 00 B ,(  fD1?@  B -(@  fD1? @ B .(@  fD1? @ B /(@  fD1?@  0(  f1? p 1(  f1?  2(  f1?   3(  f1? 0 @  4(  f1? p  5(  f1?  6(  f1?  7(  f1?0 @  8(  f1?p  9(  f1?p B :(@  fD1? p B ;(  fD1?   =( 3 rL31?(. = Business areaB >( # lD1?@`  @( 3 rx1?Zz  W Processing requirement$B A( # lD1?@@  B( 3 r1?   ]-Business system design (element view).. D( 3 r1?F Y) Business area analysis (domain view)** E( 3 r1?  a1 Information strategy planning (world view)22  F( 3 rL1?h 6V h8 Construction & integration (detailed view)99 G(  f1?   H( 3 r1?Xv ASoftware engineerH ( 0޽h ? f33  (  l  C  P   l  C <   H  0޽h ? f33:+  **AJ,z*(  ,l , C  P    , # l1?   GThe complete product B ,  fD1?@  @B ,  fD1?@ B ,  fD1?@ppB  ,  fD1?@@ @   , # l@1?    ; Hardware     , # ll1? @p  ; Software     ,  f1? `  B ,  fD1?p pB ,  fD1?p@p pB ,  fD1?p` pB ,  fD1?0 0 B ,@  fD1?p0 B ,  fD1?0 B ,  fD1?ppp B ,  fD1?p B ,  fD1?p00 B ,  fD1?p B ,  fD1?p B ,  fD1?p B ,  fD1?p B ,  fD1?p B ,  fD1?p  , # l1?P   7Data   , # l1?P @  ; Function    !, # lP1?P `  ; Behavior   B %,  fD1?p p B &,  fD1?p @p B ',  fD1?p ` p B (,  fD1?p `` B ),  fD1?p  B *,  fD1?p  B +,  fD1?p  B ,,  fD1?p `` B -,  fD1?p  B .,  fD1?p B /,  fD1?p B 0,  fD1?p p p B 1,@  fD1?  P B 2,@  fD1?  P B 3,@  fD1? ` P  4,  f1?  @ 5,  f1?  @ 6,  f1?  @ 7,  f1? @ 8,  f1?  9,  f1?  :,  f1?  ;,  f1? B <,@  fD1?  B =,  fD1?   >, 3 r1?(Fj < Capabilities B ?, # lD1?P0  @, 3 r(1?VN  GProcessing requirementsB A, # lD1?0 `  B, 3 r81? d  AProgram componentB C,@ # lD1?0    E, 3 rl1?h F V g7 Construction & integration (detailed view)88 F, 3 r1?  X(Requirements engineering (world view))) G, 3 r 1?I  W' Component engineering (domain view)(( H,  f1? 0 I, 3 r%1? 2 ASoftware engineer J, 3 r`)1?H V   a1Analysis & design modeling (element view)22H , 0޽h ? f33  D(  Dl D C / P   l D C ,"   H D 0޽h ? f33  (  l  C p5 P   l  C ,6   H  0޽h ? f33  0(  0l 0 C G P   l 0 C G   H 0 0޽h ? f33  4( @ 4l 4 C _ P   l 4 C X`   H 4 0޽h ? f33   ( Lx\x  l   C e P   l   C xf   H   0޽h ? f33   85(  8l 8 C j P    8 # l`l1?  IUser interface processing 8 # l>1?  CInput processing  8 # lxs1?   fOutput processing  8 # l M1?@  MProcess and control functions 8 # lg1?@   KMaintenance and self-test  8 3 r[1? v )System model templateH 8 0޽h ? f33  0<( $A4 <l < C  P   l < C d   H < 0޽h ? f33  @@(  @l @ C @ P   l @ C    H @ 0޽h ? f33  PH(   Hl H C  P   l H C L   H H 0޽h ? f33  E=`L(  Ll L C P P   l L C     2 L  f1?p@  LSystem engineering2 L # l1? @P ASoftware design2  L  f41? `  PSoftware requirements analysisH L 0޽h ? f33  p\(  \l \ C  P   l \ C    H \ 0޽h ? f33  P( d Pl P C   P   l P C    H P 0޽h ? f33  T(  Tl T C  P   l T C    H T 0޽h ? f33  X( L|$L| Xl X C \ P   l X C    H X 0޽h ? f33  `(  `l ` C  P   l ` C p   H ` 0޽h ? f33  |(  |l | C  P   l | C t   H | 0޽h ? f33  $(  r  S  P   r  S ,   H  0޽h ? f33  $(  r  S  P   r  S    H  0޽h ? f33  d(  dl d C  P   l d C X   H d 0޽h ? f33   h(  |  hl h C  P   l h C h   H h 0޽h ? f33   l( T|d| ll l C T P   l l C    H l 0޽h ? f33   p(  pl p C <& P   l p C &   H p 0޽h ? f33  0 ( lQ dQlQ l  C / P   l  C /   H  0޽h ? f33  @ ( Xk~hk~ l  C 8 P   l  C X9   H  0޽h ? f33A     P  (  l  C << P   2   f1? 02  # l51?p0P0 : 2   # l 1?p P 0  AData dictionary   3 r1?P  Q! Entity relationship diagram""   3 rL1?h  AData flow diagram  3 rx1?x  MState-transition diagramB   fD1?p p pB @  fD1?p p B   fD1?p   3 rP1?YVn ]#The structure of the analysis model$#  C x["8T1?@pW  JData objective description  3 rlX1?`p G EControl specification  C x A[1?   EProcess specificationH  0޽h ? f33  ` (  l  C La P   l  C b   H  0޽h ? f33  p (  l  C f P   l  C g   H  0޽h ? f33   (  l  C l P   l  C l   H  0޽h ? f33   (  l  C w P   l  C 8x   H  0޽h ? f33   ( ~~ l  C d P   l  C     H  0޽h ? f33    ( ~~  l   C t P   l   C 0   H   0޽h ? f33    ,(  r  S ԟ P     # ll1?`P  F manufacturer    # lX1?  3carB  # l41?  8buildsB @  fD1? ` B   fD1?  B   fD1?0 B    fD1?0 B    fD1?  0 B    fD1?  B    fD1? 0    3 rԉ1?  ! A simple ERD H  0޽h ? f33   (  l  C  P   l  C    H  0޽h ? f33$     d (  r  S p P   r  S ,   2  # l1?` p k)Software System (information transformer)&*B  # lD1? p B  # lD1? @B  # lD1? P B  # lD1?` p` B   # lD1?p P0B   # lD1? @    3 r1?J Dj  input1   3 r$1?   input2   3 rP1?V 4inputn  3 r,1?v4 5outputn  3 r1?   output2  3 r1?J v4j  output1  3 r1? ` 3. . .  3 r1? D 3. . .H  0޽h ? f33  ph  (  l  C  P   l  C       f1?`2   f1? @ B   `D>?  B    fDԔ?pppB    fDԔ?0p0H  0޽h ? f334   t( ? r  S  P   r  S    2  # l1?P   ZuXT vƉ |~    # l1?  NuXT  # l1?pP  NbX  # l1?   NbXB   `DjJ?@ p@B    `DjJ? p   3 r01? J 6uXTuS   3 r01?m 6W,g!jWB   # lD1?  B   # lD1?B  # lD1?  B  # lD1?p  B  # lD1? @B  # lD1? p@  3 r01?  Zu`OS  3 r1?j NbJT  3 r1? VJ  RfJTOS  3 r#1? z  RuSpenc  3 r'1?   V BlcQbJTH  0޽h ? f33  JB (  r  S / P   2  # l/1?  T ,g0W vƉ2  # l041?0 0  T -N.Y vƉ2  # l 81? 0 0  T bJT Nu2  # ll;1?   T fe uS  # lh?1?  NbX  # l`@1?  NbX   # lA1?` NuXTB   # lD1?0B   # lD1? ` B  @ # lD1?0 ` B   # lD1?   B  # lD1? 0 P B  # lD1?0 @ B   `DjJ? B   `DjJ?` `B   `DjJ?p pB   `DjJ? B @ # lD1?  B  # lD1?P @B @ # lD1? 0  3 r31?= Z] 6uXTuS  3 rP1?- ZM <uXTvu`LuP  3 rhS1?&   RfJTOS  3 rW1?  RuXTpenc  3 rZ1?   RBlbJT  3 rL^1?. j(  ^~ǏtetTvuXTpenc    3 ra1?~ x Ru`OSH  0޽h ? f33   (  r  S Xf P   2  # lxg1?pp ZR u`OS2  # ll1?0 @@ ZtetuXT penc2  # l$p1?pP P @  hhg/f &TQ LuP   2  # lu1? @@p ZNufJT OSB   `DjJ?@B   `DjJ?`@`B   # lD1?pp0B   # lD1?@ R   C xG-H6 I-1?Hp pR  @ S ~ZGH0I1?P B  @ # lD1?` P B @ # lD1?  ` B @ # lD1? `B  # lD1?  B  # lD1?pP  # l}1? @ p PeB  # lD1? @ @   3 r1?>* l"tetTvuXT penc  3 r1? 6 * Rege  3 r1?: V uXTu`LuP  3 r1?  NSO)n  3 rD1?:  N@S  3 r1?v *  N d  3 rܕ1?~6*x RuXTpenc  3 r(1?~ x RfJTOSH  0޽h ?/@   f33  0  (  ;R  l   C X P   l   C    H   0޽h ? f33  80@ &0$(  R  $l $ C ̣ P    $ # l1?  BReading commands $ # l1?0  BReloading paper $ # lD1?  ? Making copies $ # l@1?P P ` DDiagnosing problemB $  `D1?  B  $  fD1?@P @B  $  fD1?P  @B  $@  `D1?P P $ 3 rĴ1?x   U% Not jammed Invoke read-op-input&&B $  fD1?P P  $ 3 r81?| W' Full Invoke read-op-input((B $  fD1?PB $  fD1?PB $  fD1?@B $@  `D1?@ @ $ 3 r<1?  $  T$ Empty Invoke reload paper%%B $  fD1?P  P B $@  fD1? B $  `D1?B $  fD1?B  $  `D1?  !$ 3 r1?( 4 U% Copies done Invoke read-op-input&&B "$  fD1?` ` #$ 3 r1?x  [+ Full and start Invoke manage-copying,,B %$  fD1?P P &$ 3 r 1?0 `  d4 Jammed Invoke perform problem-diagnosis55B '$@  fD1?p` pB ($  fD1? ``pB )$  `D1? ``` B *$  fD1? B +$  fD1?B ,$@  fD1? B -$  `D1?  .$ 3 r1?` X W' Idle Invoke read-op-input((B /$  fD1? p B 0$  fD1? P 0 H $ 0޽h ? f33  P ((  (l ( C  P   l ( C    H ( 0޽h ? f33  ` t(  tl t C  P   l t C    H t 0޽h ? f33  p ,(  ,l , C   P   l , C l    H , 0޽h ? f33   0( $=R 0l 0 C  P   l 0 C 4   H 0 0޽h ? f33   x(  xl x C 8 P   l x C    H x 0޽h ? f33   4(   4l 4 C & P   l 4 C L'   H 4 0޽h ? f33  rj  8(  8l 8 C 1 P   R 8 # lX41? ` : B 8  fD1? p B 8  fD1?@  @ B 8  fD1?` @` B  8  fD1?P P P  8 3 r$91?   Data design  8 3 r<1?   (Architectural design  8 3 r\ 1?   $Interface design 8 3 r1?Y I   GComponent- level design 8 3 r1?x $The design modelH 8 0޽h ? f33   @( !' @l @ C  P   l @ C H   H @ 0޽h ? f33   D( // Dl D C C P   l D C 8D   H D 0޽h ? f33   H(  Hl H C T P   l H C `U   H H 0޽h ? f33   L( $A, Ll L C  \ P   l L C \   H L 0޽h ? f33   P( x   Pl P C k P   l P C Xl   H P 0޽h ? f33   T(  Tl T C { P   l T C x|   H T 0޽h ? f33   X$( OODOO Xr X S y P   r X S dz   H X 0޽h ? f33  0 x$( Tu0  xr x S  P   r x S ̎   H x 0޽h ? f33   / ' @ t (   tr t S  P   B t # lD1?B t # lD1?  t  B CDEFo?Lh@H @  P@  t  B CxDEFo?0T(xpxh0 ` @  @0( t  B CDEFo?t0 0@     t 3 r<1?ys KTotal software cost  t 3 r1? ICost to integrate  t 3 r1?    Cost/module  t 3 r1? I  %Number of modules  t 3 r1? 4:  "Cost or effortB t  `D1? B t  `D1? @@ t 3 r1?` L *Region of minimum cost t 3 r\1? & E :  M t # l1?@p H t 0޽h ? f33  P (  l  C ij P   l  C    H  0޽h ? f33  ` ( \@~@ l  C  P   l  C    H  0޽h ? f33  p (  l  C  P   l  C X   H  0޽h ? f33!  Z!R! 7: (  l  C ( P      f1? 0    f1?``   f1?` 0    f1?`p    f1?` `     f1?` 0     f1?` `     f1?` 0     f1?` 0     f1?0 P    f1?0 `P    f1?   f1?0 P P    f1?P    f1?0 P    f1?0 PP    f1?0 @P    f1?0 P    f1?0  3 r1?  5WidthB   fD1? B   fD1? B @  `D1?P PB   `D1?P PB @  fD1?P B @  fD1?  3 r 1?i c  J Depth(B    `D1? B !  `D1?` B "  fD1?@ @ `B #  fD1?@ @ ` B $@  fD1?0@ `B %  fD1?@ P` ' 3 rx1? E AFan-outB (@  fD1?0` B )  fD1?0P` B *@  fD1?  0 B +  fD1? 0 B ,  fD1?P B -@  fD1?P B .  fD1? P0 B /  fD1?P B 0@  fD1?P pB 1@  fD1?P p0B 2  fD1?P `pB 3  fD1?P p 4 3 r1?  @Fan-inB 5@  fD1?pP` B 6  fD1?Pp` B 7@  fD1? @0 B 8@  fD1? `@0 B 9  fD1? @00 B :  fD1? @0 H  0޽h ? f33   ( L>L> l  C  P   l  C d   H  0޽h ? f33   ( 3 l  C  P   l  C    H  0޽h ? f33   ( 3 l  C  P   l  C    H  0޽h ? f33   ( @ l  C   P   l  C     H  0޽h ? f33   (   l  C ( P   l  C    H  0޽h ? f33   (   l  C  P   l  C    H  0޽h ? f33   ( [[ l  C < P   l  C X   H  0޽h ? f33   ( f l  C 4 P   l  C h5   H  0޽h ? f33   (  l  C 4> P   l  C 0H   H  0޽h ? f33   (   l  C xL P   l  C 4M   H  0޽h ? f33   (  l  C 0V P   l  C V   H  0޽h ? f33  0 (  l  C b P   l  C dc   H  0޽h ? f33  @ (  l  C k P   l  C Tl   H  0޽h ? f33  P (  l  C } P   l  C |~   H  0޽h ? f33  ` (  l  C Ă P   l  C    H  0޽h ? f33  p (  l  C ̟ P   l  C r   H  0޽h ? f33   (   l  C , P   l  C    H  0޽h ? f33   (  l  C l P   l  C \   H  0޽h ? f33   (  l  C  P   l  C    H  0޽h ? f33   ( Bf l  C  P   l  C    H  0޽h ? f33   ( @ l  C  P   l  C    H  0޽h ? f33   (  l  C  P   l  C    H  0޽h ? f33   (  l  C L P   l  C    H  0޽h ? f33H   ( }@\@ l  C  P   B   `D1?ppB   `D1?pp2   `1? ` ` 2   fH1?@`  : 2   `1? @ P 6    BBCmDEFo?pp,Siz{d [ NMNMRXRfYoayp}zYBB]How+++!M{VWcfmim+b@RB/X cny L+hFVbPf+ 2LWemutxycMB2+ xB-5,5,qSgY,dd51.@B@@MP@                                      ^ $   3 r1?` b   Information (Oo`)$  P   3 r1?` TExternal representation (Yh:y)+$%T   3 r41?   PInternal representation (Qh:y)$)#  3 rz1?b rTime(e)$ 8  3 r1?  4Incoming flow (eQAm)$4  3 r,1?i 0Outgoing flow (QAm)$:  3 r1?0 0a  2Transform flow (Sbc-N_)( B @ # lD1? ` @B @ # lD1?@@B  # lD1?`  H  0޽h ? f33   (  l  C  P   l  C `   H  0޽h ? f33   #,Y(  l  C  P   2  # lL1?  1T2   f1?@  2   f1?@ P2   f1?@@ 2   f1?@p 2    f1? @ 2    f1? @ P 2    f1? 002    f1?P @ B   # lD1? @ B  # lD1? @ B  # lD1? p B  # lD1? p B  # lD1?@ B  # lD1? ` @ B  # lD1?  B @ # lD1?P@ B @ # lD1? 0 B  # lD1?` @ B  # lD1?@ @ B  # lD1?0 B   fD1?p P B   `D1?  B   `D1? p  B  # lD1? B   `D1?B   `D1?@ B  # lD1?00P !  f1?  Transaction (NR)$   %  f1?p  '  f1? p F ) 3 r1?P0  BTransaction center (NR-N_)$"0 * 3 r1?  Y  ,Action paths (;mR)$ H  0޽h ? f33   ( DMw0k l  C # P   l  C L$   H  0޽h ? f33  `( !{ l  C Ⱦ5 P  5 l  C 5  5 H  0޽h ? f33     0 3A8 ( ;P l  C ( P   2   f1?02   f1?p 2   f1? `2   f1?02   f1?` 2    f1?p 2    f1? p 2    f1?@`2    f1?P0 2    f1?p2   f1?P B  # lD1? 0 B  # lD1?B  # lD1?0B  # lD1? B  # lD1?@` @B  # lD1?0 p 0B  # lD1? B  # lD1? B  # lD1?@PpB  # lD1?B  # lD1?`B  # lD1?` B  # lD1?p B  # lD1?0B  # lD1?p@B @  fD1?P B  @  `D1?P B !@  `D1?P B "@  `D1?` B #@  fD1?` ` B $  fD1?@`B %  `D1?@B &@  `D1?` B '  fD1?` ` 2 +  f1?  2 -  f1? @ r 2 .  f1?   / # l(<1? P  2Cm 0  f51?  LCt 1 # l\I1?  2Ca 2 # lL1?@ LCe 3  BC DEF1?80`X @   B 5  fD1? ` B 8 # lD1? B 9 # lD1?P B : # lD1? `` ;  BC DEF1?h(`0P @   h <  BHC DEF1?0HxP @   0xH  0޽h ? f33  @  (   l   C  P   l   C    H   0޽h ? f33h  P !3(   l  C U P   2  # l ]1?p`  1B2  # l_1? @  1C2  # lb1?@ 1D2  # lf1?0p 1AB  # lD1?pB   # lD1?0pB   # lD1?P@@B   # lD1?p 0 B   # lD1?@ 0B   # lD1?@ B @  fD1? B @  `D1? P B @  fD1?P  P   # lZ1? 0 2Cm  # lDs1?P 2Ca  # lhv1?  p  1B  # ly1? 0 pp  1C  # l}1?PP 1A  # ll1?   1DB @ # lD1?0 PB   fD1?0``PB   fD1?0B  @ # lD1?  B ! # lD1? B " # lD1?p P P B # # lD1? B $ # lD1?p  -  B CHDEF1?`H  @  PP 0  B( CHDE(F1?  `H x (  @   ` & 1  B0C DE4F1? |( 8p0(Hph8P @      3  BxCDE(F1? THHxpXh @   @ H  0޽h ? f33  ` ( ~@K@ l  C  P   l  C t   H  0޽h ? f33  p (  l  C  P   l  C x   H  0޽h ? f33   (  l  C P P   l  C     H  0޽h ? f330  00 H^!0(  l  C  P   2   f1?@`2  # l1? `0  1D2   f1? @2   f1?0 P 2   f1? 00 2    f1? Pp 2   # l$1?0P p P 1G2   # l1?p  1F2  # l81? @ 1EB  # lD1?P@B  # lD1?` B  # lD1?@0 B @ # lD1? p B @  fD1?0 p B @  `D1?P  B @  fD1? B  # lD1? p@ B  # lD1?0 P B  # lD1?pB  # lD1? P B  # lD1?p ` B   fD1?ppB   `D1?p B   fD1?  B @  fD1? @      BCDEF1?hxx0@    B !  fD1?   # # l 1?  @ N;`c $  f1?`  % # lx1? @  1E &  f1?  ' # lȲ1?` N^ ( # l 1? p  1D ) # l1? P 1G * # l|1?   5A-CTL + # lh1?   5B-CTL , # lL1?  5C-CTL - # l 1? P  1FB .@ # lD1?@ `B / # lD1?@`B 0 # lD1? B 1@ # lD1?0B 2 # lD1?B 3 # lD1?B 4@ # lD1?  B 5 # lD1?  B 6 # lD1? 0 B 7 # lD1? 00 B 8  `D1?@ B 9@  `D1?  B :  `D1?   B ;  `D1?   B <  `D1? `B =  `D1?``B >  `D1?p `B ?@  `D1?p 0p B @  `D1?P 0p B A  `D1?@P B B@  `D1?@ @B C  `D1?P  p B E  `D1?0   G  BCDEF1?0pp@   ` L H  $BCDELF$1?`` h HXx0H08@        ` I 3 r1?&  6c6e J 3 r1? * <C K 3 r1?V <B L 3 r1?z  <A P Z1? B T  fD1?  B U  fD1?  H  0޽h ? f33   ( LAL: l  C   P   l  C    H  0޽h ? f33   (  l  C  P   l  C    H  0޽h ? f33   ( xy X l  C  P   l  C x   H  0޽h ? f33   (  l  C l P   l  C (   H  0޽h ? f33   ( |yA l  C x  P   l  C 4    H  0޽h ? f33   (  l  C < P   l  C    H  0޽h ? f33  (  l  C L0 P   l  C 1   H  0޽h ? f33  x( 1 xl x C |@ P   l x C 8A   H x 0޽h ? f33   (   l  C L P   l  C &   H  0޽h ? f33  0(   l  C G P   l  C |N   H  0޽h ? f33  @(  l  C [ P   l  C c   H  0޽h ? f33|%  ,%$%P6I$(  l  C 2 P   B  # lD1?@ @    # lP1? `  4S1   # lM1?@p` 4C4   # l^1?@ ` `  4C5   # lpW1? `  4C3  # lr1?` `  4C2  # lPv1? `  4C1B @  fD1?  B   fD1? `    # ly1?   4S2  # lc1?   4S3  # l~1?P  4S4  # l01? p 4S5B @  fD1?p` pB  # lD1?p`` B  # lD1?`` B  # lD1?  B  # lD1?  B  # lD1?@ @ `B  # lD1?@ @ B  # lD1? @ @ @ B  # lD1? @ @ B    fD1? B !  fD1?B "  fD1? B # # lD1?@ @ B $  fD1?p p PB %  fD1?Pp PB &  fD1? PB '  fD1?  B ( # lD1? @B *  fD1?@B +  fD1?0 @@B ,@ # lD1?0 @ @0 B -  fD1?`PB .  fD1?P0PB /  fD1?00PB 0@ # lD1?@ 0B 1  fD1?` B 2 # lD1?B 3  fD1?p` pB 4 # lD1?p @ 3 rD1? ~  1N A 3 rt1?  1Y B 3 r1? F. 1N C 3 rP1?ic 1Y D 3 r1?   1N E 3 r,1? n  1N F 3 r(1?&   1N G 3 r1?  1Y H 3 rȧ1?)F . # 1Y I 3 r̥1?F .  1YH  0޽h ? f33  `( A0@` l  C  P   l  C P   H  0޽h ? f33  p( .1  l  C  P   l  C t   H  0޽h ? f33%  %%.N%(  l  C  P     # l̻1?p ^ ,{N*NNR  # l$1?p0 V ,{N*NNR  # lT1?0pP ^ ,{ N*NNR  # l1?P  : B    fD1?P B    fD1? B    fD1?PB  @  fD1?   3 r1?  NagN  3 r1?)vC# 1F  3 r`1?) l # 1T  3 r1?I  `ELSE R  3 r\1?v  `THEN R  # l1?  : B   fD1? B   fD1? B   fD1?``B    fD1?B "  fD1?PPB #  fD1? B $@  fD1?@ & 3 rL1?4 ^ CASEagN ' 3 r1? : 4  fD1? B ?  fD1? B @  fD1?  B 3 r1?   R_sagN" C 3 r1?i &i# $Do - While R$   F 3 r1?y 3  ~"Do - Until R$  G 3 r<$1? z  R_sagN J 3 r,(1?93 ^ (uP[ z^A K 3 r,,1?.:( N_s L 3 r01?NfH Nz^ M 3 r31?F  nIF-THEN-ELSER/e  N 3 r21?D ^ CASER/eH  0޽h ? f33v  &%)(  l  C  d P  d   # ld1?  (B   fD1?B   fD1?B   fD1?B   fD1?00B    fD1?0@@B    fD1?P@PB    fD1? PB    fD1?P B    fD1?  B   fD1?P B   fD1?p pB   fD1?  B   fD1?  B   fD1? B   fD1?p B   fD1?p  B   fD1?@0B   fD1?0 P  3 r`@1?   2C1  3 rC1? V  2C4  3 rC 1Y % 3 rk1?inc 1Y ( 3 r]1?  2C2 ) 3 rr1?9& U 3 2C3H  0޽h ? f33  !0( { l  C d P  d l  C ,d  d   # ld1?@ 4P1  # l4d1? @  4P2B   fD1?@@ B   fD1? B   fD1?@ @B    fD1?     # ld1? P  4P2   # ld1? P  4P1B  @  fD1?@ 0 B    fD1?0 B   fD1?``0 B   fD1?`  # l1? 0  NPn  # l41?  4P2  # l1? 4P1B   fD1? ` B   fD1?0 0 B @  fD1?pB   fD1?p0 B @  fD1?0  B   fD1?    3 r 1?   O. . .  % 3 r 1?!  X= * 3 r1?YfS 2L1 + 3 r1?f  2L2 , 3 r1? f  LLn - 3 r1?  C . 3 rH!1?   2z^ / 3 r$%1?   2 b 0 3 r(1?z E  DCASEW bH  0޽h ? f33   9 1  (  l  C d P  d   # ld1?` @ :WHILE C    # ld1?@ `   :UNTIL C  B   fD1?``0 B   fD1?P `` B   fD1?@B    fD1?@  B    fD1? B    fD1?     # ld1?  @ 3P   # ltd1?p   3P2   f1? 0 B   fDjJ?  B   fDjJ?    3 rd1?  2_s  3 rld1?   6ShS  3 rd1?] fZ}  2[IN  3 rd1?  3defH  0޽h ? f33-  "7m(  l  C pd P  d   # lȔd1?  4P1  # lXd1? `  4P3  # ld1? 4P2  # l<1?  <P5  # ld1?@ ``  4P4B    fD1?   B    fD1?@  @ B    fD1?@B  @  fD1? 0 B    fD1? 0@   # ld1?  @  4P2  # ld1?00 pP 4P6  # ld1?@0 p` 5P10  # lp1? 00  4P8  # l,d1? 0 `  :UNTIL C3  B   fD1?0 0 B   fD1? 0 B   fD1? 0 B   fD1? 0  B   fD1? 0    # ld1?   4P7  # lhd1?   :UNTIL C2    # lԽd1? 0  4P9B   fD1?0 0 B   fD1? ` B    fD1? 00 B !  fD1?  ( 3 rTd1? F I  3def * 3 r`d1?   CB +@  fD1? pP B ,  fD1?P p  - 3 rd1? V  C1H  0޽h ? f33R   6(  l  C jd P  d   # lkd1?0  ; WHILE C1    # ldod1?  ; UNTIL C4    # l1?   4S5  # l1?   4S3  # l 1?@@` 4S1   # l\pd1?`  4S2   # lrd1? @  4S4B   fD1?pp0 B   fD1?B   fD1?` B   fD1? B   fD1?`  ` B   fD1? B   fD1? B   fD1? B   fD1?@B   fD1?@@@ B   fD1?@B  @  fD1?@B !  fD1?p ` B "  fD1?p B #  fD1?@ B $  fD1?@ B %@  fD1?@B &  fD1?@B '  fD1? B ,  fD1?PP 4 3 r}d1?*:J  C2 5 3 r81?j :  C3 6 3 rd1?f C5H  0޽h ? f33  (  l  C Zd P  d l  C \[d  d H  0޽h ? f33  p(  l  C Md P  d l  C >d  d H  0޽h ? f33  `(   l  C (d P  d l  C Cd  d H  0޽h ? f33  Px(  xl x C t1)&&(B==0 ( CC  # lՁ1?` P  ^(A==2)||(X>1 ( CCB   `D1? `` B    `D1?p ``` B    `D1?``   # l 1?    ; X = X / A     # l 1?`    ; X = X + 1  B    fD1? @@ B @  `D1? `@ B   fD1? @@@B @  `D1?@`@@B   `D1?  B   `D1?    3 r1?v 5 s  3 rh1?J v ?j  a  3 r1? z  b  3 rd1?Zv Jz d  3 r01?*&J  c  3 r$1?* VJ  eH  0޽h ? f33,  l( 3 r  S H P   r  S      # l1?pP  XeQS  # l1?pP PԏV  # l %1? P p  ^(A>1)&&(B==0 ( CC  # lr1?` P  ^(A==2)||(X>1 ( CCB   `D1? `` B    `D1?p ``` B    `D1?``   # lw1?    ; X = X / A     # l({1?`    ; X = X + 1  B    fD1? @@ B @  `D1? `@ B   fD1? @@@B @  `D1?@`@@B   `D1?  B   `D1?    3 r1? e  s  3 rt1?J j  a  3 rh1?   b  3 rx1?Z&z  c  3 r܍1?Z &z  e  3 r1?v J dH  0޽h ? f33,  l(  r  S   P   r  S Ț     # l1?pP  XeQS  # ltf1?pP PԏV  # lt1? P p  ^(A>1)&&(B==0 ( CC  # l1?` P  ^(A==2)||(X>1 ( CCB   `D1? `` B    `D1?p ``` B    `D1?``   # lܵ1?    ; X = X / A     # l칅1?`    ; X = X + 1  B    fD1? @@ B @  `D1? `@ B   fD1? @@@B @  `D1?@`@@B   `D1?  B   `D1?    3 r1?v 5  s  3 r,…1?J v ?j  a  3 r@Ņ1? v J  b  3 rDȅ1?  c  3 rp˅1?Z &z  e  3 r΅1?v J dH  0޽h ? f33,  l(  r  S ۅ P   r  S ܅     # ldޅ1?pP  XeQS  # ldS1?pP PԏV  # l(1? P p  ^(A>1)&&(B==0 ( CC  # lh1?` P  ^(A==2)||(X>1 ( CCB   `D1? `` B    `D1?p ``` B    `D1?``   # l1?    ; X = X / A     # l`1?`    ; X = X + 1  B    fD1? @@ B @  `D1? `@ B   fD1? @@@B @  `D1?@`@@B   `D1?  B   `D1?    3 r1?v 5 s  3 r|1?J v ?j  a  3 r|1? v J  b  3 r|1?Zz  c  3 r, |1?Z &z  e  3 r|1?v J dH  0޽h ? f33,   l(  r  S  | P  | r  S V  |   # l^1?pP  XeQS  # lhb1?pP PԏV  # l!|1? P p  ^(A>1)&&(B==0 ( CC  # l$$|1?` P  ^(A==2)||(X>1 ( CCB   `D1? `` B    `D1?p ``` B    `D1?``   # l)|1?    ; X = X / A     # l|U1?`    ; X = X + 1  B    fD1? @@ B @  `D1? `@ B   fD1? @@@B @  `D1?@`@@B   `D1?  B   `D1?    3 r1|1?v 5 s  3 r4|1?J v ?j  a  3 r7|1?&  c  3 r<;|1? z  b  3 r>|1?v J d  3 rA|1?Z &z  eH  0޽h ? f33,  0l(  r  S 0m| P  | r  S m|  |   # l%1?pP  XeQS  # l&1?pP PԏV  # l`-1? P p  ^(A>1)&&(B==0 ( CC  # l=1?` P  ^(A==2)||(X>1 ( CCB   `D1? `` B    `D1?p ``` B    `D1?``   # lLZ1?    ; X = X / A     # l>1?`    ; X = X + 1  B    fD1? @@ B @  `D1? `@ B   fD1? @@@B @  `D1?@`@@B   `D1?  B   `D1?    3 rp|1?v 5 s  3 r@t|1?J F j  a  3 rw|1? v J  b  3 rz|1?Zf/z  c  3 r}|1?* J  e  3 r8}|1? z dH  0޽h ? f33  @( @ l  C D| P  | l  C ԓ|  | H  0޽h ? f33  P(  l  C \| P  | l  C |  | H  0޽h ? f33  p(  l  C | P  | l  C @|  | H  0޽h ? f33  ( hTxT l  C y P  y l  C y  y H  0޽h ? f33  ( *P8S l  C (y P  y l  C (y  y H  0޽h ? f33  ( \@d@ l  C (y P  y l  C 4y  y H  0޽h ? f33  (  l  C     H  0޽h ? f33  $( 5% r  S D P   r  S 0E   H  0޽h ? f33   $(   r   S xI P   r   S 4J   H   0޽h ? f33a    (   r   S th P      # li1?`  8Driver   # l\m1?p  EModule to be tested   # ln1?P ` 6Stub   # lc1?P  6Stub,   3 re1?&   ZInterface local data structures Boundary conditions Independent paths Error handling paths[[B    fD1?B  @  fD1?B    `D1?    f1?0     f1? p    f1?     f1?P @@0    f1?    # l1? < Test cases     3 r|1?vU MUnit test environmentB    fD1? 0 B  @  fD1?B  @  fD1?p @P B    fD1?p P B    `D1?0   3 r1?iv c 7RESULTSH   0޽h ? f33  $(  r  S X P   r  S |t   H  0޽h ? f33  $( + r  S  P   r  S `   H  0޽h ? f33  8$(  8r 8 S X P   r 8 S    H 8 0޽h ? f33  4$( t\ttt 4r 4 S  P   r 4 S l   H 4 0޽h ? f33  0$( hylypyty 0r 0 S  P   r 0 S Ȍ   H 0 0޽h ? f33   d$(  dr d S P P   r d S    H d 0޽h ? f33  0`$(  `r ` S  P   r ` S d   H ` 0޽h ? f33  @\$( (hd \r \ S  P   r \ S h   H \ 0޽h ? f33  P(  l  C  P   l  C |   H  0޽h ? f33  `h(   hl h C  P   l h C |   H h 0޽h ? f33  pX$(  Xr X S   P   r X S     H X 0޽h ? f33  (   l  C  P   l  C    H  0޽h ? f33  T$(  Tr T S ( P   r T S )   H T 0޽h ? f33  ( HzXz l  C 0 P   l  C x1   H  0޽h ? f33  x$(  xr x S P@ P   r x S  A   H x 0޽h ? f33  t$(  tr t S TE P   r t S F   H t 0޽h ? f33  p$(  pr p S L P   r p S |M   H p 0޽h ? f33  (  l  C S P   l  C m   H  0޽h ? f33  l$(  lr l S  P   r l S    H l 0޽h ? f33  (  SS$  l  C   P   l  C ȇ   H  0޽h ? f33  ( _d._;tw0 l  C  P   l  C    H  0޽h ? f33   (  l  C t P   l  C 0   H  0޽h ? f33  0(  l  C  P   l  C D   H  0޽h ? f33_     @2<(  l  C  P     # l1? < Test cases    # l1?p 9ResultsB   fD1?pB   fD1?0B    fD1?00 B  @  fD1? 0 B    fD1?p0 B    fD1?PPPB    fD1?PPPB   fD1?PB @  fD1?0B   fD1?0B   fD1?PPPB @  fD1?PpPPB   fD1?PppB   fD1?pB   fD1?   PB @  fD1? @  B   fD1? @@B   fD1?@p  # l41?` 0 ; Debugging     f1?` B @  fD1?p` B   fD1?ppB   fD1?p B    fD1?  B !  fD1? B "  fD1?p B $  fD1? B %  fD1?  &  `1?P p pB '  `D1?` B (  `D1?  . 3 r1? 2 BExecution of cases / 3 r1?X  DIdentified causes 0 3 r1?   ; Corrections  1 3 rX1?x 6*  ERegression tests 2 3 rt1?x   CSuspected causes 3 3 r1?b \  EAdditional testsB 4@  `D1? `B 5  `D1?  `B 6  `D1?  B 7  `D1?`` B 8  `D1? @` B 9  `D1?` B :  `D1?`B ;  `D1? `  < 3 ri1?V )The Debugging ProcessH  0޽h ? f33  P( ~@ l  C t P   l  C    H  0޽h ? f33  `(  l  C  P   l  C l   H  0޽h ? f33  p$( u0  r  S \ P   r  S    H  0޽h ? f33  $(  r  S | P   r  S 8   H  0޽h ? f33  |$(  |r | S  P   r | S    H | 0޽h ? f33  H(  Hl H C  P   l H C    H H 0޽h ? f33  (  l  C   P   l  C     H  0޽h ? f33r@l,8P |:PRUtx@pTԕT4KDN_baPkdKf+hoqs A!w@}r "$xSO4 j%Z&(t*P1357t9`4[TY]^`b FtH\0T,4.0pdtfT;4=?@BTJtW4LNOQSUv&pC`rvnzt4.t<|\<e%  E @oYueBqys9w6~mփS3skK+F38ӑ ˢTXԤTh4jlmoqsTwsQE1GIJL8moԲtTH(f1&57:<pEPG0IKLNPRTbcegaA!aaA!kUKW+Y [\^`   !"$&(*,}.I2)47;=?eCprti06Atu4y9 ̐إ @t|\<N| |zf( / 0DTimes New Roman1|dv 0|( 0D[SOes Oh+'0( hp  ( 4 @LTSeg_812HC:\Program Files\Microsoft Office\Templates\ʾĸ\ʱģ.pot Li Xuandong653Microsoft PowerPointoso@M@@Y+@0yh3[4Gg  .& &&#TNPP2OMi & TNPP &&TNPP    f--- !---&H 3--- !pH---ww@: طww w0- &---- --%-- --d]-- ---- ---- --%-- --e]-- ---- &3--- !PpPP--- --] U-- --,]%U-- --D]<U-- &&G& &Gy& --y@H-- @Times New Romanww w0- .%2 nSoftware Engineering!+#.w@: ww w0- . 2 >;. . 2 :. . 2 :. . 2 G;.--yH-- w@ ww w0- . 2 y+. . 2 y+. . 2 y+. ..2 Ͼѧѧ뼼ϵ+*++*++*++*++.@Times New Romanww w0- .2 1http://  . . 2 1cs . . 2 1.s. . 2 1 nju . . 2 13.s. . 2 1;edu. . 2 1i.s . . 2 1rcn. .2 1/people/   . .2 1 lixuandong . . 2 1/n . .2 1softE  . .2 1.html   .--"System !w-&TNPP &՜.+,0d     Ļʾo Ļ`  Times New RomanTahoma Symbol Courier New ʱģ$Software Engineering ContentsReference ο.Conventional Methods for Software Engineering.Conventional Methods for Software EngineeringBasic Concepts Basic ConceptsBasic ConceptsBasic Concepts Basic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsBasic ConceptsSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSystem EngineeringSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisSoftware Requirements AnalysisDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignDesignCode Generation ()Code GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationCode GenerationTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTestingTesting Maintenance Maintenance Maintenance Maintenance Maintenance MaintenanceSummary for Waterfall Model  õʾĸģ õƬ#_< Li XuandongLi Xuandong/ 0DTimes New Roman1|dv 0|( 0D[SOes New Roman1|dv 0|( 0 DTahomaew Roman1|dv 0|( 0"0DNSefNaew Roman1|dv 0|( 0@DSymbolew Roman1|dv 0|( 0PDCourier Newman1|dv 0|( 01 ` .  @n?" dd@  @@`` ! f"MPRUVX\`abce}1&y~N-B4abc_.)(($ ^-^((~VO*J87()*+',$g-      V& !"#$%YfN  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)0h3Current UserASummaryInformation(XPowerPoint Document(` DocumentSummaryInformation8New Roman1|dv 0|( 0 DTahomaew Roman1|dv 0|( 0"0DNSefNaew Roman1|dv 0|( 0@DSymbolew Roman1|dv 0|( 0PDCourier Newman1|dv 0|( 01 ` .  @n?" dd@  @@``  F! f"MPRUVX\`abce}1&y~N-B4abc_.)(($ ^-^((X~VO*J87()*+',$g-.     V& !"#$%YfNOQSWYZ[]^_hiLKJIHGEDbCAAvB?>85=<I:K7643`91/.-0,(Mbe+NP[ ^]\)*d/012347cba`_=^]QORSTVWXYZ_`1acdfghijklmnpoqrst;uvxz}| xyzuvrstjlopqmdfghZ[\nke8!i9:EGCBA@?>=<DKHIJTC x1?@87 g4CdCdv 0p"ppp@ uʚ;2Nʚ;<4!d!d{ 0<4dddd{ 0? %Y>Software Engineering o N ] z  Ng [ N WSN'Yf[{:gyf[Nb/g| http://cs.nju.edu.cn/people/lixuandong/softE.html&zH1~H :ContentsDConventional Methods for Software Engineering O~oN] zel Object-Oriented Software Engineering bT[aoN] z Software Process, Management, and Quality oNǏ z0{tN(ϑJ. % *p.%* Reference Se.s Roger S. Pressman Software Engineering: A Practitioner s Approach McGraw-Hill 1982(1/e), 1987(2/e), 1992(3/e) 1997(4/e), 2001(5/e) SƉSbT[a^!jb/g R _ W SN*zz*)Y'Yf[QHr>y http://moon.nju.edu.cnV3P* ;-Conventional Methods for Software Engineering.. &-Conventional Methods for Software Engineering.- '&Basic Concepts W,gi_Software is instructions (computer programs) that when executed provide desired function and performance, data structures that enable the programs to adequately manipulate information, and documents that describe the operation and use of the programs.  < Basic ConceptsoN {:g|~-Nv z^SvQ gsQeN0 z^ {NR-NvYt[aTYtĉRvc0 eN :NNONN z^@bvDef0 @L L(Basic ConceptsSoftware Characteristics Software is developed or engineering, it is not manufactured in the classical sense. oN/f1u_Sb] zS b_bv N/f O~aIN N1u6R Nuv0 Software doesn t  wear out . oN NO x_c 0 Although the industry is moving toward component-based assembly, most software continues to be custom build. 'YYpeoN/fꁚ[v N/fǏ] gvgN~ňwegv0U" m   `n m= Bas      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy{|}~ic Concepts Software Applications Systems software Real-time software Business software Engineering and scientific software Embedded software Personal computer software Web-based software Artificial intelligence software 4  )Basic ConceptszGeneric Category for Software |~oN /edoN-NNmiddleware ^(uoN(  ,  Basic Concepts > Basic Concepts Evolution of Software oNvSU\Ǐ z ,{N6kN,{NS{:g Nv,{N*N z^vQs0R[(uvؚ~ z^QsKNMR1946-1956  ,{N6kN[(uvؚ~ z^Qs0RoN] zQsKNMR1956-1968  ,{ N6koN] z1968- 0*s rz@ Basic ConceptsbSoftware crisis oNqS:g OBlsQ|1Y _S9(u1Yc ۏ^b^ S`'`] N~b2!*Basic ConceptsdNuoNqS:gvSV oN,gvyrp {tNXTv‰p (u7bv‰p oN_SNXTv‰p* )  )2ABasic ConceptsNuoNqS:gvSVoN,gvyrp oN_SۏU\`Qaϑ oN_S(ϑNċN {tTc6RoN_SǏ zvS_V oNl g x_c i_ oN~b8^asT@wۏbO9eSegv*G GZ+Basic ConceptsNuoNqS:gvSV{tNXTv‰p We already have a book that s full of standards and procedures for building software, won t that providemy people with everything they need to know? bN ]~ gNsQN_SoNvhQTĉvfNM| S[N N~NNcO@b gvQwSvOo`T63 Da *.,Basic ConceptsNuoNqS:gvSV{tNXTv‰p My people have state-of-the-art software development tools, after all, we buy them the newest computers. bN]~ gN_}Y_YvoN_S]wQ N bNb ggev{:g0 If we get behind schedule, we can add more programmers and catch up. YgbN]~=TNR SNXRfYv z^XTegv Nۏ^0 bZiZ%ZEZ!ZZ Hl!I.Basic ConceptsvNuoNqS:gvSV(u7bv‰p A general statement of objectives is sufficient to begin writing programs - we can fill in the details later. gN*N[vhvibc1\N@wKbQ z^N Y~SN(WNTQeEQ0 Project requirements continually change, but change can be easily accmodated because software is flexible. (u7b[oNvBl NeSS 6q oN/fgo up;mv SN{f0W9eR0 Lo(k' )\n$B "BBasic Concepts NuoNqS:gvSVoN_SNXTv‰p Once we write the program and get it to work, our job is done. @boN_S1\/fQ z^v^lO[ЏL0 Until I get the program  running I have noway of assessing its quality. (W z^wckЏLKNMR l gRlċ0OvQ(ϑ0J?I\?)/Basic Concepts>NuoNqS:gvSVoN_SNXTv‰p The only deliverable work product for a successful project is the working program. N*NbRyv/UN^cNv1\/fSЏLv z^0 Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. oN] z1\/f^z^'Ye(uvech ُ_\MNObNvoN_SHes0 `St$  JSt0Basic ConceptszNuoNqS:gvSVqQ gv‰p oNbeQuN'`ЏLNTv~b]\Ov^ NY N~b/fNN_[fZPv{US]\O0 F*(=1Basic ConceptsSoftware Engineering The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (NATO Science Committee)0CBasic ConceptsoN] z ^(u{:gyf[0pef[S{tyf[I{St N] zSSR0el㉳QoNv] z0vQ-N {:gyf[0pef[(uNg !jWN{l ] zyf[(uN6R[ĉ0W0MNOb,gSnx[Cga {tyf[(uNR0Dn0(ϑ0b,gI{{t0'Y~vyhQfN *r rwDBasic Concepts^oN] zvW,gQ[ oNel oN]wQ oN] zhQTĉ oN] z{t oN] zt %0/EBasic ConceptsoN] zvW,gSt %NSystem Engineering To construct a system model, the engineer should consider a number of restraining factors: Assumptions Simplifications Limitations Constraints Preferences>h@f?@ System EngineeringSystem Simulation Many computer -based systems interact by the real world in a reactive fashion. Real-time and embedded systems often fall into the reactive systems category.0A System Engineering;System engineering process: Business process engineering The system engineering process is called business process engineering when the engineering work focuses on a business enterprise. Product engineering The system engineering process is called product engineering when a product is to be built. d .<." B System EngineeringnBusiness process engineering The goal of business process engineering is to define architectures that will enable a business to use information effectively. Three different architectures must be analyzed and designed within the context of business objectives and goals: - data architecture - application architecture - technology infrastructureJa XFSystem Engineering|Business process engineering The data architecture provides a framework for the information needs of a business or business function. The application architecture encompasses those elements of a system that transform objects within the data architecture for some business purpose. The technology infrastructure provides the foundation for the data and application architectures.v` X|D GSystem Engineering C System EngineeringProduct engineering The goal of product engineering is to translate the customer s desire for a set of defined capability into a working product. To achieve this goal, product engineering must derive architecture and infrastructure. The architecture encompasses four distinct system components: software, hardware, data (databases), and people. A support infrastructure is established and includes the technology to tie the components together and the information that is used to support the components.* HSystem Engineering NSystem Engineering Product engineering System Analysis Identification of Need Feasibility Study Economic feasibility Technical feasibility Legal feasibility Alternatives Economic Analysis Technology Analysis l9' 9 & kDSystem EngineeringRequirements engineering The outcome of the system engineering process is the specification of a computer-based system or product at the different levels. But the challenge facing system engineers (and software engineers) is profound: How can we ensure that we have specified a system that properly meets the customer s needs and satisfies the customer s expectations? There is no foolproof answer to this difficult question, but a solid requirements engineering process is the best solution we currently have.4  ISystem EngineeringaRequirements engineering Requirements engineering provides the appropriate mechanism for understanding what the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution, specifying the solution unambiguously, validating the specification, and managing the requirements as they are transformed into an operational system.0IGJSystem EngineeringRequirements engineering process requirements elicitation requirements analysis and negotiation requirements specification system modeling requirements validation requirements management0!!ESystem EngineeringHow to model systems Every computer-based system can be modeled as an information transform using an input-processing-output template. To develop the system model, a system model template is used. The system engineer allocates system elements to each of five processing regions within the template: - user interface - input - system function and control - output - maintenance and self test Tv t KSystem Engineering LSystem EngineeringSystem specification Introduction A. Scope and purpose of Document B. Overview 1. Objectives 2. Constraints Functional and Data Descriptions A. System architecture 1. System context diagram 2. SCD Description~ r!g   _ MSystem EngineeringSystem specification Subsystem Descriptions A. Architecture Diagram Specification for Subsystem n B. Architecture Dictionary C. Architecture Interconnect Diagrams and Description System Modeling and Simulation Results A. System Model Used for Simulation B. Simulation Results C. Special Performance Issues Project Issues A. Projecte Development Costs B. Project Schedule Appendices'sD  T R;OSoftware Requirements AnalysisSoftware requirements engineering is a process of discovery, refinement, modeling, and specification. Both the software engineer and customer take an active role in software requirements engineering.PSoftware Requirements AnalysisRequirements analysis is a software engineering task that bridges the gap between system level requirements engineering and software design. TSoftware Requirements AnalysisRequirements engineering activities result in the specification of software s operational characteristics (function, data, and behavior), indicate software s interface with other system elements, and establish constraints that software must meet. QSoftware Requirements AnalysisIn requirements analysis and specification, communication content is very high, chance for misinterpretation or misinformation abound, and ambiguity is probable.  I know you believe you understood what you think I said, but I am not sure you realize that what you heard is not what I meant.  bwS`OvO`Of}vN`O:Nb@bv/fNHN FO/fb N[`O/f&TaƋ0R`O,T0Rvv^ N/fb@bcva` ...& 0 *$;$;(6RSoftware Requirements Analysis Software requirements analysis may be divided into five areas of effort: Problem recognition evaluation and synthesis modeling specification review2MKMJSSoftware Requirements AnalysisRequirements elicitation for software: Initiating the Process Facilitated Application Specification Techniques Quality Function Deployment Use Cases2'o'nUSoftware Requirements AnalysisAnalysis Principles: The information domain of a problem must be represented and understood. The functions that the software is to perform must be defined. The behavior of the software (as a consequence of external events) must be represented. The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion. The analysis process should move from essential information toward implementation detail. 4  \&Software Requirements Analysis?Guiding principles for requirements engineering Understand the problem before you begin to create the analysis model. Develop prototypes that enable a user to understand how human/machine interaction will occur. Record the origin of and the reason for every requirements. Rank requirements work to eliminate ambiguity.401 `.Software Requirements AnalysisoNBlRgNXT^wQYvyr_ UNONNbavi_ ͑etetOKNb:NTy;bR v^9hncTy;bR~TQv㉳QRl UNNTyvNQzbmmvSYDe-N8TSp`S_vnc Yt(u7bvsXSWwƋ[lka-Software Requirements AnalysisoNBlRgNXT^wQYvyr_ wQYb|~vlxNToNR^(uN(u7bsXvR wQYo}YvfNbTS4Yb__ۏLTNbcavR wQ g e w0Rh(g S w0Rhg vR0IZYV Software Requirements Analysis_How to analyze software requirements? Analyzing the information domain Modeling Partitioning 0'9'7W!Software Requirements AnalysisKey to understanding of software requirements All software applications can be collectively called data processing. Interestingly, this term contains a key to our understanding of software requirements. Software is built to process data, to transform data from one form to another; that is, to accept input, manipulate it in some way, and produce output. This fundamental statement of objective is true for all software we build.J.- 5<X"Software Requirements AnalysisfThe information domain information content ant relationships information flow information structure0ONY#Software Requirements AnalysisThe information domain Information content represents the individual data and control objects that constitute some larger collection of information transformed by the software. Data and control objects can be related to other data and control objects, and during analysis of the information domain these relationships should be defined. Information flow represents the in manner in which data and control change as each moves through a system. Information structure represents the internal organization of various data and control items.l '[H ]'Software Requirements Analysis The analysis model must achieve three primary objectives: to describe what the customer requires to establish a basis for the creation of a software to define a set of requirements that can be validated once software is built.4>>  {ESoftware Requirements AnalysisKAnalysis Modeling Data modeling Functional modeling Behavioral modeling <87^(Software Requirements Analysis zDSoftware Requirements AnalysisqData Dictionary a repository that contains descriptions of of data objects consumed or produced by the software.0a`|FSoftware Requirements AnalysisEntity Relation Diagram (ERD) The ERD depicts relationships between data objects. The ERD is the notation that is used to conduct the data modeling activity. The attributes of each data object noted in the ERD can be described using a data object description. J  }GSoftware Requirements AnalysisData Flow Diagram (DFD) The DFD serves two purposes: (1) to provide an indication of how data are transformed as they move through the system and (2) to depict the functions (and subfunctions) that transform the data flow. The DFD provides additional information that is used during the analysis of information domain and serves as a basis for modeling function. A description of each function presented in the DFD is contained in a process specification (PSPEC).6  ~HSoftware Requirements AnalysisState Transition Diagram (STD) The STD indicates how the system behaves as a consequence of external events. To accomplish this, the STD represents the various modes of behavior (called states) of the system and the manner in which transitions are made from state to state. The STD serves as the basis for behavioral modeling. Additional information about the control aspects of the software is contained in the control specification (CSPEC).L  ISoftware Requirements AnalysisbData modeling What are the primary data objects to be processed by the system: What is the composition of each data object and what attributes describe the object? Where do the objects currently reside? What are the relationships between each object and other objects? What are the relationships between the objects and the processes that transform them?*U UJSoftware Requirements AnalysisEntity Relation Diagram (ERD) Data objects: A data object is a representation of almost any composite information that must be understood by software. Attributes: define the properties of a data object and take on one of three different characteristics: (1) name an instance of the data object, (2)describe the instance, and (3) make reference to another instance in another table. Relationships: Data objects are connected to one another in different ways.4  LSoftware Requirements Analysis MSoftware Requirements AnalysisFunctional modeling Information is transformed as its flows through a computer-based system. The system accepts input in a variety of forms; applies hardware, software, and human elements to transform it; and produces output in a variety of form.0NSoftware Requirements AnalysisdFundamental system model oN|~vhQ萟Rh:ybN*NUSNvOo`SbcǏ z(_)Software Requirements AnalysisBasic DFD Notation External entity: A producer or consumer of information that resides outside the bounds of the system to be modeled. Process: A transformer of information that resides within the bounds of the system to be modeled. Data object: the arrowhead indicates the direction of data folw. Data store: A repository of data that is to be stored for use by one or more process.*m m$Xb,Software Requirements AnalysisOuXTvƉ|~  c+Software Requirements Analysis d*Software Requirements Analysis OSoftware Requirements Analysis.Behavior modeling States Transitions Events0PSoftware Requirements Analysis QSoftware Requirements AnalysisStructured Analysis Creating an entity/relationship diagram Creating a data flow model Control specification Process specification Creating a data dictionaryTB+Z$Software Requirements Analysis$The Software Requirements Specification Introduction A. System reference B. Overall description C. Software project constraints Information Description A. Information content representation B. Information flow representation (1. Data flow 2. Control flow) (au( `u RSoftware Requirements AnalysisThe Software Requirements Specification Functional Description A. Functional partitioning B. Functional description 1. Processing narrative 2. Restrictions/limitations 3. Performance requirements 4. Design constraints 5. Supporting diagrams C. Control Description 1. Control specification 2. Design constraintsJ(V( P SSoftware Requirements AnalysisThe Software Requirements Specification Behavioral Description A. System states B. Events and actions Validation and Criteria A. Performance bounds B. Classes of tests C. Expected software response D. Special considerations Bibliography Appendix (3z( 3z [%Software Requirements Analysis4Specification Review Complete Consistent Accurate0TDesign Software design sits at the technical kernel of software engineering and is applied regardless of the software process model that is used. Beginning once software requirements have been analyzed and specified, software design is the first of three technical activities - design, code generation, and test - that are required to build and verify the software. The importance of software design can be started with a single word - quality. Design provides us with representations of software that can be assessed for quality.4 WUDesign VDesignThe data design transforms the information domain model created during analysis into the data structures that will be required to implement the software. The architectural design defines the relationship between major structural element of software. The interface design describes how the software communicates within itself, with systems that interoperate with it, and with humans who use it. The component-level design transforms structural elements of software architecture into a procedural description of software components.l LoWDesignDesign process goal: The design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer. The design must be a readable, understandable guide for those who generate code and for those who test and subsequently maintain the software. The design should provide a complete picture of the software, addressing the data, functional, and behavioral domain from an implementation perspective.4  XDesignAbstraction Abstraction permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details. 2  YDesignRefinement Refinement is actually a process of elaboration. We begin with a statement of function (or description of information) that is defined at a high level of abstraction. That is, the statement describes function or information conceptually but provides no information about the internal workings of the function or the internal structure the information. Refinement causes the designer to elaborate on the original statement, provide more and more details as each successive refinement (elaboration) occurs.@   $ ZDesignYAbstraction and Refinement Abstraction and refinement are complementary concepts. Abstraction enables a designer to specify procedure and data and yet suppress low-level details. Refinement helps the designer reveal low-level details as design progresses. Both concepts aid the designer in creating a complete design model as the design evolves.4? > [DesignPModularity !jWWS Software is divided into separately named and addressable components, often called modules !jWW , that are integrated to satisfy problem requirements.\S7, \5\Design!jWW !jWW/fpencf0SgbLSI{ z^[avƖT /fUSr}T Tvv^NSNǏ TW[eg OYǏ z0Qpe0P[ z^0[0moduleI{0?D(;dDesignPArgument for modularity C(x) be a function that defines the perceived complexity of a problem x. E(x) be a function that defines the effort required to solve a problem x. For two problems, p1 and p2 if C(p1) > C(p2), then E(p1) > E(p2) C(p1 + p2) > C(p1) + C(p2) E(p1 + p2) > E(p1) + E(p2)@*6 cDesign eDesignHow do we define an appropriate module of a given size? Modular decomposability Modular composability Modular understandability Modular continuity Modular protection29n9mY@fDesignSoftware Architecture Software architecture is the hierarchical structure of program components (modules), the manner in which these components interact, and the structure of data that are used by the components. One goal of software design is to derive an architectural rendering of a system. This rending serves as framework from which more detailed design activities are conducted.4l k gDesignASoftware Architecture Control hierarchy Structured Partitioning0+*hDesign iDesignData Structure Data structure is a representation of the logical relationship among individual elements of data. Data structure dictates the organization, methods of access, degree of associativity, and processing alternatives for information. 0 0jDesignSoftware Procedure Software architecture (program structure) defines control hierarchy without regard to the sequence of processing and decisions. Software procedure focuses on the processing details of each module individually. Procedure must provide a precise specification of processing, including sequence of events, exect decision points, repetitive operations and even data organization and structure.4  AQkDesignInformation Hiding Modules should be specified and designed so that information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information.0lDesignEffective modular design: Function independence (!jWWRrz'`) The concept of function independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding. We should design software so that each module addresses a specific subfunction of requirements and has a simple interface when viewed from other parts of the program structure. T<31 42  cq>Design!jWWRrz'` !jWWrz/fc_SwQ grzR NTvQ[!jWWKNl gǏYvvN\O(uv!jWW0 !jWWRrzvaIN RRrR {ScS fNYNT\O_S TNoN rzv!jWWfNKmՋT~b0 ^ & '  %  & `mDesignqualitative criteria for measuring independence: Cohesion (QZ'`) Coupling (&T'`) F2"0 4= oDesignCohesion Cohesion is a natural extension of the information hiding concept. A cohesive module performs a single task within a software procedure, requiring little interaction with procedures being performed in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. We always strive for high cohesion, although the mid-range of the spectrum is often acceptable.4    pDesignSpectrum for cohesion: Coincidentally cohesion (vP6qQZ)N~NRsQ|~gceNO Logically cohesion (;QZ)N~NR(W; N T^\N{| OYGW:NQNO temporal (eQZ)N~NR_{(W TNkeQgbLNO Communicational cohesion (Oo`QZ)!jWWQ@b gCQ }_(uv TveQbQpencƖT-N Sequential cohesion (z^QZ)!jWW-Nvk*NCQ }/fN TNR'}[vsQ N*NCQ }vQ/f NN*NCQ }veQؚ Functional cohesion (RQZ)N*N!jWW[bN*NNN[bN*NRؚ +  !0 t0  .nDesign0Coupling Coupling is a measure of interconnection among modules in a software structure. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. In software, we strive for lowest possible coupling.4 '  & s@DesignnSpectrum for coupling: No direct coupling (eNUOޏc)$N*N!jWW-NvkN*Nrz0W]\O NSN*NvX[(WgNO&T 0 Data coupling (penc&T)$N*N!jWW|_dkǏSpeNbcOo` NNbcvNN/fpencNO&T 0 Control coupling (c6R&T)$N*N!jWWKN OvOo` gc6RbR-N&T 0Z+&6,)%tBDesignSpectrum for coupling: Common coupling (lQqQsX&T)$N*NbY*N!jWWǏN*NlQqQsXvN\O(u 1. N*NX[penc N*NSpencNO&T  2. X[SpencNO---NKN 0 Content coupling (Q[&T) 1. N*N!jWWSN*N!jWWvQpenc 2. $N*N!jWW gNR z^Nx͑S 3. N*N!jWW NǏck8^eQS lyvSN*NvQ 4. N*N!jWW gY*NeQSasT@w!jWW gY*NR 0j.-i Kq,)JowDDesignsQN&T'`TQZ'`vSR RN=\S1_v&T'`=\ϑO(upenc&T \(uc6R&T P6RlQqQsX&TvV [hQ N(uQ[&T RN=\SؚvQZ'`RN=\SؚvQZ'` v^Ƌ+RQNOQZ'`Pa`xEDesignDesign heuristics for effective modularity Evaluate the  first iteration of the program structure to reduce coupling and improve cohesion. 9eۏoN~g cؚ!jWWQZ'` MNO!jWW&T'`0 Attempt to minimize structures with high fan-out; strive for fan-in as depth increases. =\ϑQ\ؚGbQ~gvpev @wm^vXRNSfYvGbeQ0GbQǏ'YasT@w!jWWǏR YBg c6RTOSǏYv N~!jWW0N,eg vB\GbQؚ -NGbQ\ NOB\ؚGbeQ0R-"- aXP ,XPyFDesignDesign heuristics for effective modularity Keep the scope of effect of a module within the scope of control of that module. !jWWv\O(uVOc(W!jWWvc6RVQ0!jWWv\O(uV/fc!jWW-NN*N$Re@bq_Tv@b gvQ[!jWW!jWWvc6RVc!jWW,gNS@b gvcbcN^\N[v!jWW0 Evaluate module interfaces to reduce complexity and redundancy. RNMNO!jWWcSv YBg z^0!jWWcSv YBg'`/f_woNvN*N;NSV0cS^O_Oo` O{USv^NN!jWWvRN0H-- QO@?,~O@>zGDesignDesign heuristics for effective modularity Strive for  controlled entry modules by avoiding  pathological connections. USeQSUSQSv!jWW0MQQ[&T fNt㉌T~b0 Define modules whose function is predictable. !jWWvR^SNKm0v TveQ^ gv TvQ &TRNt0KmՋT~b0F--N.(,{.'qDesignGData design Architectural design Interface design Component design rDesign Data design Data design creates a model of data and/or information that is represented at a high level of abstraction. This data model is then refined into progressively more implementation-specific representations that can be processed by the computer-based system. 0  sDesignData design Data structure: At the program component level, the design of data structures and associated algorithms required to manipulate them is essential to the creation of high-quality applications. Database: At the application level, the translation of a data model into a database is pivotal to achieving the business objectives of a system. Data warehouse: At the business level, the collection of information stored in disparate databases and reorganized into a  data warehouse enables data mining or knowledge discovery that can have an impact on the success of the business itself. F  uDesign^Architectural design Architectural styles Mapping requirements into a software architecture <HGtDesignArchitectural styles Data-centered architectures Data-flow architectures Call and return architectures Object-oriented architectures Layered architectures0vDesignMapping requirements into a software architecture The call and return architecture. Structured design (data flow-oriented design method)  3ZwDesign Structured design provides a convenient transition from a data flow diagram to software architecture: the type of information flow is established; flow boundaries are indicated; the DFD is mapped into program structure; control hierarchy is defined; resultant structure is refined using design measures and heuristics; and the architectural description is refined and elaborated.4kk }JDesignTransform flow (SbcAm) Oo`leQۏeQ|~ Te1uYb__SbcbQb__0ۏeQ|~vOo`ǏSbc-N_ ~ǏR]YtNTQl@wQSbcbYb__y_|~0 F]L~KDesign LDesignTransaction flow (NRAm) NRAmvyrp/fpencl@wc6ebYNLuvOo`lbcbN*NNRy 6qT {勋NRyv

4Designh]wQ--PDL(Program Design Language) PDLwQ g%N^ 1 DesignDDesign specification b!. Architectural design A. Review of data and control flow B. Derived program structure c!. Interface design A. Human-machine interface specification B. Human-machine interface design rules C. External interface design 1. Interface to external data 2. Interface to external systems or devices D. Internal interface design rules > Z+.oDesignDesign specification d!. Procedural Design for each module: A. Processing narrative B. Interface description C. Design language description D. Modules used E. Internal data structures F. Comments/restrictions/limitations4  +Design|Design specification e!. Requirements cross-reference f!. Test provisions A. Test guideline B. Integration strategy C. Special consideration g!. Special Notes h!. Appendix R  9P DesignlDesign review (v Y[) oNv1u{tebvNh0b/g_SebvNhTvQN gsQNXTY(u7b0(ϑOToN/ecI{ qQ TۏL Y[0 [ۏL Y[vf>f}YY/fSNke0WSsoNv:w N SNOk*N:w(WۏL z0KmՋTNNKNMRNN~ck N >fW0WMNOTv_S6kT~b6kv9(u0 Y[Sbckĉv[g0^ckĉv[gThg Nye_04  Design Y[vhQ fn'` oNSbNoNBlĉ z^vR{|  c^(uWR{| (u N(u Code Generation z^vR{|  cbR'`(R{| z^S+Tz^bR v^S+T gv^SbR R^_QNR^_{Bl Q~QNQ~{Bl *8ONCode Generation z^vR{|  c\O(ue_R{| }TN_ NvQc ZPNHN ؏/f `7hZP v^cv~bR/f}TN_v HQZPNHN0TZPNHNĉ[}YNfnxv!k^0 \O(u_Nv^vc-N Nf>f wQvQ~bRgbLvHQT!k^0 f^    GqCode GenerationL z^vR{|  cc~+RR{| R'` '` [s'`'&Code Generation^ z^vR{|  c!jb[‰NLuv҉^R{| [a_bT[a ^[a_0/Code GenerationB z^vR{|  cvQ[e_R{| Qpe_ ;_ "!Code Generation N, aϑgy z^/f&TTNyr[vyv ^Q NbNNV } ^(uW {lT{ YBg'` oNЏLsX (u7bBl-NsQN'`ebv penc~gv YBg'` oN_SNXTvwƋ4ls^ S(uvы|~41A#AqCode Generation xΘ ' ZCode Generation z^/edsX s(W zǏ z'YY(WN~CASE]wQv/ec NۏL ُ~]wQR[b0ы0Ջ0yv{tI{N|RNR ُ~]wQ g:gƖb(WNwb_b z^/edsX0 aa$ <Code Generation z^/edsX^wQYvyr'` (u'`(uN N Tv0 N Tv^(uWT_Sel ^'`Ǐ_sQn M6RQ N Tv z^/edsX[O _>e'`eO0WXRe]wQ /ec Y(u/ecS Y(u!jWWvX[P0"}_Tg~b ꁧc'`Oꁫd\OvcknxNOS &^penc^cOpenc^:g6R X[P0{t]_SvoNNT O(ϑ gRNcؚ@b_SoNv(ϑ 8T_(u7b(u7b?aaO(u wQ g^:WzNRwckcؚoNuNR0 @ f0TestingSoftware testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation. The importance of software testing and its implications with respect to software quality cannot be overemphasized. It is not unusual for a software development organization to expend between 30 and 40 percent of total project effort on testing. In the extreme, testing of human-rated software can cost three to five times as much as all other software engineering steps combined!g1TestingvIn fact, testing is the one step in the software process that could be viewed as destructive rather than constructive.h2TestingTesting Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is one that has a high probability of finding an as-yet-undiscovered error. A successful test is one that uncovers an as-yet-undiscovered error.4  i3Testing.Testing Principles All tests should be traceable to customer requirements. Tests should be planned long before testing begins. The Pareto principle applies to software testing. (KmՋSs-Nv80%_SwnN z^!jWW-Nv20%) Testing should begin  in the small and progress toward testing  in the large. Exhaustive testing is not possible. To be most effective, testing should be conducted by an independent third party.^" ! &j4TestingmTestability Operability Observability Controllability Decomposability Simplicity Stability Understandability4 b  ` Gk5TestingB A engineered product can be tested in one of two ways: Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational while at the same time searching for errors in each function. (Black-box testing) Knowing the internal workings of a product, test can be conducted to ensure that  all gears mesh, that is internal operations are performed according to specifications and all internal components have been adequately exercised. (White-box testing)>@  7 l6Testing&Black-box testing (RKmՋ) When computer software is considered, black-box testing alludes to test that are conducted at the software interface. Although they are designed to uncover errors, black-box test are used to demonstrate that software functions are operational, that input is properly accepted and output is correctly produced, and that the integrity of external information is maintained. A black-box test examines some fundamental aspect of a system with little regard for the internal logical structure of the software. T  &&Testing wz=\RKmՋ ON*N z^3*NteWveQpenc 傡{:gvW[:N16MO Rk*NpencSSv

 RT$*TestingTest case design KmՋ(uOvW,gvh/fnx[N~KmՋpenc vQSsN*NbN{|visgؚ0 White-box testing methods Black-box testing methods0E517, &5TestingTest case design (White-box testing Methods) Using white-box testing methods, the software engineer can derive test cases that (1) guarantee that all independent paths within a module have been exercised at least once, (2) exercise all logical decisions on their true and false sides, (3) execute all loops at their boundaries and within their operational bounds, and (4) exercise internal data structures to ensure their validity. T3- ]2 TestingP;v Sv $R[v agNv $R[/agNv agN~Tv _v4#  )Testings~QY N z^ #include(stdio.h); main(){ float A, B, X; scanf( %f %f %f , &A, &B, &X); if (A>1)&&(B==0) X=X/A; if (A==2)||(X>1) X=X+1; printf( %f , X)} z^vKmՋpencNR+RnSv0$R[v0agNv0agN~TvT_iv;vhQ0 < C4 Z &Q  2Testing Sv SYYvKmՋpenc OKmՋ z^-Nk*NS\gbLN!k0 :NOk*NSgbLN!k z^vgbL_^/fsacbed A=2, B=0, X=4 傊bbpv$R[Q:N (A==2)||(X<1) ,UJB TestingR $R[v SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[vkySv~g\gbLN!k0 YR+Rv_sacbedTsabdb sacbdTsabedv$N~KmՋpenc n $R[vhQ 1 A=3, B=0, X=3 (sacbd) 2 A=2, B=1, X=1 (sabed) DfLTestingP agNv SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[h_-Nvk*NagNS0RTySv~g0 (WapA>1, A1, B=0, B`"0 (WbpA=2, A `"2, X>1, X 10 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)6D (3jE)Testing $R[/agNv SYYvKmՋpenc O_$R[h_-Nvk*NagNS0RTySv~g Nk*N$R[h__NS0RTySv~g0 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)@E3E2>GTestingR agN~Tv SYYvKmՋpenc O_$R[h_-NagNvTyS~T\QsN!k0 gkQySvagN~T 1 A>1, B=02 A>1, B `"0 3 A 1, B=04 A 1, B `"0 5 A=2, X>16 A=2, X 1 7 A `" 2, X>18 A `" 2, X 10 KmՋpenc 1 A=2, B=0, X=4 (sacbed, 1,5) 2 A=2, B=1, X=1 (sabed, 2,6) 3 A=1, B=0, X=2 (sabed, 3,7) 4 A=1, B=1, X=1 (sabd, 4,8)L*/"l?m TestingV _v SYYvKmՋpenc O_ z^vkagS_\gbLN!k z^V-N gs Rk*Ns\~ǏN!k 0 KmՋpenc 1 A=1, B=1, X=1 (sabd) 2 A=1, B=1, X=2 (sabed) 3 A=3, B=0, X=1 (sacbd) 4 A=2, B=0, X=4 (sacbed)@<o<jZKTesting@Test case design (Black-box testing) Black-box testing attempts to find errors in the following categories: (1) incorrect or missing functions, (2) interface errors, (3) errors in data structures or external database access, (4) behavior or performance errors, and (5) initialization and termination errors. Tw& Q TestingkTest case design (Black-box testing) Test are designed to answer the following questions: How is functional validity tested? How is the system behavior and performance tested? Is the systems particularly sensitive to certain input values? How are the boundaries of a data class isolated? What effect will specific combinations of data have on system operation? J[% 6 TestingTest case design (Black-box testing) Equivalence partitioning I{NRR Boundary value analysis Lu V$+ ]=U%| >VTestingRegression testing (VR_KmՋ) In the context of an integration test strategy, regression testing is the re-execution of some subset of tests that have been conducted to ensure that changes have not propagated unintended side effects.B(Testing~ňKmՋelk vT N~ňl NqR!jWWY(WKmՋ6keg|~v;NR egSscSYvbc!jWW SG0RNKNvT|vKmՋVNOB\sQ.!jWW-NvSsZf0 ꁕ^T N~ňl Nbc!jWWYvqR!jWW(WgTN*N!jWWňeQKNMR oN[SOv^ NX[(W0 N,O(u$Nyelv~T KmՋ6kegǑ(uvT N~ňl TgǑ(uꁕ^T N~ňl _Y`Q NNSN TeۏL0*   Testing/Integration test documentation An overall plan for integration of the software and a description of specific tests are documented in a test specification. This document contains a test plan, and a test procedure, is a work product of the software process, and becomes part of the software configuration.0TestingTest specificationKmՋffN 1. KmՋV 2. KmՋR KmՋebbKmՋRR:NQ*Neb R+RKmՋoNvTyyr'` ۏ^ YoNqR!jWWTbc!jWW sXNDn 3. KmՋek ,{nKmՋ6kvf~ňv!k^KmՋvvT^Kmv!jWWN(uv]wQbb/gYoNvfKmՋ(uOpenc0 ,{nKmՋ6kvg~g 4. [EKmՋ~g 5. SDe 6. DU_ l*6@+ 7  0 )  Testing0Validation testing ( gHe'`KmՋ)oN gHe'`S_oNvRT'`Y T(u7bTtg_v7h RoN/f gHev0 `7h{/fTtvggBlf /flQeNKmՋNXT 0 elў{KmՋl0 hQhQ萄vRBl_0RnhQ萄v'`Bl0RNech/fcknxvv^NONO(uvQ[Bl_N0RNSbf~b'`0fy i'`0|Q['`0QꁨRb` YI{ 0 SQsv~gRN'`Nb/gBlNSsNb/gBl NNv0WeN(u7bOSFU 0 oN|ReN Y[nxoN|ReNvT*NR]ZP}Y ]~v v^ g_v~f \O:NNT~b6kvW,gDe0 >>  Testing4System testing (|~KmՋ) Software is only one element of a large computer-based system. oNNN/fWN{:gv|~vN*N~bR0 Software is incorporated with other system elements, and a series of system integration and validation tests are conducted. |~KmՋ/fcboNN|~vvQN }Tv^ v^ۏLN|Rv|~~ňS gHe'`KmՋ0 @},  ?{/R?|(Testing~System testing System tests fall outside the scope of the software process and are not conducted by solely by software engineering. However, steps taken during software design and testing can greatly improve the probability of successful software integration in the larger system. |~KmՋ]~=0RNoN] ztuKNY v^Ng\1uoN_Sbb FO/f(WoNTKmՋ6k@bۏLv]\O\ gRNbR0WboNTv^0Rf'Yv|~KN-N0 A classic system testing problem is  finger-pointing . This occurs when an error is uncovered, and each system element developer blames the other for the problem. xQWv|~KmՋ/f vNc# S_SsNN*NNT T*N|~Rv_SL#+RNvR gku0x L8   #6G2TestingBWhat software engineers do in system testing: design error-handling paths that test all information coming from other elements of the system; [cQYt_ NKmՋN|~vvQNR OegvhQOo` conduct a series of tests that simulate bad data or other potential errors at software interface; ۏLN|RKmՋ !jN(WoNcSYQsv OWvpenc bvQNSv record the results of tests to use as  evidence if finger-pointing does occur. bKmՋ~gU_ Neg YgQsNvc#v`Qe 1\SNcQnx[v9hnc participate in planning and design of system tests to ensure that software is adequately tested.SN|~KmՋRN NOEQR0WKmՋoN|~0v.`"r.    Pb#P#`s=TestingCriteria for Completion of Testing S gS_KmՋEQR^ASRcя100%e MbOKmՋSsvR_0RS%c0 0$%$#$#$t>TestingVerification and Validation Software testing is one element of a broader topic that is often referred to as verification and validation (V&V). Verification refers to the set of activities that ensure that software correctly implements a specific function. Validation refers to a different set of activities that ensure that the software that has been bulit is traceable to customer requirements.lq P f a'u?TestingVerification and Validation Verification:  Are we building the product right? Validation:  Are we building the right product? The definition of V&V encompasses many of the activities that we have referred as software quality assurance (SQA). Although testing plays an extremely important role in V&V, many other activities are also necessary.49 ( ~l v@TestingDebugging ( An ART) Debugging occurs as a consequence of successful testing. That is, when a test case uncovers an error, debugging is the process that results in the removal of the error. Although debugging can and should be an orderly process, it is still very much an art. The external manifestation of an error and the internal cause of the error may have no obvious relationship to one another. The poorly understood mental process that connects a symptom to a cause is debugging.@  wATesting xB MaintenanceAny work done to change a software system after is is in operation is considered to be maintenance. 55% - 80% of software budget is spent on maintenance. Maintenance is more difficult than development for software system, and requires more creative works.*W yC MaintenanceCorrective maintenance wck'`~b Adaptive maintenance ^'`~b Perfective maintenance [U'`~b Preventive maintenance 2'`~b r  Maintenancenq_ToN~bvV } |~v'Y\ |~vt^ ~gvTt'` ^(u{|WTNR^ vQ[ z^ penc^I{  -87 Maintenance<oN~bvek t㉰s g|~ O9es g|~ ͑enx|~  MaintenanceoN~bvek hg(u7bvBlTffN T(u7bT_SۏLFU hg z^Tech nx[ z^vMOnT'`( xvz z^vO9eSL'`TO9eS_wvoR\O(u [9eSRۏLx O9e z^echT z^^04 _  ^ g Maintenance~O9e z^vSR N_c[ z^v(ϑ Oc z^Θ =<I:K `9  - ,(Mbe+NP[ ^]\)*d    cba`_=^]QORSTVWXYZ_`1acdfghijklmnpoqrst;uvxz}| xyzuvrstjlopqmdfghZ[\nke!i9:EGCBA@?>=<DKHIJTC x1?@87 g4CdCdv 0p"pp      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|~p@ uʚ;2Nʚ;<4!d!d{ 0<4dddd{ 0? %->Software Engineering o N ] z  Ng [ N WSN'Yf[{:gyf[Nb/g| http://cs.nju.edu.cn/people/lixuandong/softE.html&zH1~H :ContentsDConventional Methods for Software Engineering O~oN] zel Object-Oriented Software Engineering bT[aoN] z Software Process, Management, and Quality oNǏ z0{tN(ϑJ. % *p.%* Reference Se.s Roger S. Pressman Software Engineering: A Practitioner s Approach McGraw-Hill 1982(1/e), 1987(2/e), 1992(3/e) 1997(4/e), 2001(5/e) SƉSbT[a^!jb/g R _ W SN*zz*)Y'Yf[QHr>y http://moon.nju.edu.cnV3P* ;-Conventional Methods for Software Engineering.. &-Conventional Methods for Software Engineering.- '&Basic Concepts W,gi_Software is instructions (computer programs) that when executed provide desired function and performance, data structures that enable the programs to adequately manipulate information, and documents that describe the operation and use of the programs.  < Basic ConceptsoN {:g|~-Nv z^SvQ gsQeN0 z^ {NR-NvYt[aTYtĉRvc0 eN :NNONN z^@bvDef0 @L L(Basic ConceptsSoftware Characteristics Software is developed or engineering, it is not manufactured in the classical sense. oN/f1u_Sb] zS b_bv N/f O~aIN N1u6R Nuv0 Software doesn t  wear out . oN NO x_c 0 Although the industry is moving toward component-based assembly, most software continues to be custom build. 'YYpeoN/fꁚ[v N/fǏ] gvgN~ňwegv0U" m  `n m= Basic Concepts Software Applications Systems software Real-time software Business software Engineering and scientific software Embedded software Personal computer software Web-based software Artificial intelligence software 0)Basic ConceptszGeneric Category for Software |~oN /edoN-NNmiddleware ^(uoN(  ,  Basic Concepts > Basic Concepts Evolution of Software oNvSU\Ǐ z ,{N6kN,{NS{:g Nv,{N*N z^vQs0R[(uvؚ~ z^QsKNMR1946-1956  ,{N6kN[(uvؚ~ z^Qs0RoN] zQsKNMR1956-1968  ,{ N6koN] z1968- 0(srz@ Basic ConceptsbSoftware crisis oNqS:g OBlsQ|1Y _S9(u1Yc ۏ^b^ S`'`] N~b2!*Basic ConceptsdNuoNqS:gvSV oN,gvyrp {tNXTv‰p (u7bv‰p oN_SNXTv‰p( ) )2ABasic ConceptsNuoNqS:gvSVoN,gvyrp oN_SۏU\`Qaϑ oN_S(ϑNċN {tTc6RoN_SǏ zvS_V oNl g x_c i_ oN~b8^asT@wۏbO9eSegv(GGZ+Basic ConceptsNuoNqS:gvSV{tNXTv‰p We already have a book that s full of standards and procedures for building software, won t that providemy people with everything they need to know? bN ]~ gNsQN_SoNvhQTĉvfNM| S[N N~NNcO@b gvQwSvOo`T43Da *.,Basic ConceptsNuoNqS:gvSV{tNXTv‰p My people have state-of-the-art software development tools, after all, we buy them the newest computers. bN]~ gN_}Y_YvoN_S]wQ N bNb ggev{:g0 If we get behind schedule, we can add more programmers and catch up. YgbN]~=TNR SNXRfYv z^XTegv Nۏ^0 `ZiZ%ZEZ!ZZHl!I.Basic ConceptsvNuoNqS:gvSV(u7bv‰p A general statement of objectives is sufficient to begin writing programs - we can fill in the details later. gN*N[vhvibc1\N@wKbQ z^N Y~SN(WNTQeEQ0 Project requirements continually change, but change can be easily accmodated because software is flexible. (u7b[oNvBl NeSS 6q oN/fgo up;mv SN{f0W9eR0 Jo(k')\n$B "BBasic Concepts NuoNqS:gvSVoN_SNXTv‰p Once we write the program and get it to work, our job is done. @boN_S1\/fQ z^v^lO[ЏL0 Until I get the program  running I have noway of assessing its quality. (W z^wckЏLKNMR l gRlċ0OvQ(ϑ0J?I\?)/Basic Concepts>NuoNqS:gvSVoN_SNXTv‰p The only deliverable work product for a successful project is the working program. N*NbRyv/UN^cNv1\/fSЏLv z^0 Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. oN] z1\/f^z^'Ye(uvech ُ_\MNObNvoN_SHes0 \St$JSt0Basic ConceptszNuoNqS:gvSVqQ gv‰p oNbeQuN'`ЏLNTv~b]\Ov^ NY N~b/fNN_[fZPv{US]\O0 F*(=1Basic ConceptsSoftware Engineering The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (NATO Science Committee)0CBasic ConceptsoN] z ^(u{:gyf[0pef[S{tyf[I{St N] zSSR0el㉳QoNv] z0vQ-N {:gyf[0pef[(uNg !jWN{l ] zyf[(uN6R[ĉ0W0MNOb,gSnx[Cga {tyf[(uNR0Dn0(ϑ0b,gI{{t0'Y~vyhQfN (rrwDBasic Concepts^oN] zvW,gQ[ oNel oN]wQ oN] zhQTĉ oN] z{t oN] zt %0/EBasic ConceptsoN] zvW,gSt %NSystem Engineering To construct a system model, the engineer should consider a number of restraining factors: Assumptions Simplifications Limitations Constraints Preferences>h@f?@ System EngineeringSystem Simulation Many computer -based systems interact by the real world in a reactive fashion. Real-time and embedded systems often fall into the reactive systems category.0A System Engineering;System engineering process: Business process engineering The system engineering process is called business process engineering when the engineering work focuses on a business enterprise. Product engineering The system engineering process is called product engineering when a product is to be built. d.<."B System EngineeringnBusiness process engineering The goal of business process engineering is to define architectures that will enable a business to use information effectively. Three different architectures must be analyzed and designed within the context of business objectives and goals: - data architecture - application architecture - technology infrastructureHaXFSystem Engineering|Business process engineering The data architecture provides a framework for the information needs of a business or business function. The application architecture encompasses those elements of a system that transform objects within the data architecture for some business purpose. The technology infrastructure provides the foundation for the data and application architectures.r`X|DGSystem Engineering C System EngineeringProduct engineering The goal of product engineering is to translate the customer s desire for a set of defined capability into a working product. To achieve this goal, product engineering must derive architecture and infrastructure. The architecture encompasses four distinct system components: software, hardware, data (databases), and people. A support infrastructure is established and includes the technology to tie the components together and the information that is used to support the components.(HSystem Engineering NSystem Engineering Product engineering System Analysis Identification of Need Feasibility Study Economic feasibility Technical feasibility Legal feasibility Alternatives Economic Analysis Technology Analysis h9'9 &kDSystem EngineeringRequirements engineering The outcome of the system engineering process is the specification of a computer-based system or product at the different levels. But the challenge facing system engineers (and software engineers) is profound: How can we ensure that we have specified a system that properly meets the customer s needs and satisfies the customer s expectations? There is no foolproof answer to this difficult question, but a solid requirements engineering process is the best solution we currently have.0ISystem EngineeringaRequirements engineering Requirements engineering provides the appropriate mechanism for understanding what the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution, specifying the solution unambiguously, validating the specification, and managing the requirements as they are transformed into an operational system.0IGJSystem EngineeringRequirements engineering process requirements elicitation requirements analysis and negotiation requirements specification system modeling requirements validation requirements management0!!ESystem EngineeringHow to model systems Every computer-based system can be modeled as an information transform using an input-processing-output template. To develop the system model, a system model template is used. The system engineer allocates system elements to each of five processing regions within the template: - user interface - input - system function and control - output - maintenance and self test PvtKSystem Engineering LSystem EngineeringSystem specification Introduction A. Scope and purpose of Document B. Overview 1. Objectives 2. Constraints Functional and Data Descriptions A. System architecture 1. System context diagram 2. SCD Descriptionv r!g _MSystem EngineeringSystem specification Subsystem Descriptions A. Architecture Diagram Specification for Subsystem n B. Architecture Dictionary C. Architecture Interconnect Diagrams and Description System Modeling and Simulation Results A. System Model Used for Simulation B. Simulation Results C. Special Performance Issues Project Issues A. Projecte Development Costs B. Project Schedule Appendices'sD T R;OSoftware Requirements AnalysisSoftware requirements engineering is a process of discovery, refinement, modeling, and specification. Both the software engineer and customer take an active role in software requirements engineering.PSoftware Requirements AnalysisRequirements analysis is a software engineering task that bridges the gap between system level requirements engineering and software design. TSoftware Requirements AnalysisRequirements engineering activities result in the specification of software s operational characteristics (function, data, and behavior), indicate software s interface with other system elements, and establish constraints that software must meet. QSoftware Requirements AnalysisIn requirements analysis and specification, communication content is very high, chance for misinterpretation or misinformation abound, and ambiguity is probable.  I know you believe you understood what you think I said, but I am not sure you realize that what you heard is not what I meant.  bwS`OvO`Of}vN`O:Nb@bv/fNHN FO/fb N[`O/f&TaƋ0R`O,T0Rvv^ N/fb@bcva` ...& 0 *$;$;(6RSoftware Requirements Analysis Software requirements analysis may be divided into five areas of effort: Problem recognition evaluation and synthesis modeling specification review2MKMJSSoftware Requirements AnalysisRequirements elicitation for software: Initiating the Process Facilitated Application Specification Techniques Quality Function Deployment Use Cases2'o'nUSoftware Requirements AnalysisAnalysis Principles: The information domain of a problem must be represented and understood. The functions that the software is to perform must be defined. The behavior of the software (as a consequence of external events) must be represented. The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion. The analysis process should move from essential information toward implementation detail. 0\&Software Requirements Analysis?Guiding principles for requirements engineering Understand the problem before you begin to create the analysis model. Develop prototypes that enable a user to understand how human/machine interaction will occur. Record the origin of and the reason for every requirements. Rank requirements work to eliminate ambiguity.201`.Software Requirements AnalysisoNBlRgNXT^wQYvyr_ UNONNbavi_ ͑etetOKNb:NTy;bR v^9hncTy;bR~TQv㉳QRl UNNTyvNQzbmmvSYDe-N8TSp`S_vnc Yt(u7bvsXSWwƋ[lka-Software Requirements AnalysisoNBlRgNXT^wQYvyr_ wQYb|~vlxNToNR^(uN(u7bsXvR wQYo}YvfNbTS4Yb__ۏLTNbcavR wQ g e w0Rh(g S w0Rhg vR0IZYV Software Requirements Analysis_How to analyze software requirements? Analyzing the information domain Modeling Partitioning 0'9'7W!Software Requirements AnalysisKey to understanding of software requirements All software applications can be collectively called data processing. Interestingly, this term contains a key to our understanding of software requirements. Software is built to process data, to transform data from one form to another; that is, to accept input, manipulate it in some way, and produce output. This fundamental statement of objective is true for all software we build.H.-5<X"Software Requirements AnalysisfThe information domain information content ant relationships information flow information structure0ONY#Software Requirements AnalysisThe information domain Information content represents the individual data and control objects that constitute some larger collection of information transformed by the software. Data and control objects can be related to other data and control objects, and during analysis of the information domain these relationships should be defined. Information flow represents the in manner in which data and control change as each moves through a system. Information structure represents the internal organization of various data and control items.h'[H]'Software Requirements Analysis The analysis model must achieve three primary objectives: to describe what the customer requires to establish a basis for the creation of a software to define a set of requirements that can be validated once software is built.0>>{ESoftware Requirements AnalysisKAnalysis Modeling Data modeling Functional modeling Behavioral modeling <87^(Software Requirements Analysis zDSoftware Requirements AnalysisqData Dictionary a repository that contains descriptions of of data objects consumed or produced by the software.0a`|FSoftware Requirements AnalysisEntity Relation Diagram (ERD) The ERD depicts relationships between data objects. The ERD is the notation that is used to conduct the data modeling activity. The attributes of each data object noted in the ERD can be described using a data object description. F}GSoftware Requirements AnalysisData Flow Diagram (DFD) The DFD serves two purposes: (1) to provide an indication of how data are transformed as they move through the system and (2) to depict the functions (and subfunctions) that transform the data flow. The DFD provides additional information that is used during the analysis of information domain and serves as a basis for modeling function. A description of each function presented in the DFD is contained in a process specification (PSPEC).4 ~HSoftware Requirements AnalysisState Transition Diagram (STD) The STD indicates how the system behaves as a consequence of external events. To accomplish this, the STD represents the various modes of behavior (called states) of the system and the manner in which transitions are made from state to state. The STD serves as the basis for behavioral modeling. Additional information about the control aspects of the software is contained in the control specification (CSPEC).J ISoftware Requirements AnalysisbData modeling What are the primary data objects to be processed by the system: What is the composition of each data object and what attributes describe the object? Where do the objects currently reside? What are the relationships between each object and other objects? What are the relationships between the objects and the processes that transform them?(UUJSoftware Requirements AnalysisEntity Relation Diagram (ERD) Data objects: A data object is a representation of almost any composite information that must be understood by software. Attributes: define the properties of a data object and take on one of three different characteristics: (1) name an instance of the data object, (2)describe the instance, and (3) make reference to another instance in another table. Relationships: Data objects are connected to one another in different ways.0LSoftware Requirements Analysis MSoftware Requirements AnalysisFunctional modeling Information is transformed as its flows through a computer-based system. The system accepts input in a variety of forms; applies hardware, software, and human elements to transform it; and produces output in a variety of form.0NSoftware Requirements AnalysisdFundamental system model oN|~vhQ萟Rh:ybN*NUSNvOo`SbcǏ z(_)Software Requirements AnalysisBasic DFD Notation External entity: A producer or consumer of information that resides outside the bounds of the system to be modeled. Process: A transformer of information that resides within the bounds of the system to be modeled. Data object: the arrowhead indicates the direction of data folw. Data store: A repository of data that is to be stored for use by one or more process.(mm$Xb,Software Requirements AnalysisOuXTvƉ|~  c+Software Requirements Analysis d*Software Requirements Analysis OSoftware Requirements Analysis.Behavior modeling States Transitions Events0PSoftware Requirements Analysis QSoftware Requirements AnalysisStructured Analysis Creating an entity/relationship diagram Creating a data flow model Control specification Process specification Creating a data dictionaryTB+Z$Software Requirements Analysis$The Software Requirements Specification Introduction A. System reference B. Overall description C. Software project constraints Information Description A. Information content representation B. Information flow representation (1. Data flow 2. Control flow) (au(`uRSoftware Requirements AnalysisThe Software Requirements Specification Functional Description A. Functional partitioning B. Functional description 1. Processing narrative 2. Restrictions/limitations 3. Performance requirements 4. Design constraints 5. Supporting diagrams C. Control Description 1. Control specification 2. Design constraintsF(V(PSSoftware Requirements AnalysisThe Software Requirements Specification Behavioral Description A. System states B. Events and actions Validation and Criteria A. Performance bounds B. Classes of tests C. Expected software response D. Special considerations Bibliography Appendix (3z(3z[%Software Requirements Analysis4Specification Review Complete Consistent Accurate0TDesign Software design sits at the technical kernel of software engineering and is applied regardless of the software process model that is used. Beginning once software requirements have been analyzed and specified, software design is the first of three technical activities - design, code generation, and test - that are required to build and verify the software. The importance of software design can be started with a single word - quality. Design provides us with representations of software that can be assessed for quality.4 WUDesign VDesignThe data design transforms the information domain model created during analysis into the data structures that will be required to implement the software. The architectural design defines the relationship between major structural element of software. The interface design describes how the software communicates within itself, with systems that interoperate with it, and with humans who use it. The component-level design transforms structural elements of software architecture into a procedural description of software components.l LoWDesignDesign process goal: The design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer. The design must be a readable, understandable guide for those who generate code and for those who test and subsequently maintain the software. The design should provide a complete picture of the software, addressing the data, functional, and behavioral domain from an implementation perspective.0XDesignAbstraction Abstraction permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details. 2  YDesignRefinement Refinement is actually a process of elaboration. We begin with a statement of function (or description of information) that is defined at a high level of abstraction. That is, the statement describes function or information conceptually but provides no information about the internal workings of the function or the internal structure the information. Refinement causes the designer to elaborate on the original statement, provide more and more details as each successive refinement (elaboration) occurs.>  $ ZDesignYAbstraction and Refinement Abstraction and refinement are complementary concepts. Abstraction enables a designer to specify procedure and data and yet suppress low-level details. Refinement helps the designer reveal low-level details as design progresses. Both concepts aid the designer in creating a complete design model as the design evolves.0?>[DesignPModularity !jWWS Software is divided into separately named and addressable components, often called modules !jWW , that are integrated to satisfy problem requirements.\S7, \5\Design!jWW !jWW/fpencf0SgbLSI{ z^[avƖT /fUSr}T Tvv^NSNǏ TW[eg OYǏ z0Qpe0P[ z^0[0moduleI{0?D(;dDesignPArgument for modularity C(x) be a function that defines the perceived complexity of a problem x. E(x) be a function that defines the effort required to solve a problem x. For two problems, p1 and p2 if C(p1) > C(p2), then E(p1) > E(p2) C(p1 + p2) > C(p1) + C(p2) E(p1 + p2) > E(p1) + E(p2)>*6cDesign eDesignHow do we define an appropriate module of a given size? Modular decomposability Modular composability Modular understandability Modular continuity Modular protection29n9mY@fDesignSoftware Architecture Software architecture is the hierarchical structure of program components (modules), the manner in which these components interact, and the structure of data that are used by the components. One goal of software design is to derive an architectural rendering of a system. This rending serves as framework from which more detailed design activities are conducted.0lkgDesignASoftware Architecture Control hierarchy Structured Partitioning0+*hDesign iDesignData Structure Data structure is a representation of the logical relationship among individual elements of data. Data structure dictates the organization, methods of access, degree of associativity, and processing alternatives for information. 0 0jDesignSoftware Procedure Software architecture (program structure) defines control hierarchy without regard to the sequence of processing and decisions. Software procedure focuses on the processing details of each module individually. Procedure must provide a precise specification of processing, including sequence of events, exect decision points, repetitive operations and even data organization and structure.0AQkDesignInformation Hiding Modules should be specified and designed so that information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information.0lDesignEffective modular design: Function independence (!jWWRrz'`) The concept of function independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding. We should design software so that each module addresses a specific subfunction of requirements and has a simple interface when viewed from other parts of the program structure. T<31 42  cq>Design!jWWRrz'` !jWWrz/fc_SwQ grzR NTvQ[!jWWKNl gǏYvvN\O(uv!jWW0 !jWWRrzvaIN RRrR {ScS fNYNT\O_S TNoN rzv!jWWfNKmՋT~b0 X & ' % &`mDesignqualitative criteria for measuring independence: Cohesion (QZ'`) Coupling (&T'`) F2"0 4= oDesignCohesion Cohesion is a natural extension of the information hiding concept. A cohesive module performs a single task within a software procedure, requiring little interaction with procedures being performed in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. We always strive for high cohesion, although the mid-range of the spectrum is often acceptable.0  pDesignSpectrum for cohesion: Coincidentally cohesion (vP6qQZ)N~NRsQ|~gceNO Logically cohesion (;QZ)N~NR(W; N T^\N{| OYGW:NQNO temporal (eQZ)N~NR_{(W TNkeQgbLNO Communicational cohesion (Oo`QZ)!jWWQ@b gCQ }_(uv TveQbQpencƖT-N Sequential cohesion (z^QZ)!jWW-Nvk*NCQ }/fN TNR'}[vsQ N*NCQ }vQ/f NN*NCQ }veQؚ Functional cohesion (RQZ)N*N!jWW[bN*NNN[bN*NRؚ + !0t0  .nDesign0Coupling Coupling is a measure of interconnection among modules in a software structure. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. In software, we strive for lowest possible coupling.0 ' &s@DesignnSpectrum for coupling: No direct coupling (eNUOޏc)$N*N!jWW-NvkN*Nrz0W]\O NSN*NvX[(WgNO&T 0 Data coupling (penc&T)$N*N!jWW|_dkǏSpeNbcOo` NNbcvNN/fpencNO&T 0 Control coupling (c6R&T)$N*N!jWWKN OvOo` gc6RbR-N&T 0Z+&6,)%tBDesignSpectrum for coupling: Common coupling (lQqQsX&T)$N*NbY*N!jWWǏN*NlQqQsXvN\O(u 1. N*NX[penc N*NSpencNO&T  2. X[SpencNO---NKN 0 Content coupling (Q[&T) 1. N*N!jWWSN*N!jWWvQpenc 2. $N*N!jWW gNR z^Nx͑S 3. N*N!jWW NǏck8^eQS lyvSN*NvQ 4. N*N!jWW gY*NeQSasT@w!jWW gY*NR 0h.-iKq,)JowDDesignsQN&T'`TQZ'`vSR RN=\S1_v&T'`=\ϑO(upenc&T \(uc6R&T P6RlQqQsX&TvV [hQ N(uQ[&T RN=\SؚvQZ'`RN=\SؚvQZ'` v^Ƌ+RQNOQZ'`Pa`xEDesignDesign heuristics for effective modularity Evaluate the  first iteration of the program structure to reduce coupling and improve cohesion. 9eۏoN~g cؚ!jWWQZ'` MNO!jWW&T'`0 Attempt to minimize structures with high fan-out; strive for fan-in as depth increases. =\ϑQ\ؚGbQ~gvpev @wm^vXRNSfYvGbeQ0GbQǏ'YasT@w!jWWǏR YBg c6RTOSǏYv N~!jWW0N,eg vB\GbQؚ -NGbQ\ NOB\ؚGbeQ0N-"-aXP,XPyFDesignDesign heuristics for effective modularity Keep the scope of effect of a module within the scope of control of that module. !jWWv\O(uVOc(W!jWWvc6RVQ0!jWWv\O(uV/fc!jWW-NN*N$Re@bq_Tv@b gvQ[!jWW!jWWvc6RVc!jWW,gNS@b gvcbcN^\N[v!jWW0 Evaluate module interfaces to reduce complexity and redundancy. RNMNO!jWWcSv YBg z^0!jWWcSv YBg'`/f_woNvN*N;NSV0cS^O_Oo` O{USv^NN!jWWvRN0F--QO@?,~O@>zGDesignDesign heuristics for effective modularity Strive for  controlled entry modules by avoiding  pathological connections. USeQSUSQSv!jWW0MQQ[&T fNt㉌T~b0 Define modules whose function is predictable. !jWWvR^SNKm0v TveQ^ gv TvQ &TRNt0KmՋT~b0F--N.(,{.'qDesignGData design Architectural design Interface design Component design rDesign Data design Data design creates a model of data and/or information that is represented at a high level of abstraction. This data model is then refined into progressively more implementation-specific representations that can be processed by the computer-based system. 0  sDesignData design Data structure: At the program component level, the design of data structures and associated algorithms required to manipulate them is essential to the creation of high-quality applications. Database: At the application level, the translation of a data model into a database is pivotal to achieving the business objectives of a system. Data warehouse: At the business level, the collection of information stored in disparate databases and reorganized into a  data warehouse enables data mining or knowledge discovery that can have an impact on the success of the business itself.~ F uDesign^Architectural design Architectural styles Mapping requirements into a software architecture <HGtDesignArchitectural styles Data-centered architectures Data-flow architectures Call and return architectures Object-oriented architectures Layered architectures0vDesignMapping requirements into a software architecture The call and return architecture. Structured design (data flow-oriented design method)  3ZwDesign Structured design provides a convenient transition from a data flow diagram to software architecture: the type of information flow is established; flow boundaries are indicated; the DFD is mapped into program structure; control hierarchy is defined; resultant structure is refined using design measures and heuristics; and the architectural description is refined and elaborated.2kk}JDesignTransform flow (SbcAm) Oo`leQۏeQ|~ Te1uYb__SbcbQb__0ۏeQ|~vOo`ǏSbc-N_ ~ǏR]YtNTQl@wQSbcbYb__y_|~0 F]L~KDesign LDesignTransaction flow (NRAm) NRAmvyrp/fpencl@wc6ebYNLuvOo`lbcbN*NNRy 6qT {勋NRyv

4Designh]wQ--PDL(Program Design Language) PDLwQ g%Nf}YY/fSNke0WSsoNv:w N SNOk*N:w(WۏL z0KmՋTNNKNMRNN~ck N >fW0WMNOTv_S6kT~b6kv9(u0 Y[Sbckĉv[g0^ckĉv[gThg Nye_00Design Y[vhQ fn'` oNSbNoNBlĉ  Code Generation z^'`v ] z‰p 1 OfNNxы 2 ы z^vRHe 3 nNxvSy i'` 4 _S]wQvS)R(u'` 5 nNxvS~b'`0 b/g'`‰p 1 YBgpenc~g 2 [e|~ 3 yrk^(uWt B  BxCode Generation z^vR{|  cba~+RR{| NO~:ghV Gl ؚ~N:ghVesQ [s'` uؚ~ؚba~ g(uNcRvbR *6NMCode Generation> z^vR{|  c^(uWR{| (u N(u Code Generation z^vR{|  cbR'`(R{| z^S+Tz^bR v^S+T gv^SbR R^_QNR^_{Bl Q~QNQ~{Bl *8ONCode Generation z^vR{|  c\O(ue_R{| }TN_ NvQc ZPNHN ؏/f `7hZP v^cv~bR/f}TN_v HQZPNHN0TZPNHNĉ[}YNfnxv!k^0 \O(u_Nv^vc-N Nf>f wQvQ~bRgbLvHQT!k^0 f^    GqCode GenerationL z^vR{|  cc~+RR{| R'` '` [s'`'&Code Generation^ z^vR{|  c!jb[‰NLuv҉^R{| [a_bT[a ^[a_0/Code GenerationB z^vR{|  cvQ[e_R{| Qpe_ ;_ "!Code Generation N, aϑgy z^/f&TTNyr[vyv ^Q NbNNV } ^(uW {lT{ YBg'` oNЏLsX (u7bBl-NsQN'`ebv penc~gv YBg'` oN_SNXTvwƋ4ls^ S(uvы|~41A#AqCode Generation xΘ ' ZCode Generation z^/edsX s(W zǏ z'YY(WN~CASE]wQv/ec NۏL ُ~]wQR[b0ы0Ջ0yv{tI{N|RNR ُ~]wQ g:gƖb(WNwb_b z^/edsX0 aa$ <Code Generation z^/edsX^wQYvyr'` (u'`(uN N Tv0 N Tv^(uWT_Sel ^'`Ǐ_sQn M6RQ N Tv z^/edsX[O _>e'`eO0WXRe]wQ /ec Y(u/ecS Y(u!jWWvX[P0"}_Tg~b ꁧc'`Oꁫd\OvcknxNOS &^penc^cOpenc^:g6R X[P0{t]_SvoNNT O(ϑ gRNcؚ@b_SoNv(ϑ 8T_(u7b(u7b?aaO(u wQ g^:WzNRwckcؚoNuNR0 @ f0TestingSoftware testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation. The importance of software testing and its implications with respect to software quality cannot be overemphasized. It is not unusual for a software development organization to expend between 30 and 40 percent of total project effort on testing. In the extreme, testing of human-rated software can cost three to five times as much as all other software engineering steps combined!g1TestingvIn fact, testing is the one step in the software process that could be viewed as destructive rather than constructive.h2TestingTesting Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is one that has a high probability of finding an as-yet-undiscovered error. A successful test is one that uncovers an as-yet-undiscovered error.4  i3Testing.Testing Principles All tests should be traceable to customer requirements. Tests should be planned long before testing begins. The Pareto principle applies to software testing. (KmՋSs-Nv80%_SwnN z^!jWW-Nv20%) Testing should begin  in the small and progress toward testing  in the large. Exhaustive testing is not possible. To be most effective, testing should be conducted by an independent third party.^" ! &j4TestingmTestability Operability Observability Controllability Decomposability Simplicity Stability Understandability4 b  ` Gk5TestingB A engineered product can be tested in one of two ways: Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational while at the same time searching for errors in each function. (Black-box testing) Knowing the internal workings of a product, test can be conducted to ensure that  all gears mesh, that is internal operations are performed according to specifications and all internal components have been adequately exercised. (White-box testing)>@  7 l6Testing0Black-box testing (ў{KmՋ0RKmՋ) When computer software is considered, black-box testing alludes to test that are conducted at the software interface. Although they are designed to uncover errors, black-box test are used to demonstrate that software functions are operational, that input is properly accepted and output is correctly produced, and that the integrity of external information is maintained. A black-box test examines some fundamental aspect of a system with little regard for the internal logical structure of the software. XZZ  &0Testing wz=\RKmՋ ON*N z^3*NteWveQpenc 傡{:gvW[:N16MO Rk*NpencSSv

 RT$*TestingTest case design KmՋ(uOvW,gvh/fnx[N~KmՋpenc vQSsN*NbN{|visgؚ0 White-box testing methods Black-box testing methods0E517, &5TestingTest case design (White-box testing Methods) Using white-box testing methods, the software engineer can derive test cases that (1) guarantee that all independent paths within a module have been exercised at least once, (2) exercise all logical decisions on their true and false sides, (3) execute all loops at their boundaries and within their operational bounds, and (4) exercise internal data structures to ensure their validity. P3-]2TestingP;v Sv $R[v agNv $R[/agNv agN~Tv _v2# )Testings~QY N z^ #include(stdio.h); main(){ float A, B, X; scanf( %f %f %f , &A, &B, &X); if (A>1)&&(B==0) X=X/A; if (A==2)||(X>1) X=X+1; printf( %f , X)} z^vKmՋpencNR+RnSv0$R[v0agNv0agN~TvT_iv;vhQ0 : C4Z &Q  2Testing Sv SYYvKmՋpenc OKmՋ z^-Nk*NS\gbLN!k0 :NOk*NSgbLN!k z^vgbL_^/fsacbed A=2, B=0, X=4 傊bbpv$R[Q:N (A==2)||(X<1) ,UJB TestingR $R[v SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[vkySv~g\gbLN!k0 YR+Rv_sacbedTsabdb sacbdTsabedv$N~KmՋpenc n $R[vhQ 1 A=3, B=0, X=3 (sacbd) 2 A=2, B=1, X=1 (sabed) DfLTestingP agNv SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[h_-Nvk*NagNS0RTySv~g0 (WapA>1, A1, B=0, B`"0 (WbpA=2, A `"2, X>1, X 10 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)6D (3jE)Testing $R[/agNv SYYvKmՋpenc O_$R[h_-Nvk*NagNS0RTySv~g Nk*N$R[h__NS0RTySv~g0 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)@E3E2>GTestingR agN~Tv SYYvKmՋpenc O_$R[h_-NagNvTyS~T\QsN!k0 gkQySvagN~T 1 A>1, B=02 A>1, B `"0 3 A 1, B=04 A 1, B `"0 5 A=2, X>16 A=2, X 1 7 A `" 2, X>18 A `" 2, X 10 KmՋpenc 1 A=2, B=0, X=4 (sacbed, 1,5) 2 A=2, B=1, X=1 (sabed, 2,6) 3 A=1, B=0, X=2 (sabed, 3,7) 4 A=1, B=1, X=1 (sabd, 4,8)L*/"l?m TestingV _v SYYvKmՋpenc O_ z^vkagS_\gbLN!k z^V-N gs Rk*Ns\~ǏN!k 0 KmՋpenc 1 A=1, B=1, X=1 (sabd) 2 A=1, B=1, X=2 (sabed) 3 A=3, B=0, X=1 (sacbd) 4 A=2, B=0, X=4 (sacbed)@<o<jZKTesting@Test case design (Black-box testing) Black-box testing attempts to find errors in the following categories: (1) incorrect or missing functions, (2) interface errors, (3) errors in data structures or external database access, (4) behavior or performance errors, and (5) initialization and termination errors. Pw&QTestingkTest case design (Black-box testing) Test are designed to answer the following questions: How is functional validity tested? How is the system behavior and performance tested? Is the systems particularly sensitive to certain input values? How are the boundaries of a data class isolated? What effect will specific combinations of data have on system operation? F[%6TestingTest case design (Black-box testing) Equivalence partitioning I{NRR Boundary value analysis Lu V$+]=U%| >VTestingRegression testing (VR_KmՋ) In the context of an integration test strategy, regression testing is the re-execution of some subset of tests that have been conducted to ensure that changes have not propagated unintended side effects.B(Testing~ňKmՋelk vT N~ňl NqR!jWWY(WKmՋ6keg|~v;NR egSscSYvbc!jWW SG0RNKNvT|vKmՋVNOB\sQ.!jWW-NvSsZf0 ꁕ^T N~ňl Nbc!jWWYvqR!jWW(WgTN*N!jWWňeQKNMR oN[SOv^ NX[(W0 N,O(u$Nyelv~T KmՋ6kegǑ(uvT N~ňl TgǑ(uꁕ^T N~ňl _Y`Q NNSN TeۏL0(  Testing/Integration test documentation An overall plan for integration of the software and a description of specific tests are documented in a test specification. This document contains a test plan, and a test procedure, is a work product of the software process, and becomes part of the software configuration.0TestingTest specificationKmՋffN 1. KmՋV 2. KmՋR KmՋebbKmՋRR:NQ*Neb R+RKmՋoNvTyyr'` ۏ^ YoNqR!jWWTbc!jWW sXNDn 3. KmՋek ,{nKmՋ6kvf~ňv!k^KmՋvvT^Kmv!jWWN(uv]wQbb/gYoNvfKmՋ(uOpenc0 ,{nKmՋ6kvg~g 4. [EKmՋ~g 5. SDe 6. DU_ j*6@+7  0 )  Testing0Validation testing ( gHe'`KmՋ)oN gHe'`S_oNvRT'`Y T(u7bTtg_v7h RoN/f gHev0 `7h{/fTtvggBlf /flQeNKmՋNXT 0 elў{KmՋl0 hQhQ萄vRBl_0RnhQ萄v'`Bl0RNech/fcknxvv^NONO(uvQ[Bl_N0RNSbf~b'`0fy i'`0|Q['`0QꁨRb` YI{ 0 SQsv~gRN'`Nb/gBlNSsNb/gBl NNv0WeN(u7bOSFU 0 oN|ReN Y[nxoN|ReNvT*NR]ZP}Y ]~v v^ g_v~f \O:NNT~b6kvW,gDe0 :>Testing4System testing (|~KmՋ) Software is only one element of a large computer-based system. oNNN/fWN{:gv|~vN*N~bR0 Software is incorporated with other system elements, and a series of system integration and validation tests are conducted. |~KmՋ/fcboNN|~vvQN }Tv^ v^ۏLN|Rv|~~ňS gHe'`KmՋ0 @},?{/R?|(Testing~System testing System tests fall outside the scope of the software process and are not conducted by solely by software engineering. However, steps taken during software design and testing can greatly improve the probability of successful software integration in the larger system. |~KmՋ]~=0RNoN] ztuKNY v^Ng\1uoN_Sbb FO/f(WoNTKmՋ6k@bۏLv]\O\ gRNbR0WboNTv^0Rf'Yv|~KN-N0 A classic system testing problem is  finger-pointing . This occurs when an error is uncovered, and each system element developer blames the other for the problem. xQWv|~KmՋ/f vNc# S_SsNN*NNT T*N|~Rv_SL#+RNvR gku0v L8   #6G2TestingBWhat software engineers do in system testing: design error-handling paths that test all information coming from other elements of the system; [cQYt_ NKmՋN|~vvQNR OegvhQOo` conduct a series of tests that simulate bad data or other potential errors at software interface; ۏLN|RKmՋ !jN(WoNcSYQsv OWvpenc bvQNSv record the results of tests to use as  evidence if finger-pointing does occur. bKmՋ~gU_ Neg YgQsNvc#v`Qe 1\SNcQnx[v9hnc participate in planning and design of system tests to ensure that software is adequately tested.SN|~KmՋRN NOEQR0WKmՋoN|~0r.`"r.  Pb#P#`s=TestingCriteria for Completion of Testing S gS_KmՋEQR^ASRcя100%e MbOKmՋSsvR_0RS%c0 0$%$#$#$t>TestingVerification and Validation Software testing is one element of a broader topic that is often referred to as verification and validation (V&V). Verification refers to the set of activities that ensure that software correctly implements a specific function. Validation refers to a different set of activities that ensure that the software that has been bulit is traceable to customer requirements.jqP f a'u?TestingVerification and Validation Verification:  Are we building the product right? Validation:  Are we building the right product? The definition of V&V encompasses many of the activities that we have referred as software quality assurance (SQA). Although testing plays an extremely important role in V&V, many other activities are also necessary.49 ( ~lv@TestingDebugging ( An ART) Debugging occurs as a consequence of successful testing. That is, when a test case uncovers an error, debugging is the process that results in the removal of the error. Although debugging can and should be an orderly process, it is still very much an art. The external manifestation of an error and the internal cause of the error may have no obvious relationship to one another. The poorly understood mental process that connects a symptom to a cause is debugging.< wATesting xB MaintenanceAny work done to change a software system after is is in operation is considered to be maintenance. 55% - 80% of software budget is spent on maintenance. Maintenance is more difficult than development for software system, and requires more creative works.*W yC      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ MaintenanceCorrective maintenance wck'`~b Adaptive maintenance ^'`~b Perfective maintenance [U'`~b Preventive maintenance 2'`~b r  Maintenancenq_ToN~bvV } |~v'Y\ |~vt^ ~gvTt'` ^(u{|WTNR^ vQ[ z^ penc^I{  -87 Maintenance<oN~bvek t㉰s g|~ O9es g|~ ͑enx|~  MaintenanceoN~bvek hg(u7bvBlTffN T(u7bT_SۏLFU hg z^Tech nx[ z^vMOnT'`( xvz z^vO9eSL'`TO9eS_wvoR\O(u [9eSRۏLx O9e z^echT z^^00 _ ^g Maintenance~O9e z^vSR N_c[ z^v(ϑ Oc z^Θ =<I:K `9  - ,(Mbe+NP[ ^]\)*d    cba` =  QORSTVWXYZ_`1acdfghijklmnpoqrst;uvxz}| xyzuvrstjlqmdfghnke!i9:EGCBA@?>=<DKHIJTC x1?@87 g4CdCdv 0p"ppp@ uʚ;2Nʚ;<4!d!d{ 0<4dddd{ 0? %>Software Engineering o N ] z  Ng [ N WSN'Yf[{:gyf[Nb/g| http://cs.nju.edu.cn/people/lixuandong/softE.html&zH1~H :ContentsDConventional Methods for Software Engineering O~oN] zel Object-Oriented Software Engineering bT[aoN] z Software Process, Management, and Quality oNǏ z0{tN(ϑJ. % *p.%* Reference Se.s Roger S. Pressman Software Engineering: A Practitioner s Approach McGraw-Hill 1982(1/e), 1987(2/e), 1992(3/e) 1997(4/e), 2001(5/e) SƉSbT[a^!jb/g R _ W SN*zz*)Y'Yf[QHr>y http://moon.nju.edu.cnV3P* ;-Conventional Methods for Software Engineering.. &-Conventional Methods for Software Engineering.- '&Basic Concepts W,gi_Software is instructions (computer programs) that when executed provide desired function and performance, data structures that enable the programs to adequately manipulate information, and documents that describe the operation and use of the programs.  < Basic ConceptsoN {:g|~-Nv z^SvQ gsQeN0 z^ {NR-NvYt[aTYtĉRvc0 eN :NNONN z^@bvDef0 @L L(Basic ConceptsSoftware Characteristics Software is developed or engineering, it is not manufactured in the classical sense. oN/f1u_Sb] zS b_bv N/f O~aIN N1u6R Nuv0 Software doesn t  wear out . oN NO x_c 0 Although the industry is moving toward component-based assembly, most software continues to be custom build. 'YYpeoN/fꁚ[v N/fǏ] gvgN~ňwegv0U" m  `n m= Basic Concepts Software Applications Systems software Real-time software Business software Engineering and scientific software Embedded software Personal computer software Web-based software Artificial intelligence software 0)Basic ConceptszGeneric Category for Software |~oN /edoN-NNmiddleware ^(uoN(  ,  Basic Concepts > Basic Concepts Evolution of Software oNvSU\Ǐ z ,{N6kN,{NS{:g Nv,{N*N z^vQs0R[(uvؚ~ z^QsKNMR1946-1956  ,{N6kN[(uvؚ~ z^Qs0RoN] zQsKNMR1956-1968  ,{ N6koN] z1968- 0(srz@ Basic ConceptsbSoftware crisis oNqS:g OBlsQ|1Y _S9(u1Yc ۏ^b^ S`'`] N~b2!*Basic ConceptsdNuoNqS:gvSV oN,gvyrp {tNXTv‰p (u7bv‰p oN_SNXTv‰p( ) )2ABasic ConceptsNuoNqS:gvSVoN,gvyrp oN_SۏU\`Qaϑ oN_S(ϑNċN {tTc6RoN_SǏ zvS_V oNl g x_c i_ oN~b8^asT@wۏbO9eSegv(GGZ+Basic ConceptsNuoNqS:gvSV{tNXTv‰p We already have a book that s full of standards and procedures for building software, won t that providemy people with everything they need to know? bN ]~ gNsQN_SoNvhQTĉvfNM| S[N N~NNcO@b gvQwSvOo`T43Da *.,Basic ConceptsNuoNqS:gvSV{tNXTv‰p My people have state-of-the-art software development tools, after all, we buy them the newest computers. bN]~ gN_}Y_YvoN_S]wQ N bNb ggev{:g0 If we get behind schedule, we can add more programmers and catch up. YgbN]~=TNR SNXRfYv z^XTegv Nۏ^0 `ZiZ%ZEZ!ZZHl!I.Basic ConceptsvNuoNqS:gvSV(u7bv‰p A general statement of objectives is sufficient to begin writing programs - we can fill in the details later. gN*N[vhvibc1\N@wKbQ z^N Y~SN(WNTQeEQ0 Project requirements continually change, but change can be easily accmodated because software is flexible. (u7b[oNvBl NeSS 6q oN/fgo up;mv SN{f0W9eR0 Jo(k')\n$B "BBasic Concepts NuoNqS:gvSVoN_SNXTv‰p Once we write the program and get it to work, our job is done. @boN_S1\/fQ z^v^lO[ЏL0 Until I get the program  running I have noway of assessing its quality. (W z^wckЏLKNMR l gRlċ0OvQ(ϑ0J?I\?)/Basic Concepts>NuoNqS:gvSVoN_SNXTv‰p The only deliverable work product for a successful project is the working program. N*NbRyv/UN^cNv1\/fSЏLv z^0 Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down. oN] z1\/f^z^'Ye(uvech ُ_\MNObNvoN_SHes0 \St$JSt0Basic ConceptszNuoNqS:gvSVqQ gv‰p oNbeQuN'`ЏLNTv~b]\Ov^ NY N~b/fNN_[fZPv{US]\O0 F*(=1Basic ConceptsSoftware Engineering The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (NATO Science Committee)0CBasic ConceptsoN] z ^(u{:gyf[0pef[S{tyf[I{St N] zSSR0el㉳QoNv] z0vQ-N {:gyf[0pef[(uNg !jWN{l ] zyf[(uN6R[ĉ0W0MNOb,gSnx[Cga {tyf[(uNR0Dn0(ϑ0b,gI{{t0'Y~vyhQfN (rrwDBasic Concepts^oN] zvW,gQ[ oNel oN]wQ oN] zhQTĉ oN] z{t oN] zt %0/EBasic ConceptsoN] zvW,gSt %NSystem Engineering To construct a system model, the engineer should consider a number of restraining factors: Assumptions Simplifications Limitations Constraints Preferences>h@f?@ System EngineeringSystem Simulation Many computer -based systems interact by the real world in a reactive fashion. Real-time and embedded systems often fall into the reactive systems category.0A System Engineering;System engineering process: Business process engineering The system engineering process is called business process engineering when the engineering work focuses on a business enterprise. Product engineering The system engineering process is called product engineering when a product is to be built. d.<."B System EngineeringnBusiness process engineering The goal of business process engineering is to define architectures that will enable a business to use information effectively. Three different architectures must be analyzed and designed within the context of business objectives and goals: - data architecture - application architecture - technology infrastructureHaXFSystem Engineering|Business process engineering The data architecture provides a framework for the information needs of a business or business function. The application architecture encompasses those elements of a system that transform objects within the data architecture for some business purpose. The technology infrastructure provides the foundation for the data and application architectures.r`X|DGSystem Engineering C System EngineeringProduct engineering The goal of product engineering is to translate the customer s desire for a set of defined capability into a working product. To achieve this goal, product engineering must derive architecture and infrastructure. The architecture encompasses four distinct system components: software, hardware, data (databases), and people. A support infrastructure is established and includes the technology to tie the components together and the information that is used to support the components.(HSystem Engineering NSystem Engineering Product engineering System Analysis Identification of Need Feasibility Study Economic feasibility Technical feasibility Legal feasibility Alternatives Economic Analysis Technology Analysis h9'9 &kDSystem EngineeringRequirements engineering The outcome of the system engineering process is the specification of a computer-based system or product at the different levels. But the challenge facing system engineers (and software engineers) is profound: How can we ensure that we have specified a system that properly meets the customer s needs and satisfies the customer s expectations? There is no foolproof answer to this difficult question, but a solid requirements engineering process is the best solution we currently have.0ISystem EngineeringaRequirements engineering Requirements engineering provides the appropriate mechanism for understanding what the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution, specifying the solution unambiguously, validating the specification, and managing the requirements as they are transformed into an operational system.0IGJSystem EngineeringRequirements engineering process requirements elicitation requirements analysis and negotiation requirements specification system modeling requirements validation requirements management0!!ESystem EngineeringHow to model systems Every computer-based system can be modeled as an information transform using an input-processing-output template. To develop the system model, a system model template is used. The system engineer allocates system elements to each of five processing regions within the template: - user interface - input - system function and control - output - maintenance and self test PvtKSystem Engineering LSystem EngineeringSystem specification Introduction A. Scope and purpose of Document B. Overview 1. Objectives 2. Constraints Functional and Data Descriptions A. System architecture 1. System context diagram 2. SCD Descriptionv r!g _MSystem EngineeringSystem specification Subsystem Descriptions A. Architecture Diagram Specification for Subsystem n B. Architecture Dictionary C. Architecture Interconnect Diagrams and Description System Modeling and Simulation Results A. System Model Used for Simulation B. Simulation Results C. Special Performance Issues Project Issues A. Projecte Development Costs B. Project Schedule Appendices'sD T R;OSoftware Requirements AnalysisSoftware requirements engineering is a process of discovery, refinement, modeling, and specification. Both the software engineer and customer take an active role in software requirements engineering.PSoftware Requirements AnalysisRequirements analysis is a software engineering task that bridges the gap between system level requirements engineering and software design. TSoftware Requirements AnalysisRequirements engineering activities result in the specification of software s operational characteristics (function, data, and behavior), indicate software s interface with other system elements, and establish constraints that software must meet. QSoftware Requirements AnalysisIn requirements analysis and specification, communication content is very high, chance for misinterpretation or misinformation abound, and ambiguity is probable.  I know you believe you understood what you think I said, but I am not sure you realize that what you heard is not what I meant.  bwS`OvO`Of}vN`O:Nb@bv/fNHN FO/fb N[`O/f&TaƋ0R`O,T0Rvv^ N/fb@bcva` ...& 0 *$;$;(6RSoftware Requirements Analysis Software requirements analysis may be divided into five areas of effort: Problem recognition evaluation and synthesis modeling specification review2MKMJSSoftware Requirements AnalysisRequirements elicitation for software: Initiating the Process Facilitated Application Specification Techniques Quality Function Deployment Use Cases2'o'nUSoftware Requirements AnalysisAnalysis Principles: The information domain of a problem must be represented and understood. The functions that the software is to perform must be defined. The behavior of the software (as a consequence of external events) must be represented. The models that depict information, function, and behavior must be partitioned in a manner that uncovers detail in a layered (or hierarchical) fashion. The analysis process should move from essential information toward implementation detail. 0\&Software Requirements Analysis?Guiding principles for requirements engineering Understand the problem before you begin to create the analysis model. Develop prototypes that enable a user to understand how human/machine interaction will occur. Record the origin of and the reason for every requirements. Rank requirements work to eliminate ambiguity.201`.Software Requirements AnalysisoNBlRgNXT^wQYvyr_ UNONNbavi_ ͑etetOKNb:NTy;bR v^9hncTy;bR~TQv㉳QRl UNNTyvNQzbmmvSYDe-N8TSp`S_vnc Yt(u7bvsXSWwƋ[lka-Software Requirements AnalysisoNBlRgNXT^wQYvyr_ wQYb|~vlxNToNR^(uN(u7bsXvR wQYo}YvfNbTS4Yb__ۏLTNbcavR wQ g e w0Rh(g S w0Rhg vR0IZYV Software Requirements Analysis_How to analyze software requirements? Analyzing the information domain Modeling Partitioning 0'9'7W!Software Requirements AnalysisKey to understanding of software requirements All software applications can be collectively called data processing. Interestingly, this term contains a key to our understanding of software requirements. Software is built to process data, to transform data from one form to another; that is, to accept input, manipulate it in some way, and produce output. This fundamental statement of objective is true for all software we build.H.-5<X"Software Requirements AnalysisfThe information domain information content ant relationships information flow information structure0ONY#Software Requirements AnalysisThe information domain Information content represents the individual data and control objects that constitute some larger collection of information transformed by the software. Data and control objects can be related to other data and control objects, and during analysis of the information domain these relationships should be defined. Information flow represents the in manner in which data and control change as each moves through a system. Information structure represents the internal organization of various data and control items.h'[H]'Software Requirements Analysis The analysis model must achieve three primary objectives: to describe what the customer requires to establish a basis for the creation of a software to define a set of requirements that can be validated once software is built.0>>{ESoftware Requirements AnalysisKAnalysis Modeling Data modeling Functional modeling Behavioral modeling <87^(Software Requirements Analysis zDSoftware Requirements AnalysisqData Dictionary a repository that contains descriptions of of data objects consumed or produced by the software.0a`|FSoftware Requirements AnalysisEntity Relation Diagram (ERD) The ERD depicts relationships between data objects. The ERD is the notation that is used to conduct the data modeling activity. The attributes of each data object noted in the ERD can be described using a data object description. F}GSoftware Requirements AnalysisData Flow Diagram (DFD) The DFD serves two purposes: (1) to provide an indication of how data are transformed as they move through the system and (2) to depict the functions (and subfunctions) that transform the data flow. The DFD provides additional information that is used during the analysis of information domain and serves as a basis for modeling function. A description of each function presented in the DFD is contained in a process specification (PSPEC).4 ~HSoftware Requirements AnalysisState Transition Diagram (STD) The STD indicates how the system behaves as a consequence of external events. To accomplish this, the STD represents the various modes of behavior (called states) of the system and the manner in which transitions are made from state to state. The STD serves as the basis for behavioral modeling. Additional information about the control aspects of the software is contained in the control specification (CSPEC).J ISoftware Requirements AnalysisbData modeling What are the primary data objects to be processed by the system: What is the composition of each data object and what attributes describe the object? Where do the objects currently reside? What are the relationships between each object and other objects? What are the relationships between the objects and the processes that transform them?(UUJSoftware Requirements AnalysisEntity Relation Diagram (ERD) Data objects: A data object is a representation of almost any composite information that must be understood by software. Attributes: define the properties of a data object and take on one of three different characteristics: (1) name an instance of the data object, (2)describe the instance, and (3) make reference to another instance in another table. Relationships: Data objects are connected to one another in different ways.0LSoftware Requirements Analysis MSoftware Requirements AnalysisFunctional modeling Information is transformed as its flows through a computer-based system. The system accepts input in a variety of forms; applies hardware, software, and human elements to transform it; and produces output in a variety of form.0NSoftware Requirements AnalysisdFundamental system model oN|~vhQ萟Rh:ybN*NUSNvOo`SbcǏ z(_)Software Requirements AnalysisBasic DFD Notation External entity: A producer or consumer of information that resides outside the bounds of the system to be modeled. Process: A transformer of information that resides within the bounds of the system to be modeled. Data object: the arrowhead indicates the direction of data folw. Data store: A repository of data that is to be stored for use by one or more process.(mm$Xb,Software Requirements AnalysisOuXTvƉ|~  c+Software Requirements Analysis d*Software Requirements Analysis OSoftware Requirements Analysis.Behavior modeling States Transitions Events0PSoftware Requirements Analysis QSoftware Requirements AnalysisStructured Analysis Creating an entity/relationship diagram Creating a data flow model Control specification Process specification Creating a data dictionaryTB+Z$Software Requirements Analysis$The Software Requirements Specification Introduction A. System reference B. Overall description C. Software project constraints Information Description A. Information content representation B. Information flow representation (1. Data flow 2. Control flow) (au(`uRSoftware Requirements AnalysisThe Software Requirements Specification Functional Description A. Functional partitioning B. Functional description 1. Processing narrative 2. Restrictions/limitations 3. Performance requirements 4. Design constraints 5. Supporting diagrams C. Control Description 1. Control specification 2. Design constraintsF(V(PSSoftware Requirements AnalysisThe Software Requirements Specification Behavioral Description A. System states B. Events and actions Validation and Criteria A. Performance bounds B. Classes of tests C. Expected software response D. Special considerations Bibliography Appendix (3z(3z[%Software Requirements Analysis4Specification Review Complete Consistent Accurate0TDesign Software design sits at the technical kernel of software engineering and is applied regardless of the software process model that is used. Beginning once software requirements have been analyzed and specified, software design is the first of three technical activities - design, code generation, and test - that are required to build and verify the software. The importance of software design can be started with a single word - quality. Design provides us with representations of software that can be assessed for quality.4 WUDesign VDesignThe data design transforms the information domain model created during analysis into the data structures that will be required to implement the software. The architectural design defines the relationship between major structural element of software. The interface design describes how the software communicates within itself, with systems that interoperate with it, and with humans who use it. The component-level design transforms structural elements of software architecture into a procedural description of software components.l LoWDesignDesign process goal: The design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer. The design must be a readable, understandable guide for those who generate code and for those who test and subsequently maintain the software. The design should provide a complete picture of the software, addressing the data, functional, and behavioral domain from an implementation perspective.0XDesignAbstraction Abstraction permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details. 2  YDesignRefinement Refinement is actually a process of elaboration. We begin with a statement of function (or description of information) that is defined at a high level of abstraction. That is, the statement describes function or information conceptually but provides no information about the internal workings of the function or the internal structure the information. Refinement causes the designer to elaborate on the original statement, provide more and more details as each successive refinement (elaboration) occurs.>  $ ZDesignYAbstraction and Refinement Abstraction and refinement are complementary concepts. Abstraction enables a designer to specify procedure and data and yet suppress low-level details. Refinement helps the designer reveal low-level details as design progresses. Both concepts aid the designer in creating a complete design model as the design evolves.0?>[DesignPModularity !jWWS Software is divided into separately named and addressable components, often called modules !jWW , that are integrated to satisfy problem requirements.\S7, \5\Design!jWW !jWW/fpencf0SgbLSI{ z^[avƖT /fUSr}T Tvv^NSNǏ TW[eg OYǏ z0Qpe0P[ z^0[0moduleI{0?D(;dDesignPArgument for modularity C(x) be a function that defines the perceived complexity of a problem x. E(x) be a function that defines the effort required to solve a problem x. For two problems, p1 and p2 if C(p1) > C(p2), then E(p1) > E(p2) C(p1 + p2) > C(p1) + C(p2) E(p1 + p2) > E(p1) + E(p2)>*6cDesign eDesignHow do we define an appropriate module of a given size? Modular decomposability Modular composability Modular understandability Modular continuity Modular protection29n9mY@fDesignSoftware Architecture Software architecture is the hierarchical structure of program components (modules), the manner in which these components interact, and the structure of data that are used by the components. One goal of software design is to derive an architectural rendering of a system. This rending serves as framework from which more detailed design activities are conducted.0lkgDesignASoftware Architecture Control hierarchy Structured Partitioning0+*hDesign iDesignData Structure Data structure is a representation of the logical relationship among individual elements of data. Data structure dictates the organization, methods of access, degree of associativity, and processing alternatives for information. 0 0jDesignSoftware Procedure Software architecture (program structure) defines control hierarchy without regard to the sequence of processing and decisions. Software procedure focuses on the processing details of each module individually. Procedure must provide a precise specification of processing, including sequence of events, exect decision points, repetitive operations and even data organization and structure.0AQkDesignInformation Hiding Modules should be specified and designed so that information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information.0lDesignEffective modular design: Function independence (!jWWRrz'`) The concept of function independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding. We should design software so that each module addresses a specific subfunction of requirements and has a simple interface when viewed from other parts of the program structure. T<31 42  cq>Design!jWWRrz'` !jWWrz/fc_SwQ grzR NTvQ[!jWWKNl gǏYvvN\O(uv!jWW0 !jWWRrzvaIN RRrR {ScS fNYNT\O_S TNoN rzv!jWWfNKmՋT~b0 X & ' % &`mDesignqualitative criteria for measuring independence: Cohesion (QZ'`) Coupling (&T'`) F2"0 4= oDesignCohesion Cohesion is a natural extension of the information hiding concept. A cohesive module performs a single task within a software procedure, requiring little interaction with procedures being performed in other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing. We always strive for high cohesion, although the mid-range of the spectrum is often acceptable.0  pDesignSpectrum for cohesion: Coincidentally cohesion (vP6qQZ)N~NRsQ|~gceNO Logically cohesion (;QZ)N~NR(W; N T^\N{| OYGW:NQNO temporal (eQZ)N~NR_{(W TNkeQgbLNO Communicational cohesion (Oo`QZ)!jWWQ@b gCQ }_(uv TveQbQpencƖT-N Sequential cohesion (z^QZ)!jWW-Nvk*NCQ }/fN TNR'}[vsQ N*NCQ }vQ/f NN*NCQ }veQؚ Functional cohesion (RQZ)N*N!jWW[bN*NNN[bN*NRؚ + !0t0  .nDesign0Coupling Coupling is a measure of interconnection among modules in a software structure. Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. In software, we strive for lowest possible coupling.0 ' &s@DesignnSpectrum for coupling: No direct coupling (eNUOޏc)$N*N!jWW-NvkN*Nrz0W]\O NSN*NvX[(WgNO&T 0 Data coupling (penc&T)$N*N!jWW|_dkǏSpeNbcOo` NNbcvNN/fpencNO&T 0 Control coupling (c6R&T)$N*N!jWWKN OvOo` gc6RbR-N&T 0Z+&6,)%tBDesignSpectrum for coupling: Common coupling (lQqQsX&T)$N*NbY*N!jWWǏN*NlQqQsXvN\O(u 1. N*NX[penc N*NSpencNO&T  2. X[SpencNO---NKN 0 Content coupling (Q[&T) 1. N*N!jWWSN*N!jWWvQpenc 2. $N*N!jWW gNR z^Nx͑S 3. N*N!jWW NǏck8^eQS lyvSN*NvQ 4. N*N!jWW gY*NeQSasT@w!jWW gY*NR 0h.-iKq,)JowDDesignsQN&T'`TQZ'`vSR RN=\S1_v&T'`=\ϑO(upenc&T \(uc6R&T P6RlQqQsX&TvV [hQ N(uQ[&T RN=\SؚvQZ'`RN=\SؚvQZ'` v^Ƌ+RQNOQZ'`Pa`xEDesignDesign heuristics for effective modularity Evaluate the  first iteration of the program structure to reduce coupling and improve cohesion. 9eۏoN~g cؚ!jWWQZ'` MNO!jWW&T'`0 Attempt to minimize structures with high fan-out; strive for fan-in as depth increases. =\ϑQ\ؚGbQ~gvpev @wm^vXRNSfYvGbeQ0GbQǏ'YasT@w!jWWǏR YBg c6RTOSǏYv N~!jWW0N,eg vB\GbQؚ -NGbQ\ NOB\ؚGbeQ0N-"-aXP,XPyFDesignDesign heuristics for effective modularity Keep the scope of effect of a module within the scope of control of that module. !jWWv\O(uVOc(W!jWWvc6RVQ0!jWWv\O(uV/fc!jWW-NN*N$Re@bq_Tv@b gvQ[!jWW!jWWvc6RVc!jWW,gNS@b gvcbcN^\N[v!jWW0 Evaluate module interfaces to reduce complexity and redundancy. RNMNO!jWWcSv YBg z^0!jWWcSv YBg'`/f_woNvN*N;NSV0cS^O_Oo` O{USv^NN!jWWvRN0F--QO@?,~O@>zGDesignDesign heuristics for effective modularity Strive for  controlled entry modules by avoiding  pathological connections. USeQSUSQSv!jWW0MQQ[&T fNt㉌T~b0 Define modules whose function is predictable. !jWWvR^SNKm0v TveQ^ gv TvQ &TRNt0KmՋT~b0F--N.(,{.'qDesignGData design Architectural design Interface design Component design rDesign Data design Data design creates a model of data and/or information that is represented at a high level of abstraction. This data model is then refined into progressively more implementation-specific representations that can be processed by the computer-based system. 0  sDesignData design Data structure: At the program component level, the design of data structures and associated algorithms required to manipulate them is essential to the creation of high-quality applications. Database: At the application level, the translation of a data model into a database is pivotal to achieving the business objectives of a system. Data warehouse: At the business level, the collection of information stored in disparate databases and reorganized into a  data warehouse enables data mining or knowledge discovery that can have an impact on the success of the business itself.~ F uDesign^Architectural design Architectural styles Mapping requirements into a software architecture <HGtDesignArchitectural styles Data-centered architectures Data-flow architectures Call and return architectures Object-oriented architectures Layered architectures0vDesignMapping requirements into a software architecture The call and return architecture. Structured design (data flow-oriented design method)  3ZwDesign Structured design provides a convenient transition from a data flow diagram to software architecture: the type of information flow is established; flow boundaries are indicated; the DFD is mapped into program structure; control hierarchy is defined; resultant structure is refined using design measures and heuristics; and the architectural description is refined and elaborated.2kk}JDesignTransform flow (SbcAm) Oo`leQۏeQ|~ Te1uYb__SbcbQb__0ۏeQ|~vOo`ǏSbc-N_ ~ǏR]YtNTQl@wQSbcbYb__y_|~0 F]L~KDesign LDesignTransaction flow (NRAm) NRAmvyrp/fpencl@wc6ebYNLuvOo`lbcbN*NNRy 6qT {勋NRyv

4Designh]wQ--PDL(Program Design Language) PDLwQ g%Nf}YY/fSNke0WSsoNv:w N SNOk*N:w(WۏL z0KmՋTNNKNMRNN~ck N >fW0WMNOTv_S6kT~b6kv9(u0 Y[Sbckĉv[g0^ckĉv[gThg Nye_00Design Y[vhQ fn'` oNSbNoNBlĉ  Code Generation z^'`v ] z‰p 1 OfNNxы 2 ы z^vRHe 3 nNxvSy i'` 4 _S]wQvS)R(u'` 5 nNxvS~b'`0 b/g'`‰p 1 YBgpenc~g 2 [e|~ 3 yrk^(uWr B BxCode Generation z^vR{|  cba~+RR{| NO~:ghV Gl ؚ~N:ghVesQ [s'` uؚ~ؚba~ g(uNcRvbR *6NMCode Generation> z^vR{|  c^(uWR{| (u N(u Code Generation z^vR{|  cbR'`(R{| z^S+Tz^bR v^S+T gv^SbR R^_QNR^_{Bl Q~QNQ~{Bl *8ONCode Generation z^vR{|  c\O(ue_R{| }TN_ NvQc ZPNHN ؏/f `7hZP v^cv~bR/f}TN_v HQZPNHN0TZPNHNĉ[}YNfnxv!k^0 \O(u_Nv^vc-N Nf>f wQvQ~bRgbLvHQT!k^0 f^    GqCode GenerationL z^vR{|  cc~+RR{| R'` '` [s'`'&Code Generation^ z^vR{|  c!jb[‰NLuv҉^R{| [a_bT[a ^[a_0/Code GenerationB z^vR{|  cvQ[e_R{| Qpe_ ;_ "!Code Generation N, aϑgy z^/f&TTNyr[vyv ^Q NbNNV } ^(uW {lT{ YBg'` oNЏLsX (u7bBl-NsQN'`ebv penc~gv YBg'` oN_SNXTvwƋ4ls^ S(uvы|~41A#AqCode Generation xΘ ' ZCode Generation z^/edsX s(W zǏ z'YY(WN~CASE]wQv/ec NۏL ُ~]wQR[b0ы0Ջ0yv{tI{N|RNR ُ~]wQ g:gƖb(WNwb_b z^/edsX0 aa$ <Code Generation z^/edsX^wQYvyr'` (u'`(uN N Tv0 N Tv^(uWT_Sel ^'`Ǐ_sQn M6RQ N Tv z^/edsX[O _>e'`eO0WXRe]wQ /ec Y(u/ecS Y(u!jWWvX[P0"}_Tg~b ꁧc'`Oꁫd\OvcknxNOS &^penc^cOpenc^:g6R X[P0{t]_SvoNNT O(ϑ gRNcؚ@b_SoNv(ϑ 8T_(u7b(u7b?aaO(u wQ g^:WzNRwckcؚoNuNR0 >f0TestingSoftware testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation. The importance of software testing and its implications with respect to software quality cannot be overemphasized. It is not unusual for a software development organization to expend between 30 and 40 percent of total project effort on testing. In the extreme, testing of human-rated software can cost three to five times as much as all other software engineering steps combined!g1TestingvIn fact, testing is the one step in the software process that could be viewed as destructive rather than constructive.h2TestingTesting Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is one that has a high probability of finding an as-yet-undiscovered error. A successful test is one that uncovers an as-yet-undiscovered error.0i3Testing.Testing Principles All tests should be traceable to customer requirements. Tests should be planned long before testing begins. The Pareto principle applies to software testing. (KmՋSs-Nv80%_SwnN z^!jWW-Nv20%) Testing should begin  in the small and progress toward testing  in the large. Exhaustive testing is not possible. To be most effective, testing should be conducted by an independent third party.Z"!&j4TestingmTestability Operability Observability Controllability Decomposability Simplicity Stability Understandability0 b `Gk5TestingB A engineered product can be tested in one of two ways: Knowing the specified function that a product has been designed to perform, tests can be conducted that demonstrate each function is fully operational while at the same time searching for errors in each function. (Black-box testing) Knowing the internal workings of a product, test can be conducted to ensure that  all gears mesh, that is internal operations are performed according to specifications and all internal components have been adequately exercised. (White-box testing):@ 7l6Testing0Black-box testing (ў{KmՋ0RKmՋ) When computer software is considered, black-box testing alludes to test that are conducted at the software interface. Although they are designed to uncover errors, black-box test are used to demonstrate that software functions are operational, that input is properly accepted and output is correctly produced, and that the integrity of external information is maintained. A black-box test examines some fundamental aspect of a system with little regard for the internal logical structure of the software. TZZ&0Testing wz=\RKmՋ ON*N z^3*NteWveQpenc 傡{:gvW[:N16MO Rk*NpencSSv

 RT$*TestingTest case design KmՋ(uOvW,gvh/fnx[N~KmՋpenc vQSsN*NbN{|visgؚ0 White-box testing methods Black-box testing methods0E517, &5TestingTest case design (White-box testing Methods) Using white-box testing methods, the software engineer can derive test cases that (1) guarantee that all independent paths within a module have been exercised at least once, (2) exercise all logical decisions on their true and false sides, (3) execute all loops at their boundaries and within their operational bounds, and (4) exercise internal data structures to ensure their validity. P3-]2TestingP;v Sv $R[v agNv $R[/agNv agN~Tv _v2# )Testings~QY N z^ #include(stdio.h); main(){ float A, B, X; scanf( %f %f %f , &A, &B, &X); if (A>1)&&(B==0) X=X/A; if (A==2)||(X>1) X=X+1; printf( %f , X)} z^vKmՋpencNR+RnSv0$R[v0agNv0agN~TvT_iv;vhQ0 : C4Z &Q  2Testing Sv SYYvKmՋpenc OKmՋ z^-Nk*NS\gbLN!k0 :NOk*NSgbLN!k z^vgbL_^/fsacbed A=2, B=0, X=4 傊bbpv$R[Q:N (A==2)||(X<1) ,UJB TestingR $R[v SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[vkySv~g\gbLN!k0 YR+Rv_sacbedTsabdb sacbdTsabedv$N~KmՋpenc n $R[vhQ 1 A=3, B=0, X=3 (sacbd) 2 A=2, B=1, X=1 (sabed) DfLTestingP agNv SYYvKmՋpenc OKmՋ z^-N NNk*NS\gbLN!k Nk*N$R[h_-Nvk*NagNS0RTySv~g0 (WapA>1, A1, B=0, B`"0 (WbpA=2, A `"2, X>1, X 10 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)6D (3jE)Testing $R[/agNv SYYvKmՋpenc O_$R[h_-Nvk*NagNS0RTySv~g Nk*N$R[h__NS0RTySv~g0 1 A=2, B=0, X=4 (sacbed) 2 A=1, B=1, X=1 (sabd)@E3E2>GTestingR agN~Tv SYYvKmՋpenc O_$R[h_-NagNvTyS~T\QsN!k0 gkQySvagN~T 1 A>1, B=02 A>1, B `"0 3 A 1, B=04 A 1, B `"0 5 A=2, X>16 A=2, X 1 7 A `" 2, X>18 A `" 2, X 10 KmՋpenc 1 A=2, B=0, X=4 (sacbed, 1,5) 2 A=2, B=1, X=1 (sabed, 2,6) 3 A=1, B=0, X=2 (sabed, 3,7) 4 A=1, B=1, X=1 (sabd, 4,8)L*/"l?m TestingV _v SYYvKmՋpenc O_ z^vkagS_\gbLN!k z^V-N gs Rk*Ns\~ǏN!k 0 KmՋpenc 1 A=1, B=1, X=1 (sabd) 2 A=1, B=1, X=2 (sabed) 3 A=3, B=0, X=1 (sacbd) 4 A=2, B=0, X=4 (sacbed)@<o<jZKTesting@Test case design (Black-box testing) Black-box testing attempts to find errors in the following categories: (1) incorrect or missing functions, (2) interface errors, (3) errors in data structures or external database access, (4) behavior or performance errors, and (5) initialization and termination errors. Pw&QTestingkTest case design (Black-box testing) Test are designed to answer the following questions: How is functional validity tested? How is the system behavior and performance tested? Is the systems particularly sensitive to certain input values? How are the boundaries of a data class isolated? What effect will specific combinations of data have on system operation? F[%6TestingTest case design (Black-box testing) Equivalence partitioning I{NRR Boundary value analysis Lu V$+]=U%| >VTestingRegression testing (VR_KmՋ) In the context of an integration test strategy, regression testing is the re-execution of some subset of tests that have been conducted to ensure that changes have not propagated unintended side effects.B(Testing~ňKmՋelk vT N~ňl NqR!jWWY(WKmՋ6keg|~v;NR egSscSYvbc!jWW SG0RNKNvT|vKmՋVNOB\sQ.!jWW-NvSsZf0 ꁕ^T N~ňl Nbc!jWWYvqR!jWW(WgTN*N!jWWňeQKNMR oN[SOv^ NX[(W0 N,O(u$Nyelv~T KmՋ6kegǑ(uvT N~ňl TgǑ(uꁕ^T N~ňl _Y`Q NNSN TeۏL0(  Testing/Integration test documentation An overall plan for integration of the software and a description of specific tests are documented in a test specification. This document contains a test plan, and a test procedure, is a work product of the software process, and becomes part of the software configuration.0TestingTest specificationKmՋffN 1. KmՋV 2. KmՋR KmՋebbKmՋRR:NQ*Neb R+RKmՋoNvTyyr'` ۏ     ^ YoNqR!jWWTbc!jWW sXNDn 3. KmՋek ,{nKmՋ6kvf~ňv!k^KmՋvvT^Kmv!jWWN(uv]wQbb/gYoNvfKmՋ(uOpenc0 ,{nKmՋ6kvg~g 4. [EKmՋ~g 5. SDe 6. DU_ j*6@+7  0 )  Testing0Validation testing ( gHe'`KmՋ)oN gHe'`S_oNvRT'`Y T(u7bTtg_v7h RoN/f gHev0 `7h{/fTtvggBlf /flQeNKmՋNXT 0 elў{KmՋl0 hQhQ萄vRBl_0RnhQ萄v'`Bl0RNech/fcknxvv^NONO(uvQ[Bl_N0RNSbf~b'`0fy i'`0|Q['`0QꁨRb` YI{ 0 SQsv~gRN'`Nb/gBlNSsNb/gBl NNv0WeN(u7bOSFU 0 oN|ReN Y[nxoN|ReNvT*NR]ZP}Y ]~v v^ g_v~f \O:NNT~b6kvW,gDe0 :>Testing4System testing (|~KmՋ) Software is only one element of a large computer-based system. oNNN/fWN{:gv|~vN*N~bR0 Software is incorporated with other system elements, and a series of system integration and validation tests are conducted. |~KmՋ/fcboNN|~vvQN }Tv^ v^ۏLN|Rv|~~ňS gHe'`KmՋ0 @},?{/R?|(Testing~System testing System tests fall outside the scope of the software process and are not conducted by solely by software engineering. However, steps taken during software design and testing can greatly improve the probability of successful software integration in the larger system. |~KmՋ]~=0RNoN] ztuKNY v^Ng\1uoN_Sbb FO/f(WoNTKmՋ6k@bۏLv]\O\ gRNbR0WboNTv^0Rf'Yv|~KN-N0 A classic system testing problem is  finger-pointing . This occurs when an error is uncovered, and each system element developer blames the other for the problem. xQWv|~KmՋ/f vNc# S_SsNN*NNT T*N|~Rv_SL#+RNvR gku0v L8   #6G2TestingBWhat software engineers do in system testing: design error-handling paths that test all information coming from other elements of the system; [cQYt_ NKmՋN|~vvQNR OegvhQOo` conduct a series of tests that simulate bad data or other potential errors at software interface; ۏLN|RKmՋ !jN(WoNcSYQsv OWvpenc bvQNSv record the results of tests to use as  evidence if finger-pointing does occur. bKmՋ~gU_ Neg YgQsNvc#v`Qe 1\SNcQnx[v9hnc participate in planning and design of system tests to ensure that software is adequately tested.SN|~KmՋRN NOEQR0WKmՋoN|~0r.`"r.  Pb#P#`s=TestingCriteria for Completion of Testing S gS_KmՋEQR^ASRcя100%e MbOKmՋSsvR_0RS%c0 0$%$#$#$t>TestingVerification and Validation Software testing is one element of a broader topic that is often referred to as verification and validation (V&V). Verification refers to the set of activities that ensure that software correctly implements a specific function. Validation refers to a different set of activities that ensure that the software that has been bulit is traceable to customer requirements.jqP f a'u?TestingVerification and Validation Verification:  Are we building the product right? Validation:  Are we building the right product? The definition of V&V encompasses many of the activities that we have referred as software quality assurance (SQA). Although testing plays an extremely important role in V&V, many other activities are also necessary.49 ( ~lv@TestingDebugging ( An ART) Debugging occurs as a consequence of successful testing. That is, when a test case uncovers an error, debugging is the process that results in the removal of the error. Although debugging can and should be an orderly process, it is still very much an art. The external manifestation of an error and the internal cause of the error may have no obvious relationship to one another. The poorly understood mental process that connects a symptom to a cause is debugging.< wATesting xB MaintenanceAny work done to change a software system after it is in operation is considered to be maintenance. 55% - 80% of software budget is spent on maintenance. Maintenance is more difficult than development for software system, and requires more creative works.,ZW yC MaintenanceCorrective maintenance wck'`~b Adaptive maintenance ^'`~b Perfective maintenance [U'`~b Preventive maintenance 2'`~b r  Maintenancenq_ToN~bvV } |~v'Y\ |~vt^ ~gvTt'` ^(u{|WTNR^ vQ[ z^ penc^I{  -87 Maintenance<oN~bvek t㉰s g|~ O9es g|~ ͑enx|~  MaintenanceoN~bvek hg(u7bvBlTffN T(u7bT_SۏLFU hg z^Tech nx[ z^vMOnT'`( xvz z^vO9eSL'`TO9eS_wvoR\O(u [9eSRۏLx O9e z^echT z^^04 _  ^ g Maintenance~O9e z^vSR N_c[ z^v(ϑ Oc z^Θ