Software engineering 1. Abstraction and modelling. (Q1773139)

From MaRDI portal
Revision as of 05:39, 5 March 2024 by Import240304020342 (talk | contribs) (Set profile property.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
scientific article
Language Label Description Also known as
English
Software engineering 1. Abstraction and modelling.
scientific article

    Statements

    Software engineering 1. Abstraction and modelling. (English)
    0 references
    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

    Identifiers

    0 references
    0 references
    0 references
    0 references
    0 references
    0 references