Software/Systesm Development Life Cycle (Part I)

A methodology is a collection of procedures, rules, and guidelines that provides a standard, proven process for the practitioner to follow. A system development methodology is a standard, proven work process that enables system analysts, programmers, and end users to make controlled and orderly progress in developing information systems. It defines activities in the system development process and the individual and group responsibilities for accomplishing these activities. It helps answer the basic software development questions of what shall we do next and for how long shall we do it? A methodology also recommends specific techniques for accomplishing the various activities. Most importantly, a methodology offers guidelines for managing the quality of the products (deliverables) produced during the various stages of the systems development life cycle (SDLC).

A methodology can be viewed as consisting of three major components: a work breakdown structure that provides guidelines of what to do and when to do it, techniques on how to do what needs to be done, and advice on how to manage the quality of the results.

A robust methodology is composed of stages or phases. Each stage has a set of well-defined objectives. Completion of a stage requires the production of a set of major end products or deliverables. Further, a stage or phase is broken down into steps, and steps are divided into tasks. This decomposition of a project into stages, steps, and tasks is called a work breakdown structure.

The next component of a robust methodology is a technique, which is a method or procedure for carrying out a mechanical operation. System development techniques are rigorous procedures for creating systems deliverables. They specify what inputs are required to begin a task, what outputs will be produced, and they recommend a specific process to execute the task.

Tools are the other component of a robust methodology for systems development. The use of tools dramatically improve the performance, cost, efficiency and time to produce a new or improved system. For instance, Managers use Spreadsheets, Financial Modeling and Project Management Software for decision making and tracking of the resources over the life of a product development. Analysts and designers use Word Processors for textual specifications and Graphics packages for diagramming purposes, such as Data Flow Diagrams, Entity Relationship Models, Structure Charts, or Input-Output-Hierarchical-Processing specifications. Advanced organizations use CASE (Computer Aided System Engineering) tools that perform a variety of operation all over the SDLC. In addition these CASE tool offer a Repository-based development that have great advantages for a teamwork approach to information systems development. Programmers and testers use specific productivity tools such as editors, compilers, linkers, code generators, prototypes, or test cases and results generation and capturing.

The main result of using a robust methodology for information systems development is a quality end product. Quality is the degree to which the attributes of a product or service enable it to meet the needs of its users. Quality management addresses how to define, measure and refine the quality of the information systems development process and the deliverables that result. Some quality attributes of interest to the users of information systems are: correctness, reliability, robustness, maintainability, flexibility, availability, and efficiency, to name just a few. The required quality characteristics for a successful project must be explicitly defined at the start of the project and all efforts should be directed at meeting those quality objectives. The bottom line of pursuing the quality is avoiding defects. A defect is any error that, if not removed, would cause a system to fail to meet any of the quality attributes of interest to its users.

The demand for new systems far exceeds the capabilities of most information systems organizations to deliver them. Many systems being developed today are more complex than in the past. This results in information system organizations delivering systems much later than planned, and often in the systems not matching their users' needs. It's known that 20 percent of all software projects are canceled before completion, 60 percent experience significant cost and schedule overruns, and 75 percent experience quality problems. Work done by the Software Engineering Institute at Carnegie Melon Institute to develop a Capability Maturity Model for Software demonstrates how the use of a methodology can help ensure that project results closely meet users' expectations on timing, cost, and quality. This model defines five levels of software process maturity and identifies issues most critical to software quality and process improvement. As maturity level increases, the difference between planned results and actual results decreases across projects.

From the perspective of the IT organization, the use of a methodology provides a common, standard approach in which people can be trained to deliver high-quality systems. A methodology provides a standard set of terms to convey information about a project such as what stage it is in, what will occur during this stage, what deliverables need to be produced, and so on. This improves communications and reduces confusion and misunderstandings. The methodology provides time proven techniques and tools to produce the necessary deliverables. It also provides guidelines for checking the quality of these deliverables. In other words, the use of methodology changes the system development effort from art, which few may master, to a science that many can accomplish.