Software Engineering 1
The art, craft, discipline, logic, practice, and science of developing large-scale software products needs a believable, professional base. The textbooks in this three-volume set combine informal, engineeringly sound practice with the rigour of formal, mathematics-based approaches.
Volume 1 covers the basic principles and techniques of formal methods abstraction and modelling. First this book provides a sound, but simple basis of insight into discrete mathematics: numbers, sets, Cartesians, types, functions, the Lambda Calculus, algebras, and mathematical logic. Then it trains its readers in basic property- and model-oriented specification principles and techniques. The model-oriented concepts that are common to such specification languages as B, VDM-SL, and Z are explained here using the RAISE specification language (RSL). This book then covers the basic principles of applicative (functional), imperative, and concurrent (parallel) specification programming. Finally, the volume contains a comprehensive glossary of software engineering, and extensive indexes and references.
These volumes are suitable for self-study by practicing software engineers and for use in university undergraduate and graduate courses on software engineering. Lecturers will be supported with a comprehensive guide to designing modules based on the textbooks, with solutions to many of the exercises presented, and with a complete set of lecture slides.
From basic principles – with a minimum of programming knowledge – to very advanced principles and techniques – in three volumesYou’ll learn to describe application domains, both informally and formally Then You’ll learn how to prescribe software requirements, again both informally and formally, "derived" from domain descriptions! And finally, You’ll learn how to specify software designs from requirements: from systematically to formallyYou’ll learn formal methods the "lite & easy" way – from one of the originators!You’ll learn about the syntax and semantics of programming languages and systems, and – from that – You’ll learn to develop interpreters and compilersYou’ll learn to develop real software: For banking, railways, hospitals, logistics, air traffic control, production (manufacturing), etc.!You’ll learn functional programming, imperative programming, logic programming, and parallel programmingYou’ll learn about model-oriented and property-oriented, ie. algebraic specificationsYou’ll learn about RAISE, Temporal Logics, Petri nets, Statecharts, Message and Live Sequence Charts (MSCs, LSCs), UML Class Diagrams, and a lot more!