📜 ⬆️ ⬇️

The book "Software Engineering. Textbook for universities. 5th edition updated and enlarged »

image Hi, Habrozhiteli! We decided to write a review about educational literature of S.A. Orlov, which provides a comprehensive approach to solving the most important issues arising in software projects.

The textbook is devoted to the systematic presentation of the principles, models, methods and metrics used in the engineering cycle of creating complex software systems. Outlines the basics of both classical and flexible development methods, management issues of classical and flexible software projects. The latest scientific and practical achievements characterizing the dynamics of development of this area are shown. For example, considerable attention is paid to the most “resonant” topics: service-oriented architecture and cloud technologies, subject-oriented approach and DevOps methodology, and development through behavior. A comprehensive approach to solving the most important issues arising in software projects is described.

Questions covered in this tutorial:


- software products (products);
- software life cycle;
- metrology and software quality;
- quality criteria: complexity, correctness, reliability, complexity;
- measurement and evaluation of software quality;
- software production process: methods, technology and tools;
- testing and debugging;
- documentation;
- software design;
- technological development cycle of software systems;
- teamwork to create programs;
- organization of the development process and support tools;
- automation of software design;
- principles of construction, structure and technology of using CAD software.

What's new in this edition?


First, the text has been updated to reflect the most impressive scientific and engineering innovations of recent years. The presentation of management issues of both classical and flexible software projects is significantly expanded. In particular, such classical issues as the construction of a hierarchical structure of work, the creation of a schedule for the critical path method, and the monitoring of the project progress by the method of mastered volume are set out. Introduced an explanation of the principles of agile and thrifty software development. The depth of presentation of material on the management of flexible Scrum projects has significantly increased. The specificity of Kanban management of lean development has been quite consistently and in detail considered. Secondly, new chapters on service-oriented architecture and cloud technologies have been added - the most resonant topics of modern software engineering. Third, an explanation is given of the essence of the domain-driven approach (Domain-Driven Design) and the latest DevOps methodology (Development and Operations), hot topics for discussion at all scientific and practical conferences of the software industry. Fourth, the presentation of software quality issues is now built on the basis of a new series of international standards ISO / IEC 25000, and 89 metrics are proposed for quantifying the quality characteristics.
')
The content of this textbook complies with the recommendations of the Computing Curricula 2005 international standard for computer education and the IEEE Computer Society of Education SWEBOK 2004 international standard for software engineering. The textbook consists of 21 chapters and three applications.

The first chapter is devoted to the basic concepts of software engineering. Here is the official classification of software engineering processes, examines in detail the basic ideas, content and quality assessment of classical, modern and promising software development processes. The range of categories of the processes discussed is quite wide: from disciplining “heavy” processes (linear and cyclic) to lightweight flexible processes.

The second chapter introduces the management of software projects - the basic concepts and specifics of the management process, project planning, risk management, personnel, documentation and software configuration. It explains the management issues of both classic and flexible software projects.

The third chapter considers a comprehensive assessment when planning a program project. Size-oriented and function-oriented cost metrics are introduced, the method of their use is discussed, the most popular model for estimating costs — the SOSOMO II — is described. Examples of a preliminary assessment of the software project and analysis of the sensitivity of the project to changes in development conditions are given.

The focus of the fourth chapter is the formation and analysis of customer requirements. Describes the types of requirements for software systems, discusses their characteristics and explains the main processes for working with requirements: the formation of requirements, analysis of requirements, management of changes in requirements.

The fifth chapter explains the classical methods of requirements analysis, focused on the procedural implementation of software systems. Here are the most popular, time-tested methods. The presentation is historical.

The sixth chapter is devoted to the basics and place of design in the life cycle of developing software systems. Architectural design with patterns is explained in detail. The principles, tools and design characteristics are defined: the separation of concepts, modularity, information closeness, step-by-step detailing, aspects, refactoring, complexity, coherence, coupling and metrics for their evaluation.

The seventh chapter is a review of classical, procedural software design methods. They are regarded as the historical roots of modern design methods.

