Skip to main content

2017 | Buch

Concise Guide to Software Engineering

From Fundamentals to Application Methods

insite
SUCHEN

Über dieses Buch

This essential textbook presents a concise introduction to the fundamental principles of software engineering, together with practical guidance on how to apply the theory in a real-world, industrial environment. The wide-ranging coverage encompasses all areas of software design, management, and quality.Topics and features: presents a broad overview of software engineering, including software lifecycles and phases in software development, and project management for software engineering; examines the areas of requirements engineering, software configuration management, software inspections, software testing, software quality assurance, and process quality; covers topics on software metrics and problem solving, software reliability and dependability, and software design and development, including Agile approaches; explains formal methods, a set of mathematical techniques to specify and derive a program from its specification, introducing the Z specification language; discusses software process improvement, describing the CMMI model, and introduces UML, a visual modelling language for software systems; reviews a range of tools to support various activities in software engineering, and offers advice on the selection and management of a software supplier; describes such innovations in the field of software as distributed systems, service-oriented architecture, software as a service, cloud computing, and embedded systems; includes key learning topics, summaries and review questions in each chapter, together with a useful glossary.This practical and easy-to-follow textbook/reference is ideal for computer science students seeking to learn how to build high quality and reliable software on time and on budget. The text also serves as a self-study primer for software engineers, quality professionals, and software managers.

Inhaltsverzeichnis

