- Estimating cost and time: “What is the best way to estimate the cost and time required by a project?”
- Selecting a project team: “What members must be included in a project team? What type of background and skills are required?”
- Capturing user requirements: “What is the best method to capture user requirements? How to ensure that all requirements are captured? How to ensure that the accuracy of the requirements (that is, requirements captured meets the goals of users)?”
- Using standards: There are many standards and methodologies proposed for system development (such as SDLC). “Which standard/methodology should be used for the project?”
- Choosing design approaches: There may be many design alternatives for a problem. “How do we ensure that the best design choice is made?”
- Coding programs: There are many different programming languages, tools and programming methodologies to develop programs. “How do we ensure that the right tools and languages are used?”
- Testing programs: Programs if incorrectly written can cause errors (sometimes also called “bugs”). “How do we minimize errors in programs? What is the best way to test programs?”
- Maintaining systems: “What is the best way to ensure that the systems are maintained till the end of their life cycle?”
It has been shown that as an organisation’s standard information system development process matures, project delays and costs decrease while productivity and quality increases. The Software Engineering Institute at Carnegie Mellon University (USA) has observed and measured this phenomenon and developed a framework, called the Capability Maturity Model (CMM), to assist all organisations to achieve these
benefits.
The Capability Maturity Model (CMM) is a framework to assess the maturity level of an organisation’s information systems development and management processes and products. It consists of five levels of development maturity.
- Level 1 – Initial: This is sometimes called anarchy or chaos. System development projects follow no prescribed process. Each developer uses his or her own tools and methods. Success or failure is usually a function of the skill and experience of the project team. The process is unpredictable and not repeatable. A project typically encounters many crises and is frequently over budget and behind schedule. Documentation is sporadic or not consistent from project to project and causes problems for those who maintain the system over the life cycle. Almost all organisation start at Level 1.
- Level 2 – Repeatable: Project management processes and practices have been established to track project costs, schedules and functionality. The focus is on project management, not systems development. A systems development process is always followed, but it may vary from project to project. Success or failure is still a function of the skill and experience of the project team; however, a concerted effort is made to repeat earlier project successes.
- Level 3 – Defined: A standard system development process has been purchased or developed, and its use has been integrated throughout the information systems/services unit of the organisation. All projects use a tailored version of the software development process to develop and maintain information systems and software. As a result of using this standardised process for all projects, each project results in consistent high-quality documentation and deliverables. The process is stable, predictable and repeatable.
- Level 4 – Managed: Measurable goals for quality and productivity have been established. Detailed measures of the standard system development process and product quality are routinely collected and stored in a database. There is an effort to improve individual project management based on this collected data. Thus, management seeks to become more proactive than reactive to systems development problems (such as cost overruns, scope creep, schedule delays etc.). Even when projects encounter unexpected problems or issues, the project can be adjusted based on predictable and measurable impacts.
- Level 5 – Optimised: The standardised system development process is continuously monitored and improved based on measures and data analysis established in Level 4. This can include changing the technology and best practices used to perform activities required in the standard system development process, as well as adjusting the process itself. Lessons learned are shared across the organisation, with an emphasis on eliminating inefficiencies in the systems development process while sustaining quality. In summary, the organisation has institutionalised continuous systems development process improvement.
