Overview
- The roadmap to building high quality software products is software
process.
- Software processes are adapted to meet the needs of software engineers and
managers as they undertake the development of a software product.
- A software process provides a framework for managing activities that can
very easily get out of control.
- Different projects require different software processes.
- The software engineer's work products (programs, documentation, data) are
produced as consequences of the activities defined by the software process.
- The best indicators of how well a software process has worked are the
quality, timeliness, and long-term viability of the resulting software
product.
Software Engineering
- Software engineering encompasses a process, management techniques,
technical methods, and the use of tools.
Generic Software Engineering Phases
- Definition phase - focuses on what (information engineering,
software project planning, requirements analysis).
- Development phase - focuses on how (software design, code
generation, software testing).
- Support phase - focuses on change (corrective maintenance, adaptive
maintenance, perfective maintenance, preventative maintenance).
Software Engineering Umbrella Activities
- Software project tracking and control
- Formal technical reviews
- Software quality assurance
- Software configuration management
- Document preparation and production
- Reusability management
- Measurement
- Risk management
Common Process Framework
- Software engineering work tasks
- Project milestones
- Work products
- Quality assurance points
Software Engineering Institute (SEI) Capability Maturity Model (CMM)
- Level 1: Initial (ad hoc software processes)
- Level 2: Repeatable (able to repeat earlier successes)
- Level 3: Defined (management and engineering processes documented,
standardized, and integrated into organization-wide software process)
- Level 4; Managed (software process and products are quantitatively
understood and controlled using detailed measures)
- Level 5: Optimizing (continuous process improvement is enabled by
quantitative feedback from the process and testing innovative ideas)
Software Process Models
- Linear Sequential Model (old fashioned but reasonable approach when
requirements are well understood)
- Prototyping Model (good first step when customer has a legitimate need,
but is clueless about the details, developer needs to resist pressure to
extend a rough prototype into a production product)
- Rapid Application and Development (RAD) Model (makes heavy use of reusable
software components with an extremely short development cycle)
- Incremental Model (delivers software in small but usable pieces, each
piece builds on pieces already delivered)
- Spiral Model (couples iterative nature of prototyping with the controlled
and systematic aspects of the linear sequential model)
- Win-Win Spiral Model (eliciting software requirements defined through
negotiation between customer and developer, where each party attempts to
balance technical and business constraints)
- Concurrent Development Model (similar to spiral model often used in
development of client/server applications)
- Component-Based Development (spiral model variation in which applications
are built from prepackaged software components called classes)
- Formal Methods Model (rigorous mathematical notation used to specify,
design, and verify computer-based systems)
- Fourth Generation (4GT) Techniques (software tool is used to generate the
source code for a software system from a high level specification
representation)