Title: Software Process
1Software Process
- Software Process is a set of ordered activities
or tasks utilized to produce a software solution. - Some of the activities are still highly creative
and heavily dependent on the people. - The major software activities are (each of which
may be a process itself) - Collecting and specifying the requirements
- Develop an architecture and a design
- Implement the design in terms of code, document,
etc. - Validate (testing) the solution(s)
- Integrating the sub-solutions
- Deliver and install the solution
- Supporting the solution, fixing problems, and
enhancing-evolving the solution(s)
2Quick Outline of Major Software Activities
- Requirements
- Elicit and collect
- Analyze and specify
- Validate and document
- Design
- Architecture of major components and interfaces
- Analysis, specify and validate
- Component design, specify, and validate
- Interface design, specify and validate
- Data structure and Data Base design, specify, and
validate - Algorithm design, specify and validate
- Code and document
- program the executables and unit test
- create the non-executables such as help text,
messages, and manuals
3Quick Outline of Major Software Activities
- Validation and Testing
- Unit , component, and system tests
- test plan and test case generation
- test execution, error reporting, and fix
management - Integration
- promote from unit to component to system
- locking and parts management
- packaging the system
- Delivery and Installation of solution
- loading the system
- initialization of the system
- Support, Fix and Enhancements
- customer support process
- problem fix process
- enhancements and multiple release(s) process
4Where do People Start with Process?
- Most people will ask what is the problem?
- Then jump into figuring the solution - low level
design and coding.
Low Level Design Coding
Design
Testing
Requirements
Integration
5Why Have a Software Process ?
- Large Software development requires a group of
people - coordination of activities is a key - It imposes a set of structure and consistency
- forms a common understanding of the ordered
tasks, constraints, and needed resources - allows the detection of omission and problems in
the development of solution - clarifies the goals of the software solutions via
emphasizing and modifying the process (e.g.
introducing review for quality) - allows the tailoring and improvement for
development of different types of software. - It allows us to capture our experiences and reuse
or pass it on to others
6Software Process Models
- Process Model is a high level abstraction of the
actual activities performed in some sequence(s) - Some major models are
- Waterfall
- Evolutionary (Prototyping)
- Incremental and Iterative
- Spiral
- Agile (X-treme Programming)
- Minor models
- Formal - Transformational
- Re-use and Component based
7Waterfall Process
- The most familiar and modeled after hardware and
manufacturing process - This process with each stage not starting until
the previous one is completed was attractive - close to and easy to track for management
- deliverables are well defined
- There are some severe drawbacks
- the actual testing of the code comes very late
in the process - customer interaction did not happen except at the
requirements phase - development stages are not that crisp in that
more interaction and iteration is required
because software development has no manufacturing
except at the packaging and copying stage
Requirements
Design
Program Unit Test
(Spec.)
Test
Integrate System Test
(Spec.)
(Code)
Package Release
(Spec. result)
(System)
(System)
8Prototyping Model
- Allows better understanding and revisions of the
users requirements, especially UI. (requirements
may also be provided incrementally) - Allows better explorations of feasibility of
unknown areas. - Continual changes make overall design structure
difficult to see and manage may also need
special tools. - May be coupled with waterfall or any other
processes.
Requirements
Design
Integrate System
changes
changes
Prototype
Prototype
Prototype
9Incremental and Iterative Model
- Many reasons to develop the solution in phases
- Delivering some parts (e.g. high priority) fast
and early - Getting reactions early and being able to adjust
- Some early training and familiarization of users
- Allows some amount of technology and skill
staggering - There are 2 major approaches
- Incremental breaking the requirements into
separate vertical application parts develop and
deliver the parts as fully functional application
subsystems. - Iterative break the system into separately
designed horizontal cross application parts
(applications with simple screens with little
error recovery, enhanced error messages and
context sensitive help, enhanced performance and
speed, etc..) develop and deliver the parts as
complete, cross application components - Sometimes we need to combine iterative with
incremental to provide a consistent structure of
horizontal services
10Spiral Model
- Introduced by Barry Boehm at TRW to combine
development process with enhanced risk
manahement. - There are four major aspects
- planning
- setting goals and looking at alternatives
- evaluate the alternatives and the risks
- develop and test
- Each of development phases such as requirements,
design, etc. went through the four aspects.
Setting goal alternatives
Prototype analyze risks
Design
Develop Test
Plan
11Extreme Programming (XP)
- A Programming practice or set of principles
originated by Kent Beck in the mid-90s. - Based on the concept of quick and constant
Feedback Mechanism involving - Planning Game (Small Units of Requirements)
- Onsite Customer (Immediate and better feedback)
- Metaphor (Use one set of metaphor for
design/architecture) - Simple Design (Just enough to cover whats
needed) - Coding Standard (Facilitates better
communication) - Collective Code Ownership (Peer pressure to
improve code) - Pair Programming (Feedback and shared
improvements) - Refactoring (Continuous examination for
duplicative code) - Continuous Functional and Unit Testing (100
completion) - Continuous Integration (integrating small
functional releases) - 40 hour work (high morale and energy level)
12Extreme Programming Process
Onsite Customers
Simple Design
Coding standards
Planning Game
Pair Programming
Functional Unit Test
Small Release
System Metaphors
Continuous Integration
Refactoring
Collective Code Ownership
Larger Release
Adhere to 40 hour work week as much as possible !
13Minor Process Models
- Formal process model
- requires a very precise and formal specification
of requirements, followed by transformation into
design (with formal design notation) and then
into program code. - The transformations may be shown to be correct
- very complex and difficult tasks. - Re-Use and Component based model
- major concept is to ensure that existing
solutions such as (COTS) commercial off-the shelf
solutions have been taken into account. - May have to compromise the requirements - - needs
special skills to handle this - Interface design and integration is a continuous
process
14Process Study Improvements
- Process Modeling and Studying
- building static models to depict understand the
process model - building dynamic models to run and predict
outcomes of process model - Process improvements and enforcement
- ISO 9000
- CMM and CMMI
15Studying Process or Sub-Process
Pre- conditions
Post- conditions
Process or Sub-process Description
Outputs
Inputs
Measurements of Success - schedule reduction -
cost reduction - improved quality - etc.
16How Do We Describe the Process
- Pre and Post conditions how much do we specify
(people skills, tools readiness, previous process
completion status, etc.) - Input all the inputs and to what degree
- Outputs all the outputs and to what degree
- Process Description how detailed how should
it be represented (graphical, textual, etc.) - Should all these descriptions be static
descriptions or dynamic and possibly executable
? (Leon Osterweils proposal)