Title: Software development processes
1Software development processes
- People
- Products
- Processes Life-cycle models
- Traceability
2Software development
People
Processes
Products
3The players
- Senior managers define business issues
- Technical managers Plan, motivate, organize,
control developers - Developers (Practitioners) Engineer product
- Customer Specifies requirements
- End users Use the product
4Three engineering vice presidents
- I guess if you had to pick one thing out that is
most important in our environment. Id say its
not the tools that we use, its the people - The most important ingredient that was
successful on the project was having smart
people....very little else matters in my opinion - The only rule I have in management is to ensure
I have good people - real good people - and that
I grow good people
5What are companies looking for?
- Problem solving skills
- Being able to work in all phases
- Soft skills
- communication
- teamwork
- motivation to be productive
- project management
- Technical skills
- OO technology
- Databases
- Conceptual design
6Software development processes
- People
- Products
- Processes Life-cycle models
- Traceability
7Which product or lifecycle model?
- There exist many lifecycle models that differ in
- number / type of the resulting physical products
(documents) - number / type / coordination of the steps of
development
8Product reference model
- Overlap of product models between different
life-cycle modelsa logical model of software
products is the base of a reference model for
software development
9V - model for documentation of large software
products
10Problem description
- Which problems exist for the customer?
- Which of those shall be solved by the software
system? - Problems in problem descriptions
- Not precise - Incomplete
- Ambiguous - Superficial
- Redundant - Not on target
11System requirements
- Based on problem description .... and
communication with customer - What functional and non-functional
characteristics are expected from the software
system? - What Black box description
- User requirements describes system requirements
from the users perspective - Developer requirements describes system
requirements from the developers perspective
(contract!)
12System design
- Describes the structure of the system that
fulfills given developer requirements - components
- component interfaces
- component requirements
- How White box description
- Component requirements describes component
interfaces
13Components design
- Describes the structure of a component that
fulfills given component requirements - data structure
- algorithms
- How (Very detailed)
14Components code
- How can a component be realized on a concrete
execution engine (e.g. Java) ? - Source code
15Validation of results
16Software products (7)
- X is developed inDeveloped by activities that
are essential to build the x-code ( construction
plan for executable x)
17Software products (8)
- X is verified againstVerified by activities
that are essential to prove the consistence of
x-code and the related x-requirements
18Software products (9)
- X is integrated inIntegrated by activities
that are essential to create an executable
component from the x-code (compiling, binding,
loading, debugging)
19Software products (10)
- X is validated againstValidated by activities
that are essential to convince oneself or others
that the executable component does not contain
any inconsistencies with the x-requirements
20V - model for documentation of large software
products
21Software development processes
- People
- Products
- Processes Life-cycle models
- Traceability
22Processes are everywhere
- Process connected series of actionsseries
of operations deliberately undertaken - A S Hornby Oxford Advanced Learners
Dictionary of Current English, Oxford University
Press - Work processes
- Production processes
- Development processes
- Social processes
23Software engineering layers
24Generic View
- Definition phase What
- Requirements analysis
- Project planning
- Development phase How
- Software design
- Coding
- Testing
- Maintenance
25Umbrella activities
- Software project tracking and control
- Formal technical reviews
- Software quality assurance
- Software configuration management
- Document preparation and production
- Managing software reuse
- Risk management
26Common misconceptions about the software process
- We must start with firm requirements
- The problems are technical
- We need better people
- Software management is different
27The phases of a problem solving loop
28Process model
- Describe development strategy encompassing
- process
- methods
- tools
- Bring order into chaotic activity
- Assist in controlling and coordination of SE
projects
29The linear sequential model (Waterfall model)
30Linear sequential model (2)
- Systems engineering Software is part of a larger
system - Software requirements analysis
- information domain, function, behavior,
performance, interfacing - Design
- Code generation (ev. Automatic)
- Testing
31Problems with the linear sequential model
- Real projects rarely follow a sequential flow
- Stating all requirements at the beginning of a
project is difficult - Customer must have patience
- Applicable for projects that are well understood
32The prototyping paradigm
build / revise mock-up
listen to customer
customer test-drives mock-up
33Prototyping model (2)
- Only general objectives available
- Being unsure about
- efficiency of an algorithm
- human-computer interaction
- Often used for identifying requirements
- Throw-away prototype (Risk?)
- Fast decisions are not always good decisions!
- Often Code generators, report generators etc.
- fast enough?
34Evolutionary software process models
- Software evolves over time
- Straight path to an end product is unrealistic
- Tight market deadlines
- Deliver limited version
- Core product requirements well understood
- Need for extensions foreseeable
35The incremental model
Increment 1
Increment 2
.
36Incremental model
- Combines elements of the linear model and
prototyping - Produces deliverable increments
- First increment often core product
- Focuses on operational product (not throw-away
prototype) - Used when not enough resources are available to
deliver the complete product in time - Increments help to manage technical risks (e.g.
currently unavailable hardware)
37Spiral model
38Spiral model (2)
- Customer communication Establish effective
communication - Planning Define resources, timelines etc.
- Risk analysis Assess technical and management
risks - Construction release construct, test, install,
provide user support - Customer evaluation obtain feedback
39Spiral model (3)
- Couples iterative nature of prototyping with
controlled and systematic aspect of the linear
sequential model - Early iterations may be paper models or
prototypes - Can be used throughout the life of the product
- Reduces risk if properly applied
40The component assembly model
41Component assembly model (2)
- Object technologies provide technical basis
- Software reuse reliability, cost reduction
- Problems
- Finding components
- Are components reusable?
- Adaptation
42The concurrent development model
43Concurrent development model
- Tasks have states and are carried out in parallel
- Process support system (assignment) supports this
model - Assignment is developed following this model
44The formal methods model
- Specify, develop, verify a system by applying a
rigorous mathematical foundation - Discovers ambiguity, incompleteness,
inconsistency by mathematical analysis - Problems
- Time consuming and expensive
- Education insufficient
- No basis for communication with customer
45Process technology tools allow ...
- to analyze current processes
- to organize work tasks
- to control and monitor progress
- to generate To-Do lists
46Software development processes
- People
- Products
- Processes Life-cycle models
- Traceability
47Changes Happen
- Software is not stable over time
- Correction defect correction
- Adaptation Environment changes
- Enhancement New requirements
- Prevention Overcome deteriorating software
- Software and related documents have to be kept up
to date
48What is Impact Analysis?
- Software change impact analysis estimates what
will be affected in software and related
documentation if a proposed changed is made
Bohner/Arnold Software Change Impact Analysis,
Preface, IEEE Computer Society Press, 1996
49Traceability
- Traditionally Impacts are determined by people
using their heads - Now Repositories store interdependent software
artifacts - Relationships between artifacts are often
implicit - Impact analysis makes relationships explicit
50Traceability illustration
- vertical between abstraction levels
- horizontal on abstraction levels
51Examples of impact analysis techniques
- cross-referenced listings to determine parts that
reference a variable of procedure - program slicing to determine the subset of a
program that can affect the value of a variable - browsing of (hyper linked) files
- using traceability matrixes
- configuration management systems to find and
track changes - consulting design and specification documents to
determine the scope of a change
52Traceability matrix
Req 1 Req 2 Design 1 Design 2 Design 3 Code
1 Code 2 Code 3 Test 1 Test 2
Req 1 1 1 1 Req 2 1 Design 1 1 1 Design
2 1 1 Design 3 Code 1 1 Code
2 Code 3 1 Test 1 Test 2 1