SPM Lecture Notes for IV B.Tech Students
ON
SOFTWARE PROJECT MANAGEMENT
2018 – 2019
SYLLABUS
Unit I
Conventional Software Management: The waterfall model, conventional software Management
performance. Evolution of Software Economics: Software Economics, pragmatic software cost
estimation
Unit II
Improving Software Economics: Reducing Software product size, improving software processes,
improving team effectiveness, improving automation, Achieving required quality, peer inspections.
The old way and the new: The principles of conventional software engineering, principles of modern
software management, transitioning to an iterative process
Unit III
Life cycle phases: Engineering and production stages, inception, Elaboration, construction,
transition phases.
Artifacts of the process: The artifact sets, Management artifacts, Engineering artifacts,
programmatic artifacts.
Model based software architectures: A Management perspective and technical perspective
Unit IV
Work Flows of the process: Software process workflows, Inter Trans workflows. Checkpoints of
the Process: Major Mile Stones, Minor Milestones, Periodic status assessments.
Iterative Process Planning: Work breakdown structures, planning guidelines, cost and schedule
estimating, Interaction planning process, Pragmatic planning. Project Organizations and
Responsibilities: Line-of-Business Organizations, Project Organizations, evolution of Organizations.
Process Automation: Automation Building Blocks, The Project Environment
Unit V
Project Control and Process instrumentation: The server care Metrics, Management indicators,
quality indicators, life cycle expectations pragmatic Software Metrics, Metrics automation. Tailoring
the Process: Process discriminates, Example.
Future Software Project Management: Modern Project Profiles Next generation Software
economics, modern Process transitions.
Case Study: The Command Center Processing and Display System-Replacement (CCPDS-R)
TEXT BOOKS:
1. Software Project Management, Walker Royce, Pearson Education.
2. Software Project Management, Bob Hughes & Mike Cotterell, fourth edition,Tata McGraw Hil.
REFERENCE BOOKS
1. Applied Software Project Management, Andrew Stellman & Jennifer Greene, O‟Reilly, 2006
2. Head First PMP, Jennifer Greene & Andrew Stellman, O‟Reilly,2007
3. Agile Project Management, Jim Highsmith, Pearson education, 2004
Software Project Management IV [Link] I sem (R15-JNTUA)
UNIT - I
Conventional Software Management: The waterfall model, conventional software Management
performance. Evolution of Software Economics: Software Economics, pragmatic software cost
estimation
Conventional software management practices are sound in theory, but practice is still tied to
archaic (outdated) technology and techniques.
The best thing about software is its flexibility: It can be programmed to do almost anything.
The worst thing about software is also its flexibility: The "almost anything" characteristic has
made it difficult to plan, monitor, and control software development.
Three important analyses of the state of the software engineering industry are
All three analyses reached the same general conclusion: The success rate for software projects
is very low. The three analyses provide a good introduction to the magnitude of the software
problem and the current norms for conventional software management performance.
Most software engineering texts present the waterfall model as the source of the "conventional"
software process.
1.1.1 IN THEORY
It provides an insightful and concise summary of conventional software management. In 1970
Winston Royce, presented a paper titled “Managing the Development of Large Scale Software
Systems”.
Three main primary points are
1. There are two essential steps common to the development of computer programs: analysis
and coding.
2. In order to manage and control all of the intellectual freedom associated with software
development, one must introduce several other "overhead" steps, including system
requirements definition, software requirements definition, program design, and testing.
These steps supplement the analysis and coding steps. Below Figure illustrates the
resulting project profile and the basic steps in developing a large-scale program.
3. The basic framework described in the waterfall model is risky and invites failure. The
testing phase that occurs at the end of the development cycle is the first event for which
timing, storage, input/output transfers, etc., are experienced as distinguished from
analyzed. The resulting design changes are likely to be so disruptive that the software
requirements upon which the design is based are likely violated. Either the requirements
must be modified or a substantial design change is warranted.
Waterfall Model part 3: Five necessary improvements for this approach to work
1. Program design comes first. Insert a preliminary program design phase between the
software requirements generation phase and the analysis phase. By this technique, the
program designer assures that the software will not fail because of storage, timing,
and data flux (continuous change). As analysis proceeds in the succeeding phase, the
program designer must impose on the analyst the storage, timing, and operational
constraints in such a way that he senses the consequences. If the total resources to be
applied are insufficient or if the embryonic(in an early stage of development) operational
design is wrong, it will be recognized at this early stage and the iteration with
requirements and preliminary design can be redone before final design, coding, and test
commences. How is this program design procedure implemented?
Dept. of CSE, CREC P. Suresh, Asst. Professor 2
Software Project Management IV [Link] I sem (R15-JNTUA)
2. Document the design. The amount of documentation required on most software programs is
quite a lot, certainly much more than most programmers, analysts, or program designers are
willing to do if left to their own devices. Why do we need so much documentation?
Each designer must communicate with interfacing designers, managers, and possibly
customers.
During early phases, the documentation is the design.
The real economic value of documentation is to support later changes by a separate test
team, a separate maintenance team, and operations personnel who are not software literate.
3. Do it twice. If a computer program is being developed for the first time, arrange matters so
that the version finally delivered to the customer for operational deployment is actually the
second version insofar as critical design/operations are concerned. Note that this is simply
the entire process done in a time scale that is relatively small with respect to the overall
effort. In the first version, the team must have a special broad competence where they can
quickly sense trouble spots in the design, model them, model alternatives, forget the
straightforward aspects of the design that aren't worth studying at this early point, and,
finally, arrive at an error-free program.
4. Plan, control, and monitor testing. The biggest user of project resources-manpower,
computer time, and/or management judgment-is the test phase. This is the phase of greatest
risk in terms of cost and schedule. It occurs at the latest point in the schedule, when backup
alternatives are least available, if at all. The previous three recommendations were all
aimed at uncovering and solving problems before entering the test phase. However, even
after doing these things, there is still a test phase and there are still important things to be
done, including:
1. Employ a team of test specialists who were not responsible for the original design;
2. Employ visual inspections to spot the obvious errors like dropped minus signs, missing
factors of two, jumps to wrong addresses (do not use the computer to detect this kind of
thing, it is too expensive);
3. Test every logic path;
4. Employ the final checkout on the target computer.
5. Involve the customer. It is important to involve the customer in a formal way so that he has
committed himself at earlier points before final delivery. There are three points following
requirements definition where the insight, judgment, and commitment of the customer can
bolster the development effort. These include a "preliminary software review" following the
preliminary program design step, a sequence of "critical software design reviews" during
program design, and a "final software acceptance review".
Dept. of CSE, CREC P. Suresh, Asst. Professor 3
Software Project Management IV [Link] I sem (R15-JNTUA)
1.1.2 IN PRACTICE
Some software projects still practice the conventional software management approach.
For a typical development project that used a waterfall model management process, Figure 1-2
illustrates development progress versus time. Progress is defined as percent coded, that is,
demonstrable in its target form.
The following sequence was common:
1. Early success via paper designs and thorough (often too thorough) briefings.
2. Commitment to code late in the life cycle.
3. Integration nightmares (unpleasant experience) due to unforeseen implementation
issues and interface ambiguities.
4. Heavy budget and schedule pressure to get the system working.
5. Late shoe-homing of no optimal fixes, with no time for redesign.
6. A very fragile, unmentionable product delivered late.
In the conventional model, the entire system was designed on paper, then implemented all at
once, then integrated. Table 1-1 provides a typical profile of cost expenditures across the
spectrum of software activities.
Late risk resolution A serious issue associated with the waterfall lifecycle was the lack of early
risk resolution. Figure 1.3 illustrates a typical risk profile for conventional waterfall model
projects. It includes four distinct periods of risk exposure, where risk is defined as the probability
of missing a cost, schedule, feature, or quality goal. Early in the life cycle, as the requirements
were being specified, the actual risk exposure was highly unpredictable.
Another property of the conventional approach is that the requirements were typically
specified in a functional manner. Built into the classic waterfall process was the fundamental
Dept. of CSE, CREC P. Suresh, Asst. Professor 5
Software Project Management IV [Link] I sem (R15-JNTUA)
assumption that the software itself was decomposed into functions; requirements were then
allocated to the resulting components. This decomposition was often very different from a
decomposition based on object-oriented design and the use of existing components. Figure 1-4
illustrates the result of requirements-driven approaches: a software structure that is organized
around the requirements specification structure.
The following sequence of events was typical for most contractual software efforts:
1. The contractor prepared a draft contract-deliverable document that captured an
intermediate artifact and delivered it to the customer for approval.
2. The customer was expected to provide comments (typically within 15 to 30 days).
3. The contractor incorporated these comments and submitted (typically within 15 to 30
days) a final version for approval.
This one-shot review process encouraged high levels of sensitivity on the part of customers and
contractors.
1. “Finding and fixing a software problem after delivery costs 100 times more than finding and
fixing the problem in early design phases.”
This metric is not unique to software development. When one of the big automobile companies
implements a recall for post-delivery defect, cost of repair can be many orders of magnitude
greater than cost fixing the defect during the engineering or production stage.
2. “You can compress software development schedules 25% of nominal, but no more.”
One reason for this is that N% reduction in schedule would require an M% increase in
personnel resources (assuming that other parameters remain fixed). Any increase in
the number of people requires more management overhead.
Boehm calls this the “iron law of software development”. Whether you build long-lived
product that undergoes commercial version upgrades twice a year or build a one-of-a-kind
custom software system, twice as much money will probably be spent over the
maintenance life cycle than spent in the development life cycle. Most of the software in
operation is considered to be difficult maintain.
4. “Software development and maintenance costs are primarily a function of the number
of source lines of code.”
This metric is primarily the result of the majority of custom software development,
lack of commercial componentry, and lack of reuse inherent in the era of the
conventional process.
5. “Variations among people account for the biggest differences in software productivity.”
This is key piece of conventional wisdom: Hire good people. This metric is both overhype
and underhype. When you don’t know objectively why you succeed or failed, the
noticeable problem is the quality of the people. This judgment is subjective and difficult to
challenge.
6. “The overall ratio of software to hardware costs is still growing. In 1955 it was 15:85; in
1985, 85:15.”
The fact that the software costs 85% of the cost of most systems doesn’t denote software
productivity as it is about the level of functionality being allocated to software in system
solutions. The need for software, its breadth of applications, and its complexity continue
to grow almost without limits.
This is an important indicator of the need for balance. Many activities besides coding are
necessary for software project success. Requirements management, design, testing, project
control, planning, change management are equally important considerations that consume
85% of the resources.
8. “Software systems and products typically cost 3 times as much per SLOC as
individual software programs. Software-system products (i.e., system of systems)
cost 9 times as much.”
This may be true. In general, walkthroughs and other forms of human inspection are good
at catching surface problems and style issues.
This is a primary statement that is true across almost any engineering discipline.
80% of the engineering is consumed by 20% of the requirements.
80% of the software cost is consumed by 20% of the components.
80% of the errors are caused by 20% of the components.
80% of the resources are consumed by 20% of the components.
80% of the progress is made by 20% of the people.
1. The size of the end product (in human-generated components), which is typically
quantified in terms of the number of source instructions or the number of function
points required to develop the required functionality
2. The process used to produce the end product, in particular the ability of the process to
avoid non-value-adding activities (rework, bureaucratic delays, communications
overhead)
4. The environment, which is made up of the tools and techniques available to support
efficient software development and to automate the process
5. The required quality of the product, including its features, performance, reliability, and
adaptability
The relationships among these parameters and the estimated cost can be written as follows:
process
Effort = (Personnel) (Environment) (Quality) ( Size )
One important aspect of software economics (as represented within today's software cost
models) is that the relationship between effort and size exhibits a diseconomy of scale. The
diseconomy of scale of software development is a result of the process exponent being greater
than 1.0. Contrary to most manufacturing processes, the more software you build, the more
expensive it is per unit item.
Figure 2-1 shows three generations of basic technology advancement in tools, components,
and processes. The required levels of quality and personnel are assumed to be constant. The
ordinate of the graph refers to software unit costs (pick your favorite: per SLOC, per function
point, per component) realized by an organization.
3. Modern practices: 2000 and later, software production. This book's philosophy is
rooted in the use of managed and measured processes, integrated automation
environments, and mostly (70%) off-the-shelf components. Perhaps as few as 30%
of the components need to be custom built Technologies for environment
automation, size reduction, and process improvement are not independent of one
another. In each new era, the key is complementary growth in all technologies. For
example, the process advances could not be used successfully without new
component technologies and increased tool automation.
Organizations are achieving better economies of scale in successive technology eras-with very
large projects (systems of systems), long-lived products, and lines of business comprising
multiple similar projects. Figure 2-2 provides an overview of how a return on investment (ROI)
profile can be achieved in subsequent efforts across life cycles of various domains.
Dept. of CSE, CREC P. Suresh, Asst. Professor 10
Software Project Management IV [Link] I sem (R15-JNTUA)
One critical problem in software cost estimation is a lack of well-documented case studies of
projects that used an iterative development approach. Software industry has inconsistently defined
metrics or atomic units of measure, the data from actual projects are highly suspect in terms of
consistency and comparability. It is hard enough to collect a homogeneous set of project data
within one organization; it is extremely difficult to homogenize data across different
organizations with different processes, languages, domains, and so on.
There have been many debates among developers and vendors of software cost estimation models
and tools.
Dept. of CSE, CREC P. Suresh, Asst. Professor 11
Software Project Management IV [Link] I sem (R15-JNTUA)
There are several popular cost estimation models (such as COCOMO, CHECKPOINT,
ESTIMACS, KnowledgePlan, Price-S, ProQMS, SEER, SLIM, SOFTCOST, and SPQR/20), CO
COMO is also one of the most open and well-documented cost estimation models. The general
accuracy of conventional cost models (such as COCOMO) has been described as "within 20% of
actuals, 70% of the time."
Most real-world use of cost models is bottom-up (substantiating a target cost) rather than
top-down (estimating the "should" cost). Figure 2-3 illustrates the predominant practice: The
software project manager defines the target cost of the software, and then manipulates the
parameters and sizing until the target cost can be justified. The basis for the target cost maybe to
win a proposal, to solicit customer funding, to attain internal corporate funding, or to achieve
some other goal.
The process described in Figure 2-3 is not all bad. In fact, it is absolutely necessary to analyze the
cost risks and understand the sensitivities and trade-offs objectively. It forces the software project
manager to examine the risks associated with achieving the target costs and to discuss this
information with other stakeholders.
Extrapolating from a good estimate, an ideal estimate would be derived from a mature cost model
with an experience base that reflects multiple similar projects done by the same team with the
same mature processes and tools.
UNIT - II
Improving Software Economics: Reducing Software product size, improving software
processes, improving team effectiveness, improving automation, Achieving required quality, peer
inspections.
The old way and the new: The principles of conventional software Engineering, principles of
modern software management, transitioning to an iterative process.
**********************************************************************************************
The most significant way to improve affordability and return on investment (ROI) is usually to
produce a product that achieves the design goals with the minimum amount of human-generated
source material. Component-based development is introduced as the general term for reducing
the "source" language size to achieve a software solution.
Reuse, object-oriented technology, automatic code production, and higher order programming
languages are all focused on achieving a given system with fewer lines of human-specified
source directives (statements).
Size reduction is the primary motivation behind improvements in higher order languages (such as
C++, Ada 95, Java, Visual Basic), automatic code generators (CASE tools, visual modeling tools,
GUI builders), reuse of commercial components (operating systems, windowing environments,
database management systems, middleware, networks), and object-oriented technologies (Unified
Modeling Language, visual modeling tools, architecture frameworks).
The reduction is defined in terms of human-generated source material. In general, when size-
reducing technologies are used, they reduce the number of human-generated source lines.
1.1 Languages
Universal function points (UFPs) are useful estimators for language-independent, early life-cycle
estimates.
The basic units of function points are external user inputs, external outputs, internal logical data
groups, external data interfaces, and external inquiries.
SLOC metrics are useful estimators for software after a candidate solution is formulated and an
implementation language is known. Function point metrics provide a standardized method for
measuring the various functions of a software application.
The basic units of function points are external user inputs, external outputs, internal logical data
groups, external data interfaces, and external inquiries.
1. A ruthless focus on the development of a system that provides a well understood collection
of essential minimal characteristics.
2. The existence of a culture that is centered on results, encourages communication, and
yet is not afraid to fail.
3. The effective use of object-oriented modeling.
4. The existence of a strong architectural vision.
5. The application of a well-managed iterative and incremental development life cycle.
1.3 REUSE
Reusing existing components and building reusable components have been natural software
engineering activities since the earliest improvements in programming languages. With reuse in
order to minimize development costs while achieving all the other required attributes of per-
formance, feature set, and quality. Try to treat reuse as a mundane part of achieving a return on
investment.
Most truly reusable components of value are transitioned to commercial products supported
by organizations with the following characteristics:
Reuse is an important discipline that has an impact on the efficiency of all workflows and
the quality of most artifacts.
Software project managers need many leadership qualities in order to enhance team effectiveness.
The following are some crucial attributes of successful software project managers that deserve
much more attention:
1. Hiring skills. Few decisions are as important as hiring decisions. Placing the right
person in the right job seems obvious but is surprisingly hard to achieve.
2. Customer-interface skill. Avoiding adversarial relationships among stakeholders is a
prerequisite for success.
3. Decision-making skill. The jillion books written about management have failed to
provide a clear definition of this attribute. We all know a good leader when we run into
Dept. of CSE, CREC P. Suresh, Asst. Professor 6
Software Project Management IV [Link] I sem (R15-JNTUA)
one, and decision-making skill seems obvious despite its intangible definition.
4. Team-building skill. Teamwork requires that a manager establish trust, motivate
progress, exploit eccentric prima donnas, transition average people into top performers,
eliminate misfits, and consolidate diverse opinions into a team direction.
5. Selling skill. Successful project managers must sell all stakeholders (including
themselves) on decisions and priorities, sell candidates on job positions, sell changes to
the status quo in the face of resistance, and sell achievements against objectives. In
practice, selling requires continuous negotiation, compromise, and empathy.
Focusing on driving requirements and critical use cases early in the life cycle, focusing on
requirements completeness and traceability late in the life cycle, and focusing throughout the
life cycle on a balance between requirements evolution, design evolution, and plan evolution
Using metrics and indicators to measure the progress and quality of an architecture as it
evolves from a high-level prototype into a fully compliant product
Providing integrated life-cycle environments that support early and continuous configuration
control, change management, rigorous design methods, document automation, and regression
test automation
Using visual modeling and higher level languages that support architectural control,
abstraction, reliable programming, reuse, and self-documentation
Early and continuous insight into performance issues through demonstration-based
evaluations.
Conventional development processes stressed early sizing and timing estimates of computer
program resource utilization. However, the typical chronology of events in performance
assessment was as follows
Project inception. The proposed design was asserted to be low risk with adequate
performance margin.
Initial design review. Optimistic assessments of adequate design margin were based
Dept. of CSE, CREC P. Suresh, Asst. Professor 8
Software Project Management IV [Link] I sem (R15-JNTUA)
mostly on paper analysis or rough simulation of the critical threads. In most cases, the
actual application algorithms and database sizes were fairly well understood.
Mid-life-cycle design review. The assessments started whittling away at the margin, as
early benchmarks and initial tests began exposing the optimism inherent in earlier
estimates.
Integration and test. Serious performance problems were uncovered, necessitating
fundamental changes in the architecture. The underlying infrastructure was usually the
scapegoat, but the real culprit was immature use of the infrastructure, immature
architectural solutions, or poorly under-stood early design trade-offs.
Inspections are also a good vehicle for holding authors accountable for quality products. All
authors of software and documentation should have their products scrutinized as a natural
by-product of the process. Therefore, the coverage of inspections should be across all
authors rather than across all components.
5. Evaluate design alternatives. After the requirements are agreed upon, you must examine a
variety of architectures and algorithms. You certainly do not want to use an “architecture”
simply because it was used in the requirements specification.
6. Use an appropriate process model. Each project must select a process that makes the most
sense for that project on the basis of corporate culture, willingness to take risks, application
area, volatility of requirements, and the extent to which requirements are well understood.
7. Use different languages for different phases. Our industry‟s eternal desire for simple
solutions to complex problems has driven many to declare that the best development method
is one that uses the same notation through-out the life cycle.
8. Minimize intellectual distance. To minimize intellectual distance, the software‟s structure
should be as close as possible to the real-world structure.
9. Put techniques before tools. An undisciplined software engineer with a tool becomes a
dangerous, undisciplined software engineer.
10. Get it right before you make it faster. It is far easier to make a working program run than it
is to make a fast program work. Don‟t worry about optimization during initial coding.
11. Inspect code. Inspecting the detailed design and code is a much better way to find errors than
testing.
12. Good management is more important than good technology. Good management motivates
people to do their best, but there are no universal "right" styles of management.
13. People are the key to success. Highly skilled people with appropriate experience, talent, and
training are important. The right people with insufficient tools, languages, and process will
succeed.
14. Follow with care. Just because everybody is doing something does not make it right for you.
It may be right, but you must carefully assess its applicability to your environment.
15. Take responsibility. When a bridge collapses we ask, "What did the engineers do wrong?"
Even when software fails, we rarely ask this. The fact is that in any engineering discipline, the
best methods can be used to produce poor designs, and the oldest methods to produce elegant
designs.
16. Understand the customer’s priorities. It is possible the customer would tolerate 90% of the
functionality delivered late if they could have 10% of it on time.
17. The more they see, the more they need. The more functionality you provide a user, the more
functionality (or performance) the user wants.
18. Plan to throw one away. One of the most important critical success factors is whether or not
a product is entirely new. Such brand-new applications, architectures, interfaces, or algorithms
rarely work the first time.
19. Design for change. The architectures, components, and specification techniques you use must
accommodate change.
20. Design without documentation is not design. I have often heard software engineers say, “I
have finished the design. All that is left is the documentation.”
21. Use tools, but be realistic. Software tools make their users more efficient.
22. Avoid tricks. Many programmers love to create programs with tricks- constructs that perform
a function correctly, but in an unclear way. Show the world how smart you are by avoiding
tricky code.
23. Encapsulate. Information-hiding is a simple, proven concept that results in software that is
easier to test and much easier to maintain
24. Use coupling and cohesion. Coupling and cohesion are the best ways to measure software‟s
inherent maintainability and adaptability.
Dept. of CSE, CREC P. Suresh, Asst. Professor 10
Software Project Management IV [Link] I sem (R15-JNTUA)
25. Use the McCabe complexity measure. Although there are many metrics available to report
the inherent complexity of software, none is as intuitive and easy to use as Tom McCabe‟s.
26. Don’t test your own software. Software developers should never be the primary testers of
their own software.
27. Analyze causes for errors. It is far more cost-effective to reduce the effect of an error by
preventing it than it is to find and fix it.
28. Realize that software’s entropy increases. Any software system that undergoes continuous
change will grow in complexity and become more and more disorganized.
29. People and time are not interchangeable. Measuring a project solely by person-months
makes little sense.
30. Expert excellence. Your employees will do much better if you have high expectations for
them.
UNIT - III
Life cycle phases: Engineering and production stages, inception, Elaboration, construction,
transition phases.
Artifacts of the process: The artifact sets, Management artifacts, Engineering artifacts,
programmatic artifacts.
Model based software architectures: A Management perspective and technical perspective.
**********************************************************************************************
Earlier phases focus on achieving functionality. Later phases revolve around achieving a product
that can be shipped to a customer, with explicit attention to robustness, performance, and finish.
The transition between engineering and production is a crucial event for the various stakeholders.
The production plan has been agreed upon, and there is a good enough understanding of the
problem and the solution that all stakeholders can make a firm commitment to go ahead with
production.
Engineering stage is decomposed into two distinct phases, inception and elaboration, and the
production stage into construction and transition.
These four phases of the life-cycle process are loosely mapped to the conceptual framework of the
spiral model as shown in Figure
The overriding goal of the inception phase is to achieve concurrence among stakeholders on the
life-cycle objectives for the project.
Primary Objectives
1. Establishing the project's software scope and boundary conditions, including an operational
concept, acceptance criteria, and a clear understanding of what is and is not intended to be in
the product.
2. Discriminating the critical use cases of the system and the primary scenarios of operation
that will drive the major design trade-offs.
3. Demonstrating at least one candidate architecture against some of the primary scenarios
4. Estimating the cost and schedule for the entire project (including detailed estimates for the
elaboration phase).
5. Estimating potential risks (sources of unpredictability).
Essential Activities
1. Formulating the scope of the project. The information repository should be sufficient to
define the problem space and derive the acceptance criteria for the end product.
1. Do all stakeholders concur on the scope definition and cost and schedule estimates?
2. Are requirements understood, as evidenced by the fidelity of the critical use cases?
3. Are the cost and schedule estimates, priorities, risks, and development processes credible?
4. Do the depth and breadth of an architecture prototype demonstrate the preceding criteria?
5. Are actual resource expenditures versus planned expenditures acceptable?
The elaboration phase activities must ensure that the architecture, requirements, and plans are
stable enough, and the risks sufficiently mitigated, that the cost and schedule for the completion
of the development can be predicted within an acceptable range.
During the elaboration phase, an executable architecture prototype is built in one or more
iterations, depending on the scope, size, & risk.
Primary Objectives
Essential Activities
During the construction phase, all remaining components and application features are integrated
into the application, and all features are thoroughly tested.
The construction phase represents a production process, in which emphasis is placed on managing
resources and controlling operations to optimize costs, schedules, and quality.
Primary Objectives
1. Minimizing development costs by optimizing resources and avoiding unnecessary scrap and
rework
2. Achieving adequate quality as rapidly as practical
3. Achieving useful versions (alpha, beta, and other test releases) as rapidly as practical
Essential Activities
1. Is this product baseline mature enough to be deployed in the user community? (Existing
defects are not obstacles to achieving the purpose of the next release.)
2. Is this product baseline stable enough to be deployed in the user community? (Pending
changes are not obstacles to achieving the purpose of the next release.)
3. Are the stakeholders ready for transition to the user community?
4. Are actual resource expenditures versus planned expenditures acceptable?
The transition phase is entered when a baseline is mature enough to be deployed in the end-user
domain.
This typically requires that a usable subset of the system has been achieved with acceptable
quality levels and user documentation so that transition to the user will provide positive results.
This phase could include any of the following activities:
1. Beta testing to validate the new system against user expectations
2. Beta testing and parallel operation relative to a legacy system it is replacing
3. Conversion of operational databases
4. Training of users and maintainers
The transition phase concludes when the deployment baseline has achieved the complete vision.
Primary Objectives
Essential Activities
Life-cycle software artifacts are organized into five distinct sets that are roughly partitioned by the
underlying language of the set: management (ad hoc textual formats), requirements (organized
text and models of the problem space), design (models of the solution space), implementation
(human-readable programming language and associated source files), and deployment (machine-
process able languages and associated files). The artifact sets are shown in Figure 6-1.
During the inception phase, risks include misunderstanding project scope, underestimating costs and schedules, and failing to address critical use cases . These risks can be managed by establishing clear scope and boundary conditions, demonstrating at least one candidate architecture, and engaging stakeholders to ensure concurrence on project objectives and estimates .
Peer inspections are valuable as secondary mechanisms that hold authors accountable and help scrutinize software and documentation . However, transitioning engineering information, major milestone demonstrations, environmental tools, life-cycle testing, and change management metrics are considered more significant contributors to software quality . These mechanisms emphasize assessment consistency and rigor, thus playing a more crucial role in quality management.
An architecture-first approach requires balancing requirements, design decisions, and life-cycle plans before full-scale development . This strategic focus can ensure that risks are addressed early, improving predictability and reducing downstream rework. It can also aid in achieving alignment among stakeholders and ensuring that foundational design aligns with project goals and constraints.
The principle of "minimize intellectual distance" suggests that software structure should closely mirror real-world structures, making it easier for developers to understand and manage . This approach helps reduce complexity, enhances maintainability, and aligns software design with user expectations, thus contributing to more effective software development.
Performance problems in software integration and testing phases often arise due to immature use of infrastructure, immature architectural solutions, or poorly understood early design trade-offs . This indicates that the issues observed later are deeply tied to decisions made early in the design process, highlighting the importance of proper architectural understanding and design foresight.









