Books

Applying the SEMAT Kernel

SEMAT (Software Engineering Methods and Theory) is an international initiative designed to identify a common ground, or universal standard, for software engineering. It is supported by some of the most distinguished contributors to the field. Creating a simple language to describe methods and practices, the SEMAT team expresses this common ground as a kernel–or framework–of elements essential to all software development.

The Essence of Software Engineering introduces this kernel and shows how to apply it when developing software and communicating among teams and team members. It is a book for software professionals, not methodologists. Its usefulness to developers, who need to evaluate and choose the best practices for their particular projects, goes well beyond the description or application of any single methodology.

Steering Toward Better Business Results

Effective software development is no longer merely an IT concern: today, it is crucial to the entire enterprise. However, most businesspeople are not ready to make informed decisions about software initiatives. The Economics of Iterative Software Development: Steering Toward Better Business Results will prepare them. Drawing on decades of software development and business experience, the book demonstrates how to utilize practical, economics-based techniques to plan and manage software projects for maximum return on technology investments.

It begins with dispelling widespread myths about software costs, explaining why traditional, “engineering-based” software management introduces unacceptable inefficiencies in today’s development environments. Next, it demonstrates to business and technical managers how to combine the principles of economics and iterative development to achieve optimal results with limited resources. Using the techniques illustrated in the book, readers will learn how to build systems that enable maximum business innovation and process improvement–and implement software processes that allow them to do so consistently.

Iterative processes have gained widespread acceptance because they help software developers reduce risk and cost, manage change, improve productivity, and deliver more effective, timely solutions. But conventional project management techniques don't work well in iterative projects, and newer iterative management techniques have been poorly documented. "Managing Iterative Software Development Projects" is the solution: a relentlessly practical guide to planning, organizing, estimating, staffing, and managing any iterative project, from start to finish. Leading iterative development experts, Kurt Bittner and Ian Spence introduce a proven, scalable approach that improves both agility and control at the same time, satisfying the needs of developers, managers, and the business alike.

Their techniques are easy to understand, and easy to use with any iterative methodology, from Rational Unified Process to Extreme Programming to the Microsoft Solutions Framework. Whatever your role- team leader, program manager, project manager, developer, sponsor, or user representative - this book will help you:

* understand the key drivers of success in iterative projectsleverage "time boxing" to define project lifecycles and measure results

* use Unified Process phases to facilitate controlled iterative development

* master core concepts of iterative project management, including layering and evolution

* create project roadmaps, including release plans

* discover key patterns of risk management, estimation, organization, and iteration planning

* understand what must be controlled centrally, and what you can safely delegate; transition smoothly to iterative processes

* scale iterative project management from the smallest to the largest projects

* and align software investments with the needs of the business.

Whether you are interested in software development using RUP, OpenUP, or other agile processes, this book will help you reduce the anxiety and cost associated with software improvement by providing an easy, non-intrusive path toward improved results - without overwhelming you and your team.

Aspect orientation promises to be the next big wave in software engineering, following on the heels of the object-oriented paradigm. Proponents tout the value of aspect orientation in providing the ability to add extremely useful mechanisms such as security, logging, persistence, debugging, tracing, distribution, performance monitoring, and exception handling.

To state it simply, it makes programming and programs more efficient. This highly-anticipated new book demonstrates how to apply use cases and aspect orientation in building robust and extensible systems.

The authors show you how to identify, design, implement, test, and refactor use case modules and how to extend them. The book also demonstrates how to design use case modules with UML including some enhancements made in UML 2.0 to better support the modeling of use case modules.

Developers who effectively employ use cases deliver better applications-on time and under budget. The concept behind use cases is perhaps as old as software itself; they express the behavior of systems in terms of how users will ultimately interact with them. Despite this inherent simplicity, the use case approach is frequently misapplied, resulting in functional requirements that are confusing, cumbersome, or redundant.

In "Use Case Modeling", experienced use case practitioners Kurt Bittner and Ian Spence share their tips and tricks for applying use cases in various environments. They delve into all aspects of use case modeling and management, demonstrating how development teams can capitalize on the approach's simplicity when modeling complex systems. In this ready reference, readers will discover how to:

* introduce a development team to use cases and implement a use case approach;

* identify the key elements of a use case model, including actors; and the components of a use case, including basic flow, preconditions, post-conditions, sub-flows, and alternate flows;

* master the objectives and challenges of creating detailed descriptions of use cases;

* improve their descriptions' readability and consistency;

* prevent and remedy common problems arising from the misuse of include, extend, and generalization use case relationships;

* organize and conduct a review of a use case model to realize the best possible approach.

The book draws extensively on best practices developed at Rational Software Corporation, and presents real-life examples to illustrate the considerable power of use case modeling. As such, Use Case Modeling is sure to give development teams the tools they need to translate vision and creativity into systems that satisfy the most rigorous user demands.