Project Size and Practices

Your software project should belong to one of the following levels. It is unlikely that your project will perfectly match the descriptions below but you should choose the level that best matches your project. 

Several descriptions are marked "Defining". If your project fits one of these "Defining" descriptions, your project probably belongs to that level. These are simple guidelines, you should use your judgement when deciding where your project lies. If you feel that your project does not match any of these levels, make an educated guess as to where it lies in the continuum from small to large, and then use the best practices of the level closest to your guess.

Small projects usually have the following characteristics:

  • No software deliverables. Project goal would be a research paper or report.
  • (Defining) Software developed would be "prototypical" in nature.
  • Project staff is small in nature, one person and/or one programmer.
  • The level of formality is low. This usually correlates with a small number of people involved in the project.
  • (Defining) A short lifetime. The project will not be expanded upon in the future or used by outside stakeholders on a continual basis.

Best practices for this type or project:

  • Requirements.
  • Version control.
  • Testing.

Medium projects usually have the following characteristics:

  • Informal software releases and sharing of code outside the project
  • Increased formality over the small project level. More formality is needed because more people are working on the project.
  • A small development team, two to three software engineeers, usually not just an individual.
  • Software deadlines.
  • A deliverable with an ongoing lifetime, not just a prototype. The code will be used more than once and may be enhanced.
  • Increased complexity over the small project level.

Best practices for this type or project:

  • Project management.
  • Requirements.
  • Software design and modeling.
  • Design reviews.
  • Version control.
  • Coding standards.
  • Code reviews.
  • Testing.
  • Installation procedures

Large projects usually have the following characteristics:

  • (Defining) Formal software releases.
  • (Defining) Potentially a large development team with collaborators outside the institution.
  • Software deadlines.
  • A deliverable with an ongoing lifetime, future versions are expected and planned for.
  • Documentation and training is provided to the users.
  • Increased complexity over the medium project level.

Best practices for this type or project:

  • Project management.
  • Risk assessment and mitigation.
  • Requirements.
  • Software design and modeling.
  • Design reviews.
  • Version control.
  • Coding standards.
  • Code reviews.
  • Build schedule.
  • User documentation.
  • User training.
  • Testing.
  • Installation procedures.
  • Code refactoring.
  • Ongoing Operations and Maintainence (O&M).