310 likes | 744 Views
CS 425/625 Software Engineering Software Processes Based on Chapter 3 of the textbook [Somm00]: Ian Sommerville, Software Engineering, 6 th Ed., Addison-Wesley, 2000 and on Ch3 PowerPoint presentation from www.comp.lancs.ac.uk/computing/resources/IanS/SE6/Slides/index.html
E N D
CS 425/625 Software EngineeringSoftware Processes Based on Chapter 3 of the textbook [Somm00]: Ian Sommerville, Software Engineering, 6th Ed., Addison-Wesley, 2000 and on Ch3 PowerPoint presentation from www.comp.lancs.ac.uk/computing/resources/IanS/SE6/Slides/index.html September 3, 2003
Outline • Software Process Models • Waterfall model • Evolutionary development • Formal development • Reuse-oriented development • Incremental model • Spiral model • Software Process Activities • Specification • Design and implementation • Validation • Evolution • Automated Process Support
Software Process Models • Software process = organized set of activities aimed at building a software system • Software process model = an abstract representation of a software process • Fundamental software process activities: • Software specification • Software design and implementation • Software validation • Software evolution
Software Process Models: Waterfall.. • The Waterfall model[Somm00, Fig 3.1]
Software Process Models: .Waterfall. • Main characteristics: • Also called classic software life cycle or sequential model • Process activities (phases/stages) are clearly separated • After a number of iterations, phases of the life cycle (such as specification and design) are “frozen”
Software Process Models: ..Waterfall • Advantages: • Organized approach, provides robust separation of phases • Reflects common engineering practice • Disadvantages: • Doesn’t cope well with changes required by the client • Development teams might wait for each other • A working version of the product is available only late • Applicability: • When requirements are well known and few changes are likely to be needed • Can be used also for parts of larger software systems
Software Process Models: Evolutionary Development… • Evolutionary Development model [Somm00, Fig 3.2]
Software Process Models: .Evolutionary Development.. • Main characteristics: • The phases of the software construction are interleaved • Feedback from the user is used throughout the entire process • The software product is refined through many versions • Types of evolutionary development: • Exploratory development • Throw-away prototyping
Software Process Models: ..Evolutionary Development. • Advantages: • Deals constantly with changes • Provides quickly an initial version of the system • Involves all development teams • Disadvantages: • Quick fixes may be involved • “Invisible” process, not well-supported by documentation • The system’s structure can be corrupted by continuous change
Software Process Models: …Evolutionary Development • Disadvantages [cont’d]: • Special tools and techniques may be necessary • The client may have the impression the first version is very close to the final product and thus be less patient • Applicability: • When requirements are not well understood • When the client and the developer agree on a “rapid prototype” that will be thrown away • Good for small and medium-sized software systems
Software Process Models: Formal Development…. • The Formal System Development model[Somm00, Fig 3.3]
Software Process Models: .Formal Development… • The Formal Transformation process [Somm00, Fig 3.4]
Software Process Models: ..Formal Development.. • Main characteristics: • Approach based on formal, mathematics-based techniques for specification, refinement, and verification • A formal specification is produced, than transformed using mathematical methods into the software product’s design and code; formal verification is also used
Software Process Models: ...Formal Development. • Advantages: • Transformations between stages are sufficiently close to ensure better verification and less expensive proofs • Errors, omissions, ambiguities, and contradictions in specifications are more completely detected • The final product is more likely to satisfy the requirements • The product’s reliability is increased
Software Process Models: ….Formal Development • Disadvantages: • Requires knowledge of and experience with formal methods • Are resource consuming • Applicability: • Safety- and security-critical systems • Parts of the systems that must be thoroughly verified
Software Process Models: Reuse-Oriented Development… • The Reuse-oriented Development model[Somm00, Fig 3.5]
Software Process Models: .Reuse-Oriented.. • Main characteristics: • Makes intensive use of existing reusable components • The focus is on integrating the components rather than on creating them from the scratch
Software Process Models: ..Reuse-Oriented. • Advantages: • Reduces considerably the software to be developed “in-house” • Allows faster delivery • In principle, more reliable systems, due to using previously tested components
Software Process Models: …Reuse-Oriented • Disadvantages: • Compromises in requirements are needed • Less control over the system’s evolution • Applicability: • When there is a pool of existing components that could satisfy the requirements of the new product
Software Process Models: Incremental Development… • The Incremental Model [Somm00, Fig 3.6]
Software Process Models: .Incremental.. • Main characteristics: • Hybrid model that combines elements of the waterfall and evolutionary paradigms • The specification, design, and implementation phases are broken in smaller increments
Software Process Models: ..Incremental. • Advantages: • Provides better support for process iteration • Reduces rework in the software construction process • Some decisions on requirements may be delayed • Allows early delivery of parts of the system • Supports easier integration of sub-systems • Lower risk of project failure • Delivery priorities can be more easily set
Software Process Models: ...Incremental • Disadvantages: • Increments need be relatively small • Mapping requirements to increments may not be easy • Common software facilities may be difficult to identify • Applicability: • When it is possible to deliver the system “part-by-part”
Software Process Models: Spiral Model.. • Boehm’s Spiral Model[Somm00, Fig 3.7]
Software Process Models: .Spiral Model. • Main characteristics: • Also a hybrid model that support process iteration • The process is represented as a spiral, each loop in the spiral representing a process phase • Four sectors per loop: objective setting, risk assessment and reduction, development and validation, planning • Risk is explicitly taken into consideration
Software Process Models: ..Spiral Model • Advantages: • Risk reduction mechanisms are in place • Supports iteration and reflects real-world practices • Systematic approach • Disadvantages: • Requires expertise in risk evaluation and reduction • Complex, relatively difficult to follow strictly • Applicable only to large systems • Applicability: • Internal development of large systems
Process Activities: Specification • Requirements engineering [Somm00, Fig 3.8]
Process Activities: Design & Implementation • A general model for design [Somm00, Fig 3.9]
Process Activities: Testing • The debugging process [Somm00, Fig 3.10] • The testing process [Somm00, Fig. 3.11]
Process Activities: Evolution • System evolution[Somm00, Fig 3.13]
Automated Process Support • Classification of CASE technology [Somm00, Fig 3.16]