Architecture Prototyping in the Software Engineering Environment

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.

[1]  John McLean,et al.  Acm Sigsoft Software Engineering Notes Vol7 No 5 Dec 1982 Page 45 , 2022 .

[2]  Ronald J. Pearsall Techniqye for Assessing External Design of Software , 1982, IBM Syst. J..

[3]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[4]  Arthur G. Duncan Prototyping in ADA: a case study , 1982 .

[5]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[6]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[7]  Stephen N. Zilles,et al.  Graphical representation and analysis of information systems design , 1980, DATB.

[8]  Raymond M. Bryant Discrete system simulation in Ada , 1982 .

[9]  Ernest A. Hershey,et al.  PSL/PSA: A Computer-Aided Technique for Structured Documentation and Analysis of Information Processing Systems , 1976, IEEE Transactions on Software Engineering.

[10]  Michael Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[11]  Peter Wegner,et al.  The Vienna Definition Language , 1972, CSUR.

[12]  Paula S. Newman,et al.  Towards an Integrated Development Environment , 1982, IBM Syst. J..

[13]  Peter P. Chen The entity-relationship model: toward a unified view of data , 1975, VLDB '75.

[14]  E. QuinnanR. The management of software engineering , 1980 .

[15]  Robert Balzer,et al.  Using symbolic execution to characterize behavior , 1982 .

[16]  Glenford J Myers,et al.  Reliable software through composite design , 1975 .

[17]  Marvin V. Zelkowitz,et al.  Rapid prototyping workshop: an overview , 1982 .

[18]  Laszlo A. Belady,et al.  GREENPRINT: A Graphic Representation of Structured Programs , 1980, IBM Syst. J..

[19]  Jerry L. Archibald The external structure: Experience with an automated module interconnection language , 1981, J. Syst. Softw..

[20]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[21]  Roland T. Mittermeir HIBOL: a language for fast prototyping in data processing environments , 1982 .

[22]  E. F. Codd,et al.  A relational model of data for large shared data banks , 1970, CACM.

[23]  James F. Stay HIPO and Integrated Program Design , 1976, IBM Syst. J..

[24]  Burt M. Leavenworth,et al.  Abstract Design and Program Translator: New Tools for Software Design , 1983, IBM Syst. J..

[25]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[26]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[27]  Michael Jackson,et al.  Principles of program design , 1975 .

[28]  Douglas T. Ross,et al.  Structured Analysis for Requirements Definition , 1977, IEEE Transactions on Software Engineering.

[29]  Allan M. Stavely Models as executable designs , 1982 .

[30]  Meg E. Maurer Full-Screen Testing of Interactive Applications , 1983, IBM Syst. J..