Three typical classifications for common kinds of software projects along with their best practices.
Business Systems
Common Application Types:
- Internet and intranet sites, payroll systems, games
Life-cycle models:
- Agile development (XP – Extreme Programming, Scrum, time box development, etc)
- Evolutionary prototyping. In Evolutionary prototyping, development evolves over time as we better understand the requirements and build only those parts of the system that are well understood.
Planning, management and requirements:
- Incremental project planning
- Informal change control and requirements specification
Design, construction and deployment:
- Design and coding are combined
- Informal or no check-in procedure
- Informal deployment procedure
Testing and QA:
- Developers test their own code
- Little or no testing by a separate group
Mission-Critical Systems
Common Application Types:
- Embedded and packaged software, internet sites, web services, software tools
Life-cycle models:
- Staged delivery. In staged delivery, the design is broken down into deliverable stages for detailed design, coding, testing and deployment.
- Evolutionary delivery. In evolutionary delivery, there is no fixed plan of future deliveries. Each is dynamically created based on new information.
- Spiral development. It is a risk-reduction oriented model that breaks the project up into mini-projects, each addressing one or more major risks. A software project repeatedly passes through these phases in each iteration:
- Planning Phase
- Risk Analysis
- Engineering Phase
- Evaluation Phase
Planning, management and requirements:
- Basic up-front project planning
- Formal change control
- Semi-formal requirements specification. As-needed requirements review.
Design, construction and deployment:
- Architectural design
- Informal detailed design. As-needed design reviews.
- Informal check-in procedure. As-needed code reviews.
- Formal deployment procedure
Testing and QA:
- Developers test their own code
- Separate testing group
Embedded Life-Critical Systems
Common Application Types:
- Avionics software. Embedded software with legally mandated safety and reliability concerns used in avionics.
- Embedded and packaged software
- Medical devices
- Operating systems
Life-cycle models:
- Staged delivery. In staged delivery, the design is broken down into deliverable stages for detailed design, coding, testing and deployment.
- Evolutionary delivery. In evolutionary delivery, there is no fixed plan of future deliveries. Each is dynamically created based on new information.
- Spiral development. It is a risk-reduction oriented model that breaks the project up into mini-projects, each addressing one or more major risks. A software project repeatedly passes through these phases in each iteration:
- Planning Phase
- Risk Analysis
- Engineering Phase
- Evaluation Phase
Planning, management and requirements:
- Extensive up-front project planning
- Extensive test and QA planning
- Rigorous change control
- Formal requirements specification and requirements review
Design, construction and deployment:
- Architectural design and architecture inspections
- Formal detailed design and design reviews
- Formal check-in procedure and code reviews
- Formal deployment procedure
Testing and QA:
- Developers test their own code
- Separate testing group
- Separate QA group
These practice are in reference to the book Code Complete by Steve McConnell.
Speak Your Mind