Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1
Software Process
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Introduction
 How Microsoft Builds Software?
 Microsoft has probably tackled more PC software projects than
any other company in the industry.
 The complexity of some of its products, such as Windows 95
(which contains more than 11 million lines of code and
required a development team of more than 200 programmers
and testers),
 They simply use software engineering techniques through the
software process.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Software Process
Fundamental Assumption:
Good processes lead to good software
Good processes reduce risk
Good processes enhance visibility
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Basic Process Steps in all Software Development
• Feasibility and planning
• Requirements
• System and program design
• Implementation and testing
• Acceptance testing and release
• Operation and maintenance
It is essential to distinguish among these process steps and
to be clear which you are are doing at any given moment.
Do not confuse requirements and design
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Sequence of Processes (software lifecycle)
Every software project will include these basic processes, in some
shape or form, but they may be carried out in various sequences
Major alternatives
• Sequential: Complete each process step before beginning the
next (but see the next few slides). Waterfall model.
• Iterative: Go quickly through all process steps to create a
rough system, then repeat them to improve the system. Iterative
refinement.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Sequential Development:
The Waterfall Model
Requirements
System design
Testing
Operation & maintenance
Program design
Implementation (coding)
Acceptance & release
Requirements
Design
Implementation
Feasibility study
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Discussion of the Waterfall Model
Advantages:
• Process visibility
• Separation of tasks
• Quality control at each step
• Cost monitoring at each step
Disadvantages:
Each stage in the process reveals new
understanding of the previous stages, that often
requires the earlier stages to be revised.
The Waterfall Model is not enough!
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Sequence of Processes
A pure sequential model is impossible
Examples:
• A feasibility study cannot create a proposed budget and
schedule without a preliminary study of the requirements and a
tentative design.
• Detailed design or implementation usually reveals gaps in the
requirements specification.
The plan must allow for some form of iteration.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Modified Waterfall Model-1
Requirements
System design
Testing
Operation & maintenance
Program design
Implementation (coding)
Acceptance & release
Waterfall model
with feedback
This is better
Feasibility study
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Modified Waterfall Model-2
Feasibility study
Test
Software
Requirements Test
System design
Design Test
Program design
Design Test
Implementation
Test
Experimentation
Debugging Test
Acceptance
Maintenance Test
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Iterative/spiral Refinement
Concept: Initial implementation for client and user
comment, followed by refinement until system is complete
Requirements
DesignImplementation
Evaluation
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
The Spiral Process
tim
1
Requirements
analysis
Design
Implementation
Evaluation
1Iteration #
1
1
2
2
2
3
3
3
Product released X
M I L E S T O N E S
2 3
2 31
Intermediate version
(prototype) X
Intermediate version
(2nd
prototype) X
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Other Life-Cycle Models
 Build-and-fix model
 Rapid prototyping model
 Incremental model
 Extreme programming
 Component-based software engineering
 Synchronize-and-stabilize model
 Object-oriented life-cycle models
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
1-Build and Fix Model
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Notes
 Most software is developed using build-and-fix
model. Basically there is no model.
No specifications
No design
 This model is completely unsatisfactory and should
not be adopted.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
3-Incremental development advantages
 Customer value can be delivered with each increment
so system functionality is available earlier.
 Early increments act as a prototype to help elicit
requirements for later increments.
 Lower risk of overall project failure.
 The highest priority system services tend to receive
the most testing.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Incremental development
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
4-Extreme Programming (XP)
 One of the best-know examples of an Agile Process
 Appropriate for environments with:
 Small teams
 Rapidly-changing requirements
 Some of the principles XP is based on are:
 Small Releases - Software developed in stages that are updated frequently
 Simple Design – Implement code needed to achieve customer’s results without
emphasis on future versions
 Testing – Done throughout the whole development process. Tests are design
first, before writing the software
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
Component-based software engineering
 Based on systematic reuse where systems are integrated from
existing components or COTS (Commercial-off-the-shelf)
systems.
 Process stages
 Component analysis;
 Requirements modification;
 System design with reuse;
 Development and integration.
 This approach is becoming increasingly used as component
standards have emerged.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Reuse-oriented development
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Computer-Aided Software Engineering (CASE)
 Computer-Aided Software Engineering (CASE) is software to support
software development and evolution processes.
 CASE classification
 Classification helps us understand the different types of CASE tools and
their support for process activities.
 Functional perspective
 Tools are classified according to their specific function.
 Process perspective
 Tools are classified according to process activities that are supported.
 Integration perspective
 Tools are classified according to their organisation into integrated units.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Functional tool classification
Tool type Examples
Planning tools PERT tools, estimation tools, spreadsheets
Editing tools Text editors, diagram editors, word processors
Change management tools Requirements traceability tools, change control systems
Configuration management tools Version management systems, system building tools
Prototyping tools Very high-level languages, user interface generators
Method-support tools Design editors, data dictionaries, code generators
Language-processing tools Compilers, interpreters
Program analysis tools Cross reference generators, static analysers, dynamic analysers
Testing tools Test datagenerators, file comparators
Debugging tools Interactive debugging systems
Documentation tools Page layout programs, image editors
Re-engineering tools Cross-reference systems, program re-structuring systems
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Activity-based tool classification
Specification Design Implementation Verification
and
Validation
Re-eng ineering tools
Testing tools
Debugging tools
Programanalysis tools
Language-processing
tools
Method suppor t tools
Prototyping tools
Configuration
management tools
Change management tools
Documentation tools
Editing tools
Planning tools
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
End of Slides

