The logic of programming
Data structures and algorithms 3: multi-dimensional searching and computational geometry
Data structures and algorithms 3: multi-dimensional searching and computational geometry
Foundations of logic programming
Foundations of logic programming
Communicating sequential processes
Communicating sequential processes
Miranda: a non-strict functional language with polymorphic types
Proc. of a conference on Functional programming languages and computer architecture
Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
VDM-Europe Symposium 1987 on VDM '87: VDM---a formal method at work
Basic polymorphic typechecking
Science of Computer Programming
Computational category theory
Algebraic theory of processes
A computational logic handbook
A computational logic handbook
The programming language Oberon
Software—Practice & Experience
Algebraic specification
The Z notation: a reference manual
The Z notation: a reference manual
Communication and concurrency
Proofs and types
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Programming from specifications
Programming from specifications
Communications of the ACM - Special issue: Soviet computing
Handbook of theoretical computer science (vol. B)
Systems programming with Modula-3
Systems programming with Modula-3
Semantics with applications: a formal introduction
Semantics with applications: a formal introduction
Modern operating systems
Semantics of programming languages: structures and techniques
Semantics of programming languages: structures and techniques
Action semantics
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
The RAISE specification language
The RAISE specification language
Modal logics for mobile processes
Selected papers of the 3rd workshop on Concurrency and compositionality
A logical approach to discrete math
A logical approach to discrete math
ACM Transactions on Programming Languages and Systems (TOPLAS)
Control of Infinite Behavior of Finite Automata
SIAM Journal on Control and Optimization
Distributed operating systems
Principles of protocol design
Software requirements & specifications: a lexicon of practice, principles and prejudices
Software requirements & specifications: a lexicon of practice, principles and prejudices
Temporal verification of reactive systems: safety
Temporal verification of reactive systems: safety
Formalizing style to understand descriptions of software architecture
ACM Transactions on Software Engineering and Methodology (TOSEM)
Structuring Z specifications with views
ACM Transactions on Software Engineering and Methodology (TOSEM)
Evolving algebras 1993: Lipari guide
Specification and validation methods
Annotated bibliography on evolving algebras
Specification and validation methods
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Four dark corners of requirements engineering
ACM Transactions on Software Engineering and Methodology (TOSEM)
Control flow semantics
Formal methods: state of the art and future directions
ACM Computing Surveys (CSUR) - Special ACM 50th-anniversary issue: strategic directions in computing research
Haskell: the craft of functional programming
Haskell: the craft of functional programming
Computability and complexity: from a programming perspective
Computability and complexity: from a programming perspective
Computer organization and design (2nd ed.): the hardware/software interface
Computer organization and design (2nd ed.): the hardware/software interface
Colored Petri nets (vol. 3)
C++: how to program (2nd ed.)
Software architecture in practice
Software architecture in practice
Java: data structures and programming
Java: data structures and programming
“Formal methods” technology transfer will fail
Journal of Systems and Software - Special issue on formal methods technology transfer
Modelling systems: practical tools and techniques in software development
Modelling systems: practical tools and techniques in software development
An axiomatic basis for computer programming
Communications of the ACM
Distributed Algorithms
The Science of Programming
Software Engineering Economics
Software Engineering Economics
The Craft of Programming
Principles of Logic and Logic Programming
Principles of Logic and Logic Programming
The Responsible Software Engineer: Selected Readings in It Professionalism
The Responsible Software Engineer: Selected Readings in It Professionalism
A Discipline of Programming
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
LOTOSphere: Software Development with Lotos
LOTOSphere: Software Development with Lotos
Introduction To Automata Theory, Languages, And Computation
Introduction To Automata Theory, Languages, And Computation
A Method of Programming
Computer
Towards a Formal Description of Ada
Towards a Formal Description of Ada
The Vienna Development Method: The Meta-Language
The Vienna Development Method: The Meta-Language
Proceedings of the VDM-Europe Symposium on VDM - A Formal Method at Work
VDM '87 Proceedings of the VDM-Europe Symposium on VDM - A Formal Method at Work
The Steam-Boiler Problem - A TLT Solution
Formal Methods for Industrial Applications, Specifying and Programming the Steam Boiler Control (the book grow out of a Dagstuhl Seminar, June 1995).
An Algebra of Boolean Processes
CAV '91 Proceedings of the 3rd International Workshop on Computer Aided Verification
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
LISP 1.5 Programmer's Manual
A formal approach to component-based software engineering: education and evaluation
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Support for teaching formal methods
ACM SIGCSE Bulletin
Support for teaching formal methods
Working group reports from ITiCSE on Innovation and technology in computer science education
Pinnacles of software engineering: 25 years of formal methods
Annals of Software Engineering
Domain Engineering: A Software Engineering Discipline in Need of Research
SOFSEM '00 Proceedings of the 27th Conference on Current Trends in Theory and Practice of Informatics
Hi-index | 0.00 |
This paper analyses current principles of software development: from domains via requirements to design. On the basis of this analysis we outline a structure and contents of professional software engineering. From this we extract some requirements to a university graduate (M.Sc.) curriculum in software engineering. We summarise the four software engineering axes that we wish to emphasize in this paper: software engineering as a responsible profession, abstraction, linguistics and logic, methodology, formal specification and design calculi, domain, requirements and software design engineering. We view (i) engineering as ‘walking the bridge between science and technology’ – with engineers using mathematics as and when appropriate, (ii) methods as ‘sets of principles for analysing problems and for selecting and applying techniques and tools in order to efficiently construct an efficient artifact (here software),’ and (iii) software engineering as consisting of ‘domain engineering, requirements engineering and software design (engineering)’ – with software development comprising all these stages and teams of engineers specially educated in sub‐branches of software engineering. Since software engineering produces and consumes descriptions and since professional engineers create varieties of abstractions we conclude that they make use of varieties of formal specification languages and design calculi – to represent abstract and concrete descriptions and to calculate over and between these. The paper may be incomplete in not covering aspects of AI and knowledge based engineering. It also does not deal with the dimensioning and performance evaluation of hardware and software systems. The paper, in its attempt at a comprehensive analysis and proposal, is long. Our analysis subsumes that of ACM and IEEE [ACM/IEEE‐CS June 1991] to which we add!