Requirements are the New Code

Unforeseen safety and security failures in complex software-intensive systems arise due to hidden dependencies between system components and artifacts. These stem from stakeholder misunderstanding of system artifact and component interactions. In most systems, artifacts are defined and described, and components are designed, implemented, and combined by engineers in multiple disciplines. Also, artifacts are described in places separated by hundreds of pages or files and in different domain and description languages, including natural, graphical, and domain-specific languages. Hence, it is of primary importance, but also currently extremely difficult, to discover these hidden dependencies. To help engineers find these dependencies, and hence better foresee erroneous interactions, an approach that enables and promotes a holistic, hierarchical, and incremental description of a system is needed. In this article, we introduce EXMPLRAD. EXMPLRAD is a human-centered language that enables the description and integration of informal and formal requirements, architectural and design descriptions, source code, and configuration artifacts, and their relationships in a format that resembles code. A holistic system model described using EXMPLRAD enables the creation and application of methods for the automatic discovery of hidden dependencies. We demonstrate this with a case study that analyzes the seL4 microkernel's Inter- Process Communication subsystem including the modeling of its requirements, architecture, and source code in C.

[1]  Michael Norrish,et al.  seL4: formal verification of an operating-system kernel , 2010, Commun. ACM.

[2]  Bertrand Meyer,et al.  Agile! , 2014, Springer International Publishing.

[3]  Kevin Elphinstone,et al.  Verified Protection Model of the seL4 Microkernel , 2008, VSTTE.

[4]  Nancy G. Leveson,et al.  Role of Software in Spacecraft Accidents , 2004 .

[5]  C. M. Holloway Why engineers should consider formal methods , 1997, 16th DASC. AIAA/IEEE Digital Avionics Systems Conference. Reflections to the Future. Proceedings.

[6]  Sanjeev Shrestha Extended Programming and Design: A Language and Toolset for Integrating Requirements, Architecture, Design and Implementation when Developing Complex Software Systems , 2015 .

[7]  Andrew Boyton A Verified Shared Capability Model , 2009, Electron. Notes Theor. Comput. Sci..

[8]  Václav Rajlich,et al.  Changing the paradigm of software engineering , 2006, CACM.

[9]  Orit Hazzan,et al.  The Agile Manifesto , 2014 .

[10]  Jim Alves-Foss,et al.  Hidden Implementation Dependencies in High Assurance and Critical Computing Systems , 2006, IEEE Transactions on Software Engineering.

[11]  Jim Alves-Foss,et al.  Implementation-Oriented Secure Architectures , 2007, 2007 40th Annual Hawaii International Conference on System Sciences (HICSS'07).

[12]  John C. Knight,et al.  Improving Communication of Critical Domain Knowledge in High-Consequence Software Development: an Em , 2003 .

[13]  Robyn R. Lutz,et al.  Empirical analysis of safety-critical anomalies during operations , 2004, IEEE Transactions on Software Engineering.

[14]  Gernot Heiser,et al.  From L3 to seL4 what have we learnt in 20 years of L4 microkernels? , 2013, SOSP.

[15]  Bill Curtis,et al.  A field study of the software design process for large systems , 1988, CACM.

[16]  Gernot Heiser,et al.  Comprehensive formal verification of an OS microkernel , 2014, TOCS.

[17]  Sridhar P. Nerur,et al.  Can Agile and Traditional Systems Development Approaches Coexist? An Ambidextrous View , 2006, Inf. Syst. Manag..

[18]  Robyn R. Lutz,et al.  Analyzing software requirements errors in safety-critical, embedded systems , 1993, [1993] Proceedings of the IEEE International Symposium on Requirements Engineering.