Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering: A Practitioner’s Approach, 6/e Chapter 2, 3, &4 Process copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University.

Similar presentations


Presentation on theme: "Software Engineering: A Practitioner’s Approach, 6/e Chapter 2, 3, &4 Process copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University."— Presentation transcript:

1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 2, 3, &4 Process copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited.

2 Software Process A framework for the tasks that are required to build high-quality software. A process defines who is doing what, when, and how to reach a certain goal.

3 A Process Framework Process framework Umbrella Activities
Framework activity #1 work tasks work products milestones & deliverables QA checkpoints Framework activity #n Umbrella Activities

4 Generic Framework Activities
Communication: Communication and collaboration with the stakeholders and encompasses requirement gathering and other activities. Planning: Establishment of a plan: the technical tasks, risks, resources, work products, and a work schedule Modeling: Analysis of requirements: better understanding of requirements Design: that achieves the requirements Construction Code generation: manual or automated Testing: uncover errors. Deployment: Delivery of software for customer evaluation with feedback.

5 Umbrella Activities Software project management
Formal technical reviews Software quality assurance Software configuration management Work product preparation and production Reusability management Measurement Risk management

6 The Process Model: Adaptability
The framework activities will always be applied on every project ... BUT The tasks (and degree of rigor) for each activity will vary based on: the type of project characteristics of the project common sense judgment; concurrence of the project team

7 Process Patterns Process patterns define a set of activities, actions, work tasks, work products and/or related behaviors A template is used to define a pattern Typical examples: Customer communication (a process activity) Analysis (an action) Requirements gathering (a process task) Reviewing a work product (a process task) Design model (a work product)

8 Process Patterns – An Example
Pattern Name: Prototyping Intent: The objective is to build a model that can be assessed iteratively by stakeholders in an effort to identify or solidify sw requirements Type: Phase pattern Initial Context: The following preconditions must be met: 1. stakeholders have been identified; 2. a mode of communication b/w stakeholders and sw team has been established; 3. the overriding problem has been identified by stakeholders; 4. an initial understanding of proj. scope, basic requirements, and constraints has been developed. Problem: Requirements are hazy or nonexistent. Stakeholders are unsure that they need. Solution: A description of the prototyping process is presented. Resulting Context: A software prototype that identifies basic requirements is approved by stakeholders. Related Patterns: customer-communications; iterative design, … Known Uses/Examples: Prototyping is recommended when requirements are uncertain.

9 The Primary Goal of Any Software Process: High Quality
Remember: High quality = project timeliness Why? Less rework!

10 Two Schools of Process Models
Prescriptive process models advocate an orderly approach to software engineering Agile development Encourages early incremental delivery of software Stresses continuous communication between developers and customers

11 Prescriptive Process Models
Define a distinct set of activities, actions, tasks, milestones, and work products. Software engineers and managers adapt a prescriptive process model to their need Guide a software team through a set of framework activities that organized into a linear, incremental, or evolutionary process flow The work products are the programs, documents, and data that are produced as a consequence of the activities.

12 The Waterfall Model

13 The Waterfall Model It suggests a systematic, sequential approach to software development. The oldest paradigm for software engineering Suitable for systems whose requirements are well-defined and reasonably stable. Drawbacks: Real projects rarely follow the sequential flow. It is often hard for the customer to state all requirements explicitly. A working product will not be available until late in the project time-span. Requirement errors may not be found until they are very costly to fix.

14 The Incremental Model

15 The Incremental Model The waterfall model applied in an iterative fashion. Each linear sequence produces deliverable increments of the software. Normally core product is first delivered and supplementary features are incrementally added. Useful when staffing is unavailable for a complete implementation by the project deadline. Increments may be planned to manage technical risks

16 Rapid Application Development

17 The RAD Model The incremental model with a short development cycle.
Multiple RAD teams develop different components of the system in parallel. Short system development cycle is achieved by using a component-based construction approach. Suitable for systems that can be modularized in a way that enables each major function to be completed in a short period of time. Drawbacks: For large systems, it requires sufficient people to form the RAD teams If developers and customers are not committed to the rapid-fire activities, the project would fail If the system cannot modularized properly, it can be problematic. It may be difficult to achieve high performance. It may not be appropriate if technical risks are high.

18 Evolutionary Models: Prototyping
Quick plan communication Modeling Quick design Deployment delivery & feedback Construction of prototype

19 Evolutionary Models: Prototyping
Assists the software developer and the customer to better understand what is to be built when requirements are fuzzy. "I know this is what I asked for, but it isn't really what I wanted." A quick throwaway prototype for users to experiment and the developer to understand and refine requirements based on users’ feedback.. The customer may falsely perceive the prototype as a working system, unwilling to continue for a complete system. Assumptions and design architecture of the prototype may influence implicitly the architecture of the real system. Rarely employed for complete development cycle.

