A STEP-BY-STEP SOFTWARE DEVELOPMENT PROCESS MODEL

Date
1990-04-01
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
There are three things needed to increase productivity in the software development domain: software development knowledge, an advanced and general level of underlying software technology, and better software tools. The knowledge defines the goals, the technology allows and supports the development of better tools, and the tools implement and achieve the goals set by the knowledge. The order of the three is especially important to understand: the knowledge and purpose for the tool must precede its development. The purpose of this document is to advance knowledge, so that better tools can be built to improve software productivity. In particular, this document makes a relatively hard statement about how software should be developed, by providing a concrete, step-by-step description of the overall software development process. Tool builders can thereby make more assumptions about the software production process, and so can build more effective, more special purpose tools. As a beginning, the process model described in this essay only addresses a very small and limited class of software projects: single person "software tool" projects of up to 50K source lines in size. The following general project activities are discussed in this essay: project startup, analysis, preliminary design, detailed design, implementation, product evaluation, project shutdown, and periodic procedures. Template documents are included for the requirements specification, functional specification, and post mortem document. The appendices contain brief discussions on software cost estimation, on software component structure and design, and on change control systems. In the author's opinion, the process model described in this document meets the Level 2 maturity rating criteria established by the Software Engineering Institute, as described in [17] and [19]. It is important for the reader to understand that this document does not claim to be the only way, the best way, nor even the most appropriate way to develop software. Its only intention is to more concretely describe the general software development used by the author, so that new tools could be developed in the presence of stronger assumptions about the steps in the development process. The utility of this document to other developers, novice or expert, remains to be seen. Regrettably, many worthy topics have been omitted from this document due to unavoidable time constraints. A list of such topics is contained in the conclusion of the paper.
Description
Keywords
Computer Science
Citation