Skip to main content

2022 | Buch

Concise Guide to Software Engineering

From Fundamentals to Application Methods

insite
SUCHEN

Über dieses Buch

This 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
1. Fundamentals of Software Engineering
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
2. Professional Responsibility of Software Engineers
Abstract
This chapter discusses the professional responsibilities of software engineers. Engineers have a professional responsibility to build products properly and to ensure that they are safe for the public to use. They are required to behave ethically with their clients and to adhere to the code of ethics of the engineering profession.
Gerard O’Regan
3. Ethical Software Engineering
Abstract
This chapter discusses ethical software engineering where the ethical software engineer needs to examine both the technical and the ethical dimensions of decisions that affect wider society. We discuss several case studies including the Volkswagen emissions scandal where engineers installed a “defeat device” to cheat on the emissions test, and we also discuss the infamous case of the Therac-25 radiation machine whose malfunction led to the deaths of several patients.
Gerard O’Regan
4. 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
5. 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
6. 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
7. 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
8. 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
9. Ethics and Privacy
Abstract
This chapter discusses ethics and privacy where professional ethics are a code of conduct that governs how members of a profession deal with each other and with third parties. It expresses ideals of human behaviour, and the fundamental values of the organization, and is an indication of its professionalism. Privacy is defined as “the right to be left alone”, and specifies there should be no intrusion upon seclusion, and no public disclosure of private facts or false information.
Gerard O’Regan
10. Software Metrics and Problem Solving
Abstract
This chapter is concerned with metrics and problem solving, and this includes a discussion of the balanced score card 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
11. 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
12. 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
13. 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 is essential for the delivery of high quality product, and this chapter discusses audits, and describes how they are carried out.
Gerard O’Regan
14. 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
15. 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
16. 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
17. Z 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
18. 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
19. 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
20. 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
21. 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
22. A Miscellany of Innovation
Abstract
This chapter discusses innovation in the software field including miscellaneous topics such as distributed systems, service-oriented architecture, software as a service, cloud computing and embedded systems. We discuss the need for innovation in software engineering and discuss some recent innovations including aspect-oriented software engineering.
Gerard O’Regan
23. Legal Aspects of Software Engineering
Abstract
This chapter is concerned with the application of the legal system to the computing field. This includes the protection of intellectual property such as patents, copyright, trademarks and trade secrets, and the resolution of disputes between parties.
Gerard O’Regan
24. Cybersecurity and Cybercrime
Abstract
This chapter discusses cybersecurity and cybercrime. Computer crime (or cybercrime) is a crime that involves a computer and a network. The computer may be the vehicle by which the crime was conducted, or it may be the target of the crime. Cybersecurity is the protection of information through good security practices, including the protection of confidentiality, integrity, and availability of data. It is achieved through policies that ensure consistency in employee behaviour in the use of computer resources, as well as training and awareness of security in the workplace.
Gerard O’Regan
25. 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
2022
Electronic ISBN
978-3-031-07816-3
Print ISBN
978-3-031-07815-6
DOI
https://doi.org/10.1007/978-3-031-07816-3

Premium Partner