The eighth chapter reveals the principles of object-oriented representation of software systems - the features of their abstraction, encapsulation, modularity, hierarchical organization. Here we study the characteristics of the main building elements of object-oriented software - objects and classes, as well as the relationship between them. The following is a brief summary of the basic concepts of the visual modeling language - UML, describes its modern version 2.3, and comments on the mechanisms for expanding the language.

The ninth chapter contains material on modern methods and means of forming initial customer requirements and analyzing detailed requirements in an object-oriented environment. The Use Case diagram and the activity diagram are discussed as means for generating requirements, and the communication diagram and sequence diagram are used as means for analyzing requirements. The method for estimating the costs of a software project focused on processing charts Use Case is explained in detail. Additionally, finite automata diagrams are described - a powerful tool for modeling event-driven objects.

The tenth chapter covers a wide range of design issues in an object-oriented style: the principles of detailed design, UML tools for architectural and detailed design; pattern-oriented design. The model of the industrial approach to component packaging of program code and the basic ideas of an aspect-oriented approach are illustrated. The principles of user interface design and interface usability metrics are defined, the issues of software deployment on computer systems hardware are outlined, the ideas of a domain-oriented development approach (DDD) and the newest approach, called DevOps, are explained.

The eleventh chapter presents the features of database development within an object-oriented software system.

In the twelfth chapter, the metric apparatus is explained to assess the quality of object-oriented design solutions: metrics for evaluating object-oriented connectivity, coupling; aspect-oriented metrics; the well-known metrics of Chidamber and Kemerer, Fernando Abreu, Lorenz and Kidd; describes the method of their application.

The thirteenth chapter solves the problem of presenting a unified process of developing object-oriented software systems, with concrete examples teaches how to apply this process. In addition, the XP process of extreme development is considered here. The use of the XP process is also illustrated by an example.

The fourteenth chapter defines the basic concepts of structural software testing (according to the white box principle) and introduces the most popular methods of this type of testing: testing the basic path, testing branches and relational operators, testing data streams, testing loops.

The fifteenth chapter introduces the concepts of functional software testing and describes specific testing methods - by splitting into equivalence, analyzing boundary values, building cause-effect diagrams.

The sixteenth chapter is focused on a comprehensive presentation of the content of the testing process: module testing, module integration testing in a software system; correctness testing, which verifies the compliance of the system with the requirements of the customer; system testing, which verifies the correctness of embedding software in a complete computer system. It also discusses the organization of software debugging (in order to eliminate the errors found during testing).

The seventeenth chapter teaches the characteristics of object-oriented testing, conducting such testing at the level of visual models, method level, class level and class interaction level. It also describes the development methodology through testing (TDD), used in flexible processes, as well as its development - the development methodology through behavior (BDD). In addition, the organization of the popular JUnit testing environment is discussed.

The eighteenth chapter discusses the ideology and the main characteristics of the service-oriented architecture, explains the standards used in this area, such principles of interaction with services as SOAP and REST. Considerable attention is paid to the steps of the development of new services, the specifics and problems of the formation of large services by combining the existing services of a smaller scale.

The nineteenth chapter focuses on a wide range of issues covering cloud technologies: the reasons for their occurrence, basic concepts (virtualization, consolidation, cloud definitions, basic characteristics, advantages of the cloud approach, categories of clouds, cloud service delivery models). Considerable attention is paid to the consideration of both the functional and structural organization of cloud applications.

The twentieth chapter reflects the problem of assessing the quality of software systems. Here we are talking about the concept of "software quality" and all aspects of its provision: objectives, factors, quantitative approach to determining the level of quality, the whole panorama of quality assurance activities is given. Technical reviews and audits, inspection, verification and validation, as well as the design of a software quality assurance plan are discussed separately.

The twenty first chapter demonstrates the possibilities of using the CASE-system of IBM Rational Software Architect to solve the problems of automating requirements formation, analysis, design and programming of a software product. The appendices describe the calculation tables for the COCOMO II cost model, list 89 metrics for assessing the quality of software products in accordance with the ISO / IEC 25023 standard, list terms of the UML language and a unified development process.

»More information about the book can be found on the publisher's website.
» Table of Contents
» Excerpt

For Habrozhiteley a discount of 15% on the coupon - Software engineering

Electronic version on Google Play

Source: https://habr.com/ru/post/321482/


All Articles