Software Engineering Lec 2

  • 1.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Software Process
  • 2.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 Introduction  How Microsoft Builds Software?  Microsoft has probably tackled more PC software projects than any other company in the industry.  The complexity of some of its products, such as Windows 95 (which contains more than 11 million lines of code and required a development team of more than 200 programmers and testers),  They simply use software engineering techniques through the software process.
  • 3.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Software Process Fundamental Assumption: Good processes lead to good software Good processes reduce risk Good processes enhance visibility
  • 4.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Basic Process Steps in all Software Development • Feasibility and planning • Requirements • System and program design • Implementation and testing • Acceptance testing and release • Operation and maintenance It is essential to distinguish among these process steps and to be clear which you are are doing at any given moment. Do not confuse requirements and design
  • 5.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Sequence of Processes (software lifecycle) Every software project will include these basic processes, in some shape or form, but they may be carried out in various sequences Major alternatives • Sequential: Complete each process step before beginning the next (but see the next few slides). Waterfall model. • Iterative: Go quickly through all process steps to create a rough system, then repeat them to improve the system. Iterative refinement.
  • 6.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Sequential Development: The Waterfall Model Requirements System design Testing Operation & maintenance Program design Implementation (coding) Acceptance & release Requirements Design Implementation Feasibility study
  • 7.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Discussion of the Waterfall Model Advantages: • Process visibility • Separation of tasks • Quality control at each step • Cost monitoring at each step Disadvantages: Each stage in the process reveals new understanding of the previous stages, that often requires the earlier stages to be revised. The Waterfall Model is not enough!
  • 8.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Sequence of Processes A pure sequential model is impossible Examples: • A feasibility study cannot create a proposed budget and schedule without a preliminary study of the requirements and a tentative design. • Detailed design or implementation usually reveals gaps in the requirements specification. The plan must allow for some form of iteration.
  • 9.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Modified Waterfall Model-1 Requirements System design Testing Operation & maintenance Program design Implementation (coding) Acceptance & release Waterfall model with feedback This is better Feasibility study
  • 10.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 Modified Waterfall Model-2 Feasibility study Test Software Requirements Test System design Design Test Program design Design Test Implementation Test Experimentation Debugging Test Acceptance Maintenance Test
  • 11.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 Iterative/spiral Refinement Concept: Initial implementation for client and user comment, followed by refinement until system is complete Requirements DesignImplementation Evaluation
  • 12.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 The Spiral Process tim 1 Requirements analysis Design Implementation Evaluation 1Iteration # 1 1 2 2 2 3 3 3 Product released X M I L E S T O N E S 2 3 2 31 Intermediate version (prototype) X Intermediate version (2nd prototype) X
  • 13.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Other Life-Cycle Models  Build-and-fix model  Rapid prototyping model  Incremental model  Extreme programming  Component-based software engineering  Synchronize-and-stabilize model  Object-oriented life-cycle models
  • 14.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 1-Build and Fix Model
  • 15.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Notes  Most software is developed using build-and-fix model. Basically there is no model. No specifications No design  This model is completely unsatisfactory and should not be adopted.
  • 16.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 3-Incremental development advantages  Customer value can be delivered with each increment so system functionality is available earlier.  Early increments act as a prototype to help elicit requirements for later increments.  Lower risk of overall project failure.  The highest priority system services tend to receive the most testing.
  • 17.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Incremental development
  • 18.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 4-Extreme Programming (XP)  One of the best-know examples of an Agile Process  Appropriate for environments with:  Small teams  Rapidly-changing requirements  Some of the principles XP is based on are:  Small Releases - Software developed in stages that are updated frequently  Simple Design – Implement code needed to achieve customer’s results without emphasis on future versions  Testing – Done throughout the whole development process. Tests are design first, before writing the software
  • 19.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 Component-based software engineering  Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems.  Process stages  Component analysis;  Requirements modification;  System design with reuse;  Development and integration.  This approach is becoming increasingly used as component standards have emerged.
  • 20.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 Reuse-oriented development
  • 21.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 Computer-Aided Software Engineering (CASE)  Computer-Aided Software Engineering (CASE) is software to support software development and evolution processes.  CASE classification  Classification helps us understand the different types of CASE tools and their support for process activities.  Functional perspective  Tools are classified according to their specific function.  Process perspective  Tools are classified according to process activities that are supported.  Integration perspective  Tools are classified according to their organisation into integrated units.
  • 22.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 Functional tool classification Tool type Examples Planning tools PERT tools, estimation tools, spreadsheets Editing tools Text editors, diagram editors, word processors Change management tools Requirements traceability tools, change control systems Configuration management tools Version management systems, system building tools Prototyping tools Very high-level languages, user interface generators Method-support tools Design editors, data dictionaries, code generators Language-processing tools Compilers, interpreters Program analysis tools Cross reference generators, static analysers, dynamic analysers Testing tools Test datagenerators, file comparators Debugging tools Interactive debugging systems Documentation tools Page layout programs, image editors Re-engineering tools Cross-reference systems, program re-structuring systems
  • 23.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Activity-based tool classification Specification Design Implementation Verification and Validation Re-eng ineering tools Testing tools Debugging tools Programanalysis tools Language-processing tools Method suppor t tools Prototyping tools Configuration management tools Change management tools Documentation tools Editing tools Planning tools
  • 24.
    Bernd Bruegge &Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24 End of Slides