20 Evolutionary Models: The Spiral

21 Evolutionary Models: The Spiral
Risk-driven process model. A cyclic approach for incrementally growing a system’s degree of definition and implementation. A set of anchor point milestones for ensuring stakeholder commitment for feasible and mutually satisfactory solutions. Prototyping can be employed as a risk reduction mechanism at any stage A good approach for large-scale systems.

22 Still Other Process Models
Component based development—systems are built by integrating Commercial off-the-shelf (COTS) software components. Following the following steps: Research and evaluate component-based products Resolve component integration issues A software architecture is designed to accommodate the components Components are integrated into the architecture Comprehensive testing is conducted. Formal methods—emphasizes the mathematical specification of requirements

23 Still Other Process Models
Aspect-oriented software development (AOSD) Certain concerns span the whole system architecture High-level properties of the system: security, fault tolerance Application of business rules Systemic: task synchronization or memory management AOSD is a process and methodological approach for defining, specifying, designing, and constructing aspects. Unified Process—a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML) – Details coming soon

24 The Unified Process (UP)
inception elaboration inception

25 UP Phases

26 UP Work Products

27 The Manifesto for Agile Software Development
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.” Kent Beck et al

28 What is “Agility”? Effective (rapid and adaptive) response to change
Effective communication among all stakeholders Drawing the customer onto the team Organizing a team so that it is in control of the work performed Yielding … Rapid, incremental delivery of software

29 An Agile Process Is driven by customer descriptions of what is required (scenarios) Recognizes that plans are short-lived Develops software iteratively with a heavy emphasis on construction activities Delivers multiple ‘software increments’ Adapts as changes occur

30 Extreme Programming (XP)
The most widely used agile process, originally proposed by Kent Beck XP Planning Begins with the creation of “user stories” Agile team assesses each story and assigns a cost Stories are grouped to for a deliverable increment A commitment is made on delivery date After the first increment “project velocity” is used to help define subsequent delivery dates for other increments

31 Extreme Programming (XP)
XP Design Follows the KIS principle (nothing less, nothing more.) Encourage the use of CRC cards for classes relevant to the current increment. For difficult design problems, suggests the creation of “spike solutions”—a design prototype Encourages “refactoring”—an iterative refinement of the internal program design XP Coding Recommends the construction of a unit test for the stories before coding commences Encourages “pair programming” XP Testing All unit tests are executed daily “Acceptance tests” are defined by the customer and executed to assess customer visible functionality

32 Extreme Programming (XP)

33 Adaptive Software Development
Originally proposed for complex systems by Jim Highsmith ASD — distinguishing features Mission-driven planning Component-based focus Uses “time-boxing” (See Chapter 24) Explicit consideration of risks Emphasizes collaboration for requirements gathering Emphasizes “learning” throughout the process

34 Adaptive Software Development
Speculation Adaptive cycle planning uses initiation information to define the set of release cycles (increments) Collaboration Team members multiply their talent and creative output with mutual trust. (1) criticize without animosity (2) assist without resentment (3) work as hard/harder as others Learning As development progresses members learn toward the complete cycle through focus groups, formal technical review, and postmortems.

35 Adaptive Software Development

36 Dynamic Systems Development Method
Promoted by the DSDM Consortium ( DSDM—distinguishing features Similar in most respects to XP and/or ASD Nine guiding principles Active user involvement is imperative. DSDM teams must be empowered to make decisions. The focus is on frequent delivery of products. Fitness for business purpose is the essential criterion for acceptance of deliverables. Iterative and incremental development is necessary to converge on an accurate business solution. All changes during development are reversible. Requirements are baselined at a high level Testing is integrated throughout the life-cycle.

37 Scrum Originally proposed by Schwaber and Beedle
Scrum—distinguishing features Development work is partitioned into “packets” Testing and documentation are on-going as the product is constructed Work occurs in “sprints” and is derived from a “backlog” of existing requirements Meetings are very short and sometimes conducted without chairs “demos” are delivered to the customer with the time-box allocated

38 Crystal Proposed by Cockburn and Highsmith
Crystal—distinguishing features Actually a family of process models that allow “maneuverability” based on problem characteristics Face-to-face communication is emphasized Suggests the use of “reflection workshops” to review the work habits of the team

39 Feature Driven Development
Originally proposed by Peter Coad et al FDD—distinguishing features Emphasis is on defining “features” a feature “is a client-valued function that can be implemented in two weeks or less.” Uses a feature template <action> the <result> <by | for | of | to> a(n) <object> Add the product to a shopping cart Display the technical spec of a product Store the shipping info for a customer A features list is created and “plan by feature” is conducted Design and construction merge in FDD


Download ppt "Software Engineering: A Practitioner’s Approach, 6/e Chapter 2, 3, &4 Process copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University."

Similar presentations


Ads by Google