Software engineering 1. Abstraction and modelling. (Q1773139)
From MaRDI portal
| This is the item page for this Wikibase entity, intended for internal use and editing purposes. Please use this page instead for the normal view: Software engineering 1. Abstraction and modelling. |
scientific article; zbMATH DE number 2161252
| Language | Label | Description | Also known as |
|---|---|---|---|
| default for all languages | No label defined |
||
| English | Software engineering 1. Abstraction and modelling. |
scientific article; zbMATH DE number 2161252 |
Statements
Software engineering 1. Abstraction and modelling. (English)
0 references
25 April 2005
0 references
The book under review is the first one from a series of three volumes that provides a compelling framework for a more comprehensive understanding of both formal and practical concerns of software engineering. The major feature distinguishing these textbooks from other current ones on software engineering is the natural manner in which the formal techniques smoothly glide from software design towards the requirements prescription phase and beyond to domain description. This first volume sets the stage for the entire series. In Part I, ``Opening'', the author defines a so-called software engineering triptych as a unified approach describing the relations between the three main software development phases: domain descriptions, requirements descriptions and software design. Domain engineering deals with the methodologies used to describe that area of human activity where the need for intended software arises from. Requirements engineering focuses on the contractual relation between a client and a software deliverer. Software design deals with concerns of software architecture, component composition and design, software development methodologies and so on. In a rough characterization, domain descriptions are viewed as having an indicative role, the requirements prescriptions are putative, and software specifications are imperative. Part II, ``Discrete mathematics'', contributes to the self-contained feature of the series by supplying the reader with the main basic notions of the mathematics that a software engineer has to be familiar with. The central approach of this part is the treatment of types (Chapter 5, ``Types''). The very basics of type theory and practice (abstract types, concrete types, atomic types, type constructors) are introduced in a systematic manner using the discrete mathematics foundations from Chapter 2, ``Numbers'', Chapter 3, ``Sets'', and Chapter 4, ``Cartesians''. Further topics on types are then developed using functions (Chapter 6), \(\lambda\)-calculus (Chapter 7) and algebras (Chapter 8). This way the reader is invited to an introspection of type approaches starting from simple types and going further to function types and quantification (Chapter 9, ``Mathematical logic''). This preparatory introduction into type theory aims at a better understanding of the RAISE Specification Language (RSL). Part III, ``Simple RSL'', covers the basics of this main specification tool. The author motivates his option for RSL mainly because it is closest to discrete mathematics and includes the most important expression facilities of other specification languages, as for instance the imperative style of VDM-SL, algebraic specification style of CASL and CafeOBJ and modular design. Besides, RSL allows for expression concurrency. The presentation does not follow the reference manual style, the author inclining instead towards a more pragmatic approach by acting the topics according as they are needed in a real abstraction and modelling activity. Chapters 10--11 cover the very basics of RSL, namely the atomic types, values and functions. Chapter 12, ``Property-oriented and model-oriented abstraction'', gives a review of the notion of property-oriented abstraction, introduces the concept of model-oriented abstraction and relates these two ideas. The next five chapters (13--17) deal with a number of model-oriented representations and operation abstraction techniques and tools based on sets, cartesians, lists, maps and high-order functions. The RSL type constructs are summarized and further developed in Part IV. Chapter 18, ``Types in RSL'' introduces the type concepts of constructors and destructors, union types, variant types, record type definitions and subtypes. Part V, ``Specification programming'' focuses on illustrating a spectrum of specification programming which spans from functional (Chapter 19) and imperative (Chapter 20) specification to parallel specification programming (Chapter 21). Here, the Communicating Sequential Processes language (CSP) is used as a tool for expressing parallelism. Next, CSP is extended to a RAISED version (RSL/CSP) and the presentation focuses on principles and laws for modelling concurrent behavior in RSL. All chapters are supplied with a long list of consistent exercises. The book also contains a rather complete Glossary containing 788 software engineering specific items. By its consistency and rigor, the book is, undoubtedly, remarkably useful to professional software developers.
0 references
abstract type
0 references
algebra
0 references
applicative programming
0 references
assertion
0 references
attribute
0 references
axiom
0 references
binding
0 references
calculus
0 references
Cartesian
0 references
channel
0 references
concurrency
0 references
constructor
0 references
CSP
0 references
data
0 references
deadlock
0 references
design
0 references
destructor
0 references
documentation
0 references
engineering
0 references
expression
0 references
finite state machine
0 references
fix point
0 references
function
0 references
grammar
0 references
graph algebra
0 references
implementation
0 references
inference
0 references
interpretation
0 references
invariant
0 references
Java
0 references
list
0 references
LSC
0 references
map
0 references
model
0 references
module
0 references
MSC
0 references
nondeterminism
0 references
object-oriented
0 references
overloading
0 references
parallelism
0 references
Petri net
0 references
process
0 references
quantification
0 references
RAISE
0 references
requirements
0 references
RSL
0 references
sequence
0 references
signature
0 references
software
0 references
specification
0 references
subtyping
0 references
type
0 references
union
0 references
validation
0 references
0.8049311637878418
0 references
0.7929054498672485
0 references
0.7827728390693665
0 references