We use cookies to distinguish you from other users and to provide you with a better experience on our websites. Close this message to accept cookies or find out how to manage your cookie settings.
To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure [email protected]
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
The latest version of 'Programming in Ada' covers the full details of the core language Ada 2022 as approved by ISO in 2023, including new features that aid program proof and the efficient use of multicore architectures. The book is arranged in four parts. The first part introduces the key ideas to the newcomer with a working example illustrating the basic ideas. The algorithmic features, structural features such as OOP and multitasking, and details of the standard library and interaction with the external environment are all covered in subsequent parts. This comprehensive guide includes several working examples and is enhanced by a range of supplementary online materials, including a dozen complete executable programs, five of which illustrate important new features. 'Programming in Ada' is a must-have for anyone looking to learn Ada programming language, and will serve as a definitive reference for years to come.
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.
For any software project, large or small, architecture is key to managing the intrinsic complexity of software. The design of a system includes its architecture, so, more broadly, design is key to managing software complexity. Informally, architecture partitions a system into parts that are easier to work with than the system as a whole. Let us refer to the parts as architectural elements, or simply elements. With a clean architecture, we can reason about the system in terms of the properties of its elements, without worrying about how the elements are implemented.
Software engineering is the application of engineering methods to software development and evolution. Its principles and practices address three fundamental goals: discover user requirements, manage software complexity, and build quality products and services. This chapter introduces the goals, their associated challenges, and how to deal with the challenges.
The selection of a development process is one of the earliest decisions in the life of a software project. A process orchestrates the workings of a team: it guides what each role does and when in order to define and build a product. This chapter introduces the two main groupings of processes: agile and plan-driven. Agile processes are designed to accommodate requirements changes. Plan-driven processes emphasize careful upfront design. Each process class within these groupings addresses some, but not all, of the challenges faced by projects. Teams therefore customize their processes by borrowing best practices as needed. For example, all teams benefit from essentially the same testing practices.
The combination of reviews, static analysis, and testing is highly effective at detecting defects during software development. By themselves, the individual techniques are much less effective; see . Testing is covered in ; the other techniques are covered in this chapter.
A use case describes how a user interacts with a system to accomplish something of value to the user. Written in plain English, use cases are intended to be a single description that is suitable for all stakeholders.