IBM Systems Journal · 1984 · 15 citations · 14 references
ComputingComputer ScienceFormal MethodsSoftware EngineeringSystems DesignDesign ProcessDesign SpecificationSoftware ArchitectureSoftware DesignFormal Requirement SpecificationPrototypingSoftware Development Life CycleSoftware Development MethodologySoftware Requirements Specification
This technical essay presents a perspective on the evolution and problems of the software development craft and how software engineering techniques show promise to solve these problems. It introduces architecture prototyping as a program development technique for improving software quality. Experience with large software systems shows that over half of the defects found after product release are traceable to errors in early product design. Furthermore, more than half the software life-cycle costs involve detecting and correcting design flaws. In this paper, we explore a disciplined approach to software development based on the use of formal specification techniques to express software requirements and system design. As a consequence, we can use techniques like rapid prototyping, static design analysis, design simulation, and dynamic behavior analysis to validate system design concepts prior to element design and implementation. We explore how these techniques might be organized in a software architecture prototyping facility that would be similar to the Computer-Aided Design and Manufacturing (CADAM) tools used in other engineering disciplines. We also examine the process by which software engineers might use these facilities to create more reliable systems.
14
A relational model of data for large shared data banks
E. F. Codd · Communications of the ACM · 1983 · 4.8K citations
W. P. Stevens, G. J. Myers, Larry L. Constantine · IBM Systems Journal · 1974 · 1.2K citations