Common Practices for Software Projects

  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:

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

*