A rational design process: How and why to fake it
IEEE Transactions on Software Engineering
A simple approach to specifying concurrent systems
Communications of the ACM
Software Engineering
Godel, Escher, Bach: An Eternal Golden Braid
Godel, Escher, Bach: An Eternal Golden Braid
A taxonomy for computer science
Proceedings of the IFIP TC3/WG3.2 International Conference on Informatics (computer science) as a Discipline and in Other Disciplines: what is common?: Informatics in Higher Education, Views on informatics and non-informatics curricula
Proof-Based System Engineering and Embedded Systems
Lectures on Embedded Systems, European Educational Forum, School on Embedded Systems
Hi-index | 0.00 |
This paper tries to contribute to the understanding of the essence of rational systems design and verification. Information technologists and teachers and students of computer science may find the concepts presented here helpful to disentangle complex achievements of computer science and re-use their constituents in other contexts, but also to view their own activities in the light of other disciplines. First a consistent set of notions and a diagram and a formula are introduced, with respect to which important aspects of a rational design process can be understood, together with a proposal for a consistent terminology. Subsequently, formal definitions are provided for basic concepts of formal methods and a mathematical foundation for our formula. They shall illustrate that the rôle of mathematics in development and verification is not limited to useful calculations: Ideally, designing is a creative mathematical activity, which comprises finding a theorem, if necessary strengthening its assumptions until it can be proven. Although for good reasons most systems are designed without use of formal methods it may be a source of useful insight to understand all design as an 'approximation' of such a mathematical activity. This leads amongst others to a taxonomy of design decisions and of fault tolerance. And it may help to relate paradigms, theories, methods, languages, and tools from different areas of computer science to each other to make optimal use of them.