The Principles Of Modern Software Management

Although the current software management principles described in Section 4.1 evolved from and improved on conventional techniques, they still do not emphasize the modern principles on which this book is based. Building on Davis's format, here are my top 10 principles of modern software management. (The first five, which are the main themes of my definition of an iterative process, are summarized in Figure 4-1.) The principles are in priority order, and the bold-faced italicized words are used throughout the book as shorthand for these expanded definitions.

1. Base the process on an architecture-first approach. This requires that a demonstrable balance be achieved among the driving requirements, the architecturally significant design decisions, and the life-cycle plans before the resources are committed for full-scale development.

2. Establish an iterative life-cycle process that confronts risk early. With today's sophisticated software systems, it is not possible to define the entire problem, design the entire solution, build the software, then test the end product in sequence. Instead, an iterative process that refines the problem understanding, an effective solution, and an effective plan over several iterations encourages a balanced treatment of all stakeholder objectives. Major risks must be addressed early to increase predictability and avoid expensive downstream scrap and rework.

3. Transition design methods to emphasize component-based development.

Moving from a line-of-code mentality to a component-based mentality is necessary to reduce the amount of human-generated source code and custom development. A component is a cohesive set of preexisting lines of code, either in source or executable format, with a defined interface and behavior.

4. Establish a change management environment. The dynamics of iterative development, including concurrent workflows by different teams working on shared artifacts, necessitates objectively controlled baselines.

Waterfall Process

Requirements first Custom development Change avoidance Ad hoc tools

Iterative Process Architecture first Component-based development Change management Round-trip engineering

Modern Management Principles

Architecture-first approach

The central design element

Design and integration first, then production and test

Iterative life-cycle process

The risk management element

Risk control through ever-increasing function, performance, quality

Component-based development

The technology element

Object-oriented methods, rigorous notations, visual modeling

Object-oriented methods, rigorous notations, visual modeling

Complementary tools, integrated environments Figure 4-1. The top five principles of a modern process

Complementary tools, integrated environments Figure 4-1. The top five principles of a modern process

5. Enhance change freedom through tools that support round-trip engineering. Round-trip engineering is the environment support necessary to automate and synchronize engineering information in different formats (such as requirements specifications, design models, source code, executable code, test cases). Without substantial automation of this bookkeeping, change management, documentation, and testing, it is difficult to reduce iteration cycles to manageable time frames in which change is encouraged rather than avoided. Change freedom is a necessity in an iterative process, and establishing an integrated environment is crucial.

6. Capture design artifacts in rigorous, model-based notation. A model-based approach (such as UML) supports the evolution of semantically rich graphical and textual design notations. Visual modeling with rigorous notations and a formal machine-processable language provides for far more objective measures than the traditional approach of human review and inspection of ad hoc design representations in paper documents.

7. Instrument the process for objective quality control and progress assessment. Life-cycle assessment of the progress and the quality of all intermediate products must be integrated into the process. The best assessment mechanisms are well-defined measures derived directly from the evolving engineering artifacts and integrated into all activities and teams.

8. Use a demonstration-based approach to assess intermediate artifacts.

Transitioning the current state-of-the-product artifacts (whether the artifact is an early prototype, a baseline architecture, or a beta capability) into an executable demonstration of relevant scenarios stimulates earlier convergence on integration, a more tangible understanding of design tradeoffs, arid earlier elimination of architectural defects.

9. Plan intermediate releases in groups of usage scenarios with evolving levels of detail. It is essential that the software management process drive toward early and continuous demonstrations within the operational context of the system, namely its use cases. The evolution of project increments and generations must be commensurate with the current level of understanding of the requirements and architecture. Cohesive usage scenarios are then the primary mechanism for organizing requirements, defining iteration content, assessing implementations, and organizing acceptance testing.

10. Establish a configurable process that is economically scalable. No single process is suitable for all software developments. A pragmatic process framework must be configurable to a broad spectrum of applications. The process must ensure that there is economy of scale and return on investment by exploiting a common process spirit, extensive process automation, and common architecture patterns and components.

My top 10 principles have no scientific basis. They do, however, capture a balanced view of the recurring themes presented throughout this book. Table 4-1 maps what I consider to be the top 10 risks of the conventional process to the key attributes and principles of a modern process. Although the table contains gross generalities, at a high level it provides an introduction to the principles of a modern process.

Table 4-1. Modern process approaches for solving conventional problems

conventional process: top 10 risks


modern process: inherent risk resolution features

1. Late breakage and excessive scrap/rework

Quality, cost, schedule

Architecture-first approach Iterative development Automated change management Risk-confronting process

2. Attrition of key personnel


Successful, early iterations


cost, schedule

Trustworthy management and planning

3. Inadequate development resources

Cost, schedule

Environments as first-class artifacts of the process Industrial-strength, integrated environments Model-based engineering artifacts Round-trip engineering

4. Adversarial stakeholders


Demonstration-based review

Project Management Made Easy

Project Management Made Easy

What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.

Get My Free Ebook


Post a comment