Where do software architectures come from? Systematic development from domains and requirements. A re-assessment of software engineering?
Dines Bjørner · Unisa Institutional Repository (University of South Africa) · 1998
In this paper we show how details of a software design emerges in two steps: software architecture and program organisation and from first having established careful descriptions of the application domain and of functional and non-functional requirements. A major aim & objective of this paper is a reassessment of software engineering in the context of extensive use of formal techniques (formal methods: specification and calculi) and programming methodological: to illustrate how software designs partially evolve from careful (formal) requirements descriptions which themselves partially evolve from careful (formal) application domain descriptions. We believe that this paper covers some new concepts: • the careful construction of informal as well as formal descriptions of application domains without any reference to software (i.e. computing); • the systematic (posit/invent & verify/prove) "derivation" of requirements from domain descriptions; • and the separation of requirements and software design concerns: - functional requirements as implemented through software architectures, and - non-functional requirements as implemented through program organisations.