360 likes | 374 Views
CS 691z/791z Topics on Software Engineering Software Processes. Based on Chapter 4 of the book [SE-8] Ian Sommerville, Software Engineering , 8 th Ed., Addison-Wesley, 2006 and on Ch4 PPT presentation from http://www.software-engin.com/ Also, on Jim Arlow and Ila Neustadt,
E N D
CS 691z/791z Topics on Software EngineeringSoftware Processes Based on Chapter 4 of the book [SE-8] Ian Sommerville, Software Engineering, 8th Ed., Addison-Wesley, 2006 and on Ch4 PPT presentation from http://www.software-engin.com/ Also, on Jim Arlow and Ila Neustadt, UML and the Unified Process: PracticalObject-Oriented Analysis and Design, Addison Wesley, 2002. [Arlow and Neustadt, 2002] January 30, 2007
Outline • Software Process Models • Waterfall model • Evolutionary development • Component-based software engineering • Incremental model • Spiral model • Software Process Activities • Specification • Design and implementation • Validation • Evolution • The Unified Process
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 • Software implementation • Software validation • Software evolution
Software Process Models: Waterfall.. • The Waterfall model[SE-8, Fig 4.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 [SE-8, Fig 4.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: Component-based Software Engineering… • CBSE process model [SE-8, Fig 4.3]
Software Process Models: .Component-based Software Engineering.. • 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: ..Component-based Software Engineering. • 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: …Component-based Software Engineering • 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 • Emerging trend: integration of web services from a range of suppliers
Software Process Models: Incremental Development… • The Incremental model [SE-8, Fig 4.4]
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[SE-8, Fig 4.5]
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 [SE-8, Fig. 4.6]
Process Activities: Design & Implementation • A general model for design [SE-8, Fig 4.7]
Process Activities: Testing.. • The debugging process [SE-8, Fig 4.8]
Process Activities: .Testing. • The testing process [SE-8, Fig 4.0] • Testing phases in the sw. process [SE-7, Fig. 4.10]
Process Activities: ..Testing • Testing phases in the sw. process [SE-8, Fig. 4.10]
Process Activities: Evolution • System evolution[SE-8, Fig 4.11]
What is UP? • A software development process (SDP) or software engineering process (SEP) defines the who, what, when, and how of developing software • The Unified Software Development Process(USDP) or, in short, the Unified Process(UP) is an industry standard process created by the authors of UML Fig 2.2 [Arlow & Neustadt, 2002]
UP History UP evolution, Fig. 2.3 [Arlow & Neustadt, 2002]
UP Axioms • Use case and risk driven • Architecture centric • Iterative and incremental • Each iteration contains all the elements of a regular software development project: planning, analysis, design, construction, integration, testing, internal or external release
UP Core Workflows. • Requirements: Determining what the system should do • Analysis: Refining and structuring the requirements • Design: Defining system architecture to satisfy requirements • Implementation: Building the software • Testing: Verifying that the implementation is correct A baselineis the result of an iteration, a partially complete version of the final system. An iteration is the difference between two consecutive baselines.
.UP Core Workflows Fig.2.5, Arlow 2002
UP Structure. Fig.2.6 [Arlow 2002]
.UP Structure Fig.2.7 [Arlow 2002]
UP: Details on Phases. • Each of the four phases of UP (inception, elaboration, construction, transition) has: • A goal • A focus of activity • One or more core workflows • A milestone, with a number of conditions of satisfaction • Details of the above for Inception are given next. The remaining three phases are described in Subsection 2.9 of the textbook
UP: .Details on Phases • Inception • Goal: Get the project off the ground • Tasks: • Assess feasibility • Create a strong business case • Capture essential requirements • Identify critical tasks • Focus: Requirements specification and analysis • Milestone: Life-cycle objectives - see conditions of satisfaction n Table 2.1 of [Arlow & Neustadt 2002]