Frontmatter
Chapter 1. Background
Abstract
This chapter presents a broad overview of software engineering and discusses various software lifecycles and the phases in software development. We discuss requirements gathering and specification, software design, implementation, testing and maintenance. The lightweight Agile methodology is introduced, and it has become very popular in industry. Mathematics may potentially assist software engineers in delivering high-quality software products that are safe to use and the extent to which mathematics should be employed remains a topic of active debate.
Gerard O’Regan
Chapter 2. Software Project Management
Abstract
This chapter provides an introduction to project management for traditional software engineering, and we discuss project estimation, project planning and scheduling, project monitoring and control, risk management, managing communication and change and managing project quality.
Gerard O’Regan
Chapter 3. Requirements Engineering
Abstract
This chapter discusses requirements engineering and discusses activities such as requirements gathering, requirements elicitation, requirements analysis, requirements management, and requirements verification and validation.
Gerard O’Regan
Chapter 4. Software Design and Development
Abstract
This chapter discusses design and development, and software design is the blueprint of the solution to be developed. It is concerned with the high-level architecture of the system, as well as the detailed design that describes the algorithms and functionality of the individual programs. The detailed design is then implemented in a programming language such as C++ or Java. We discuss software development topics such as software reuse, customized-off-the-shelf software (COTS) and open-source software development.
Gerard O’Regan
Chapter 5. Configuration Management
Abstract
This chapter discusses configuration management and discusses the fundamental concept of a baseline. Configuration management is concerned with identifying those deliverables that must be subject to change control and controlling changes to them.
Gerard O’Regan
Chapter 6. Software Inspections
Abstract
This chapter discusses software inspections, which play an important role in building quality into a product. The well-known Fagan inspection process that was developed at IBM in the 1970s is discussed, as well as lighter review and walkthrough methodologies.
Gerard O’Regan
Chapter 7. Software Testing
Abstract
This chapter is concerned with software testing and discusses the various types of testing that may be carried out during the project. We discuss test planning, test case definition, test environment set-up, test execution, test tracking, test metrics, test reporting and testing in an e-commerce environment.
Gerard O’Regan
Chapter 8. Supplier Selection and Management
Abstract
This chapter is concerned with the selection and management of a software supplier. It discusses how candidate suppliers may be identified, formally evaluated against defined selection criteria, and how the appropriate supplier is selected. We discuss how the selected supplier is managed during the project.
Gerard O’Regan
Chapter 9. Software Quality Assurance
Abstract
This chapter discusses software quality assurance and the importance of process quality. It is a premise in the quality field that good processes and conformance to them are essential for the delivery of high-quality product, and this chapter discusses audits and describes how they are carried out.
Gerard O’Regan
Chapter 10. Software Metrics and Problem-Solving
Abstract
This chapter is concerned with metrics and problem-solving, and this includes a discussion of the Balanced Scorecard which assists in identifying appropriate metrics for the organization. The Goal, Question, Metrics (GQM) approach is discussed, and this allows metrics related to the organization goals to be defined. A selection of sample metrics for an organization is presented, and problem-solving tools such as fishbone diagrams, Pareto charts, trend charts are discussed.
Gerard O’Regan
Chapter 11. Software Reliability and Dependability
Abstract
This chapter discusses software reliability and dependability and covers topics such as software reliability and software reliability models, the Cleanroom methodology, system availability, safety and security critical systems and dependability engineering.
Gerard O’Regan
Chapter 12. Formal Methods
Abstract
This chapter discusses formal methods, which consist of a set of mathematic techniques that provide an extra level of confidence in the correctness of the software. They consist of a formal specification language and employ a collection of tools to support the syntax checking of the specification, as well as the proof of properties of the specification. They allow questions to be asked about what the system does independently of the implementation, and they may be employed to formally state the requirements of the proposed system and to derive a program from its mathematical specification. They may be employed to provide a rigorous proof that the implemented program satisfies its specification, and they have been applied mainly to the safety-critical field.
Gerard O’Regan
Chapter 13. Z Formal Specification Language
Abstract
This chapter presents the Z specification language, which is one of the most widely used formal methods. Z is a formal specification language based on Zermelo set theory. It was developed at the Programming Research Group at Oxford University in the early 1980s. Z specifications are mathematical and employ a classical two-valued logic. The use of mathematics ensures precision and allows inconsistencies and gaps in the specification to be identified. Theorem provers may be employed to demonstrate that the software implementation meets its specification.
Gerard O’Regan
Chapter 14. Unified Modelling Language
Abstract
This chapter presents the unified modelling language (UML), which is a visual modelling language for software systems, and it is used to present several views of the system architecture. It was developed at rational corporation as a notation for modelling object-oriented systems. We present various UML diagrams such as use case diagrams, sequence diagrams and activity diagrams.
Gerard O’Regan
Chapter 15. Software Process Improvement
Abstract
This chapter discusses software process improvement. It begins with a discussion of a software process and discusses the benefits that may be gained from a software process improvement initiative. Various models that support software process improvement are discussed, and these include the Capability Maturity Model Integration (CMMI), ISO 9000, Personal Software Process (PSP) and Team Software Process (TSP).
Gerard O’Regan
Chapter 16. Capability Maturity Model Integration
Abstract
This chapter gives an overview of the CMMI model and discusses its five maturity levels and their constituent process areas. We discuss both the staged and continuous representations of the CMMI, and SCAMPI appraisals that indicate the extent to which the CMMI has been implemented in the organization, as well as identifying opportunities for improvement.
Gerard O’Regan
Chapter 17. Software Engineering Tools
Abstract
This chapter discusses various tools to support the various software engineering activities. The focus is first to define the process and then to find tools to support the process. Tools to support project management are discussed as well as tools to support requirements engineering, configuration management, design and development activities and software testing.
Gerard O’Regan
Chapter 18. Agile Methodology
Abstract
This chapter discusses the Agile methodology which is a popular lightweight approach to software development. Agile provides opportunities to assess the direction of a project throughout the development lifecycle, and ongoing changes to requirements are considered normal in the Agile world. It has a strong collaborative style of working, and it advocates adaptive planning and evolutionary development.
Gerard O’Regan
Chapter 19. A Miscellany of Innovation
Abstract
This chapter discusses innovation in the software field including miscellaneous topics such as distributed systems, service-oriented architecture (SOA), software as a service (SaaS), cloud computing and embedded systems. We discuss the need for innovation in software engineering and discuss some recent innovations including aspect-oriented software engineering (AOSE).
Gerard O’Regan
Chapter 20. Epilogue
Abstract
This chapter is the concluding chapter in which we summarize the journey that we have travelled in this book.
Gerard O’Regan
Backmatter
Metadaten
Titel
Concise Guide to Software Engineering
verfasst von
Gerard O'Regan
Copyright-Jahr
2017
Electronic ISBN
978-3-319-57750-0
Print ISBN
978-3-319-57749-4
DOI
https://doi.org/10.1007/978-3-319-57750-0