Автор: Sethi Ravi
Издательство: Cambridge University Press
Год: 2023
Страниц: 807
Язык: английский
Формат: pdf
Размер: 10.2 MB
Software engineering is as much about teamwork as it is about technology. This introductory textbook covers both. For courses featuring a team project, it offers tips and templates for aligning classroom concepts with the needs of the students' projects. Students will learn how software is developed in industry by adopting agile methods, discovering requirements, designing modular systems, selecting effective tests, and using metrics to track progress. The book also covers the 'why' behind the 'how-to', to prepare students for advances in industry practices. The chapters explore ways of eliciting what users really want, how clean architecture divides and conquers the inherent complexity of software systems, how test coverage is essential for detecting the inevitable defects in code, and much more. Ravi Sethi provides real-life case studies and examples to demonstrate practical applications of the concepts. Online resources include sample project materials for students, and lecture slides for instructors.
This book is intended for a junior - or senior-level introductory course in software engineering. Students are expected to have enough programming maturity to engage in a team project. They are not expected to have any prior team experience.
Getting Started: Chapters 1–2 Chapter 1 introduces key topics that are explored in the rest of the book: requirements, software architecture, and testing. The chapter also has a section on social responsibility and professional conduct.
Chapter 2 deals with processes, which orchestrate team activities. A team’s culture and values guide activities that are not covered by the rules of a process. Process models tend to focus on specific activities, leaving the rest to the team: Scrum focuses on planning and review events, XP on development practices, V processes on testing, and the Spiral Framework on risk reduction. The chapter discusses how a team can combine best practices from these process models for its project.
What to Build? Chapters 3–5 Requirements development is iterative, with both Agile and plan-driven methods. The difference is that Agile methods favor working software to validate what to build, whereas plan-driven methods validate a specification document. Chapter 3 deals with elicitation (discovery) of the wants and goals that users communicate through their words, actions, and emotions.
Design and Architecture: Chapters 6–7 Architecture is a subset of design, so the following comments carry over to design. Software architecture, Chapter 6, is key to managing the complexity of software. A modular system is built up from units such as classes, so the chapter introduces UML (Unified Modeling Language) class diagrams and includes guidelines for designing modular systems. For system architecture, the chapter introduces views and how to describe a system in terms of key view(s).
A pattern outlines a solution to a problem that occurs over and over again. Chapter 7 covers the following architectural patterns: layering, shared data, observer, publish-subscribe, model-view-controller, client-server, and broker. Client-server architectures enable new software to be deployed to a production system: a load balancer directs some of the incoming traffic to the new software on a trial basis, until the new software is ready to go into production. The ability to add new software to a production system is needed for continuous deployment.
Software Quality: Chapters 8–10 The combination of reviews (architecture and code), static analysis, and testing is much more effective for defect detection than any of these techniques by themselves. Chapter 8 discusses reviews and static analysis. The focus of the chapter is on static or compile-time techniques.
Chapter 9 is on testing, which is done by running code on specific test inputs. A test set is considered good enough if it meets the desired coverage criteria. For code coverage, the chapter includes statement, branch (decision), and MC/DC coverage. For input-domain coverage, the chapter includes equivalence partitioning and combinatorial testing.
The quality theme continues into Chapter 10, which applies metrics and measurement to the goal of quality assessment and improvement. The chapter introduces six forms of quality: functional, process, product, operations (ops), aesthetics, and customer satisfaction. Ops quality refers to quality after a system is installed at a customer site.
Contents:
Скачать Software Engineering: Basic Principles and Best Practices