A.1 Introduction
In Chapter 16, I presented an approach for determining what
features and capabilities should be supported in the project in order
to do a good job of building a system, and meeting stakeholder
needs. In this appendix, I present the detail of that derivation.
Bear in mind that this derivation results in a set of objectives for a
project. It does not say how any particular project should meet these
objectives; each project must decide those things in ways that meet
the specific needs of that project and that system. The objectives can
be seen as a set of considerations that each project should examine as
they decide how to run the project.
The derivation only addresses matters that are related to the
project’s approach to building a system. There are many other factors
outside this scope: matters of project management, or of policy in the
organization that hosts the project. Where appropriate I have made
notes of these matters external to the system-building scope.
A.1.1 Stakeholders
The set of stakeholders is:
- The customer for which the system is being built;
- The team that builds the system;
- The organization(s) of which the team members are part;
- Funders who provide the investment to build the system; and
- Regulators who oversee the system and its building.
I introduced each of these in Section 16.2.
A.1.2 Model elements
I introduced the model for making systems in Section 7.3. This model is organized around the tasks that need
to be performed to build the system, and has the following elements:
- Artifacts that are created by performing tasks, and represent the
system and records about it;
- The team that builds the system by performing tasks and making
artifacts;
- The tools that people on the team use in doing tasks; and
- The plan that organizes what tasks need to be done, in what order,
and using what resources.
In addition to these elements, I have include an element for matters
external to the system-building project for matters that
stakeholders need but that aren’t about building the system itself.
A.1.3 Derivation
The derivation maps stakeholder needs onto objectives for parts of the
model.

The result is a set of objectives or capabilities that people should
consider when working how how the project should operate.
I discuss each stakeholder in the sections that follow, along with
tables of the needs or objectives of each. The objectives that support
these stakeholder objectives are annotated with a right-pointing
arrow: →.
A.2 Stakeholders
A.2.1 Customer
The customer (see Section 16.2.1) is a stakeholder
who wants the system built because they are going to use the
system. They may or may not be funding system development
directly—if they are, then they are also a funder below.
model:2 Customer
2.1 Fill purpose
The project must deliver a system that meets the customer’s purpose
2.1.1 Know purpose
The project must know what the customer’s purpose for the system is
→ model.artifacts:2.1
→ model.plan:3.2.1
→ model.team:2.1.1.1
2.1.2 Build to purpose
The project must produce a system that meets the customer’s purpose
→ model.artifacts:1.1, 2.1, 4.2, 4.4, 4.5, 5.1, 5.2
→ model.plan:1.2, 2.1, 2.2, 2.3, 3.3, 3.3.2
→ model.team:2.2.1, 2.2.2, 2.5.1
→ model.tools:3.1, 3.2, 4.1
2.1.3 Know requirements
The project must know the customer’s reliability, safety, and security requirements
→ model.artifacts:2.1.2
→ model.plan:3.2.1
→ model.team:2.1.1.1
2.1.4 Meet requirements
The project must produce a system that meets the customer’s reliability, safety, and security requirements
→ model.artifacts:2.1.2, 4.5, 5.1, 5.2
→ model.plan:3.3, 3.3.5
→ model.team:2.2.1, 2.2.2
2.1.5 Free of errors
The project must produce a system that is free of errors
→ model.artifacts:4.5
→ model.plan:3.3.5
→ model.team:2.2.2
2.2 On time and budget
The project must deliver a system by the required deadline and within the needed budget
→ model.plan:1.2.5, 4.1, 4.2
2.2.1 Know budgets
The project must know the budgets and deadlines for delivering the system
→ model.plan:3.2.2, 4.1
2.2.2 Know consumption to date
The project must know the resources and time that has been used to date that count against budgets or deadlines
→ model.plan:4.1.1
2.2.3 Project forward usage
The project must be able to project the resources and time required to complete the system or meet other deadlines
→ model.plan:1.2
2.2.3.1 Uncertainty
The project must be able to estimate the uncertainty in any forward projections of resources or time
→ model.plan:1.2.1
2.2.4 Control execution
The project must be able to control execution to adjust resource and time consumption
→ model.plan:1.2.4
2.3 Certifications
The project must deliver a system that has appropriate certifications or approvals
2.3.1 Know regulations
The project must know the regulations or standards that apply to certification/approval
→ model.artifacts:8.1
→ model.plan:3.2.5
2.3.2 Follow process
The project must follow any processes required to get certification/approval
→ model:2.5.2
→ model.artifacts:8.2, 8.3
→ model.plan:3.3.1.1, 3.3.2.1, 3.3.3.1, 3.3.7
2.4 Release and deployment
The project must be capable of releasing a version of the system and deploying it to a customer
→ model.artifacts:1.1, 6.1
→ model.plan:3.4
→ model.team:2.5.1
→ model.tools:3.5, 4.3
2.5 Evolve system
The project must evolve the system in response to changes in customer or other needs
2.5.1 Receive requests for change
The project must be able to receive and process requests for change from the customer
→ model.plan:5.1, 5.3
→ model.team:2.1.1.2
2.5.2 Receive regulatory changes
The project must be able to receive and process changes in regulatory requirements
→ model.plan:5.2
→ model.team:2.3.1.2
2.5.3 Know purpose of change
The project must know the purpose of the change (and the change in system purpose that results)
→ model.artifacts:2.2
2.5.4 Build to meet change
The project must be able to produce a system that meets the changed purpose while maintaining the system’s other purposes and requirements
→ model.artifacts:1.1, 2.1, 2.2, 4.2.1
→ model.plan:1.2, 2.1, 2.2, 2.3, 3.3.6
→ model.team:2.1.1.2, 2.2.1, 2.2.2, 2.5.1
A.2.1.1 Filling purpose
A customer has some purpose for the system, meaning something they
want to achieve by deploying and using the system. This is the problem
that the customer wants solved, which is a higher-level concern that
the specific features that the system will provide.
A customer may have additional requirements on the system. They likely
have a need for a minimum level of reliability. They likely have needs
related to safety and security of the system.
The project needs to build a system that can meet this purpose and the
requirements.
The project can meet these needs by:
- Learning and documenting the customer’s purpose and requirements,
resulting in documents that the team can refer to while building the
system.
- Having processes defined that ensure that the team will follow a
deliberate process as they design, build, and verify the system.
- Having processes for checking the design and implementation to
ensure that it meets the customer’s purpose, and for finding and
fixing errors.
- Having a team that has enough people with the right skills to do the
work, and gives them clear assignments for what steps they are
responsible for.
- Having tools that help the team analyze and verify the design or
implementation.
- Keeping track of the work that needs to be done, including having a
general plan to guide the work and tracking the work currently in
progress.
A.2.1.2 On time and budget
The customer likely has a deadline by which they would like the system
delivered. They likely also have a budget for how much they want to
invest in acquiring the system. At minimum, customers generally want
the result as soon as possible and for as low a price as possible.
To meet these needs, the project should:
- Know what the budget and deadlines are for the work.
- Have a plan that can be used to estimate resources and time needed
to get to deadlines or finish the project. This plan should be visible
to everyone on the project, so that they can understand how what they
are doing fits into the overall work flow.
- Account for degree of uncertainty in these estimates—which will be
inaccurate early in the project, and become more accurate as time goes
by.
- Track how much resource has been used and the progress on tasks.
- Regularly update the plan based on progress made and information
learned.
- Have processes in place to detect when there may be a budget or
deadline problem, and to figure out how to resolve the problem.
A.2.1.3 Certifications
In many industries, some kind of certification or approval is
necessary to operate the system. An aircraft, for example, needs a
type certification from the local aviation authority as well as
approval for a specific instance of the aircraft. Even if there is no
overt certification required, there are often regulatory standards to
be met.
The project must build the system in compliance with regulations. When
certification is needed, the project must follow the process to get
that certification.
To achieve this, the project should:
- Know what regulations and certification process applies to their
work, and make that information available to everyone on the project.
- Have people who interface with regulators, to learn when regulations
change, to ask for clarification or guidance when needed, and to work
with the regulators during certification.
- Account for regulatory requirements in the specifications for the
system, equal with customer objectives and requirements.
- Maintain design, analysis, and process records that can be checked
to verify that the project is working to meet regulations.
- Have a process for regularly checking that the project building a
system that meets regulations, including verifying the design or
implementation.
- Have a process for working with the regulators to get certification,
including having a process for resolving issues that the regulators
identify that stand in the way of certification.
A.2.1.4 Release and deployment
The customer needs the system actually to be delivered and put into
operation. The project must deliver the system, and provide or support
its deployment.
To do this:
- Maintain the tools used to maintain products for release, including
a protected repository for software releases and stockrooms for
hardware inventory.
- Have a process defined for releasing and deploying a system.
- Have people on the team who are trained and responsible for release
and deployment.
A.2.1.5 Evolve system
The the system is successful, the customer often finds that it can be
made even better with some changes. Or the customer’s needs may
change, and they will want the system to adapt to meet their changed
needs. The project should be able to maintain and evolve the system to
support the customer’s changing needs.
A system may also need to change when regulations change.
The project can support an evolving system by:
- Having people, tools, and a process for receiving requests for
changes.
- Having a process to decide (and prioritize) which requests to act
on, and which to defer or reject.
- Tracking which changes are being reviewed, which are being worked
on, and which have been completed.
- Maintaining rationales of decisions made during design and
implementation, so that people working on a change can accurately
understand how the system can be modified without causing errors.
- Having processes and tools to maintain all the design,
implementation, and verification artifacts as they are changed—and
keeping changed artifacts consistent with each other and separate from
versions without a particular change.
A.2.2 Team
The team (see Section 16.2.2) is the collection of
stakeholders who build the system. These people need the things that
skilled, technical workers generally need: satisfaction, security,
confidence, compensation.
Meeting these needs is mostly outside the scope of systems-building
itself. These needs are largely met by the project and organization
management who create the environment in which the team works. Still,
there are aspects of systems-building that can help (or hinder)
meeting the team’s needs.
The analysis of a team’s needs presented here is somewhat
idealistic. It focuses on skilled workers who are not readily
interchangeable, whose value to a project derives in part from the
knowledge they carry about the system being built. It assumes workers
motivated largely by work satisfaction and have essential material
needs met by their compensation. These assumptions lead to a
particular balance of power between the team and the organizations
that employ them. This would not apply to a team of interchangeable
workers or workers whose material needs are not well met by their
employment.
model:3 Team
3.1 Satisfaction in the work
The team must have work that challenges them and results in satisfaction in what they produce
3.1.1 Positive outcome of work
The team must have confidence that their work will have a positive outcome
→ model.external:1.1
→ model.plan:1.1, 1.2
3.1.2 Challenging work
The team must find that the project’s work challenges them and makes use of their skills while remaining achievable
→ model.external:1.1, 1.2
3.1.3 Avoid irrelevant work
The team must believe that they are not being asked to do irrelevant work as part of the project
→ model.artifacts:1.3, 1.3.1
→ model.external:1.2
→ model.plan:1.2.5
→ model.tools:1.1
3.2 Appropriate staffing
The team must be staffed with the right people to do the work
3.2.1 Sufficient staffing
The project must have sufficient staff, with the right skills, to build the system
→ model.external:1.3
→ model.plan:1.2.3, 6.1, 6.3
3.2.2 Not overstaffed
The project must not be overstaffed in a way that leaves some unable to make meaningful contributions
→ model.external:1.3
→ model.plan:1.2.3, 6.1, 6.4
3.3 Sufficient supporting resources
The project must provide the team with sufficient resources to do the work
→ model.tools:3.2, 3.3, 4.1, 4.2, 5.1
3.4 Secure position
The people in the team must feel secure in their position in the team
3.4.1 Understanding of fit
The team members must understand how they fit into the organization
→ model.external:1.5
→ model.team:1.1
3.4.2 Clear expectation
The team members must have a clear and correct understanding of their responsibilities in the project
→ model.plan:1.2.7, 2.4, 3.2.3, 6.2, 6.3
→ model.team:1.2
3.4.3 Fair evaluation
The team members must have an expectation that their work will be fairly evaluated
→ model.external:1.7
→ model.team:1.2.1
3.4.4 Clear lines of authority
The team members must have a clear understanding of the authority of others in the project
→ model.artifacts:3.1
→ model.plan:3.2.3, 6.2, 6.3
→ model.team:1.1.1, 1.1.2
3.4.5 Ability to raise issues
The team members must have the ability to raise issues about the team and about the system, without retribution
→ model.external:1.4
→ model.plan:2.4, 3.3.5
→ model.team:4.1
3.5 Fair compensation
The team must be fairly compensated for their time and effort
→ model.external:1.6
3.6 Belief in project
The team must be able to believe in the project, its purpose, and its leadership
3.6.1 Belief in objective
The team must have confidence that the organization is accurately working with the customer
→ model.plan:1.1
→ model.team:2.1.2
3.6.2 Ethics
The team members must believe that the system will be used in ways that accord with their ethical beliefs
→ model.artifacts:2.1.3
→ model.external:1.8
A.2.2.1 Satisfaction in the work
Team members are expected to need satisfaction arising from the work
they are doing on the project.
The satisfaction comes in part from believing that the work they are
doing will have some positive outcome. That outcome might be that they
see the system deployed and having a positive effect on the world. It
might be that they see their work acknowledged, publicly or privately,
even if the system ultimately is not deployed. It could come from
social standing among their peers improving because of their
association with the work.
Skilled workers also want work that makes use of their skills—which
leads to a sense that they, as a specific individual, are making a
contribution to the work. Work that challenges them or from which they
learn things contributes to that satisfaction.
Doing work that is seen as not relevant or not likely to have value
decreases their satisfaction. If asked to do something that is not
achievable, they will lose enthusiasm. If they are asked to do work
that they perceive as irrelevant, they will feel a lack of their
individual value.
To support team satisfaction, the project can:
- Have a clear explanation for why the organization decided to go
ahead and run the project to build the system.
- Have a plan that gives team members context for how their work fits
into the overall flow of work.
- Use tools that automate as much repetitive or low-skill work as
possible.
Other aspects are outside of the project’s scope.
- The organization and project management need to keep the team
informed on how the project is proceeding. This helps the team have
confidence that the project will successfully finish the system, and
it gives the team a way to get involved if there are problems in
execution.
- The project management needs to assign work to the people with the
right skills to do the work.
A.2.2.2 Appropriate staffing
A team needs to have enough of the right people to do the work—but
not too many people. Having enough people on the team who can do the
work contributes to a team member’s sense that the project has a good
chance of having a positive outcome.
Having too few people, or too many people who lack necessary skills,
leads to an overworked and burnt out team.
Having too many people leads to team members who don’t have useful
work to do. It can lead to people making up new work just to feel like
they are contributing.
The “right” staffing level is dynamic. It changes over time as the
project moves forward: a particular skill in designing electronics
boards may be important for one period in the project, but once the
necessary hardware has been designed and built, the need decreases. It
changes over time as people change. As a team members learns new
things, they may find that they should move on to a different
project. Life events occur that change a person’s motivations and
needs. The key is not to always have the perfect cohort working on the
project, but to have a pretty good group and work to address changes
as they happen. If the team has trust in their management that the
management is able to address team composition, people will generally
stay satisfied.
Ensuring appropriate staffing involves:
- Having a reasonably accurate idea of the staffing needs, which comes
from having an overall system design and a plan for building the
system.
- Ability to hire staff, or transfer them in from other projects. This
includes having the ability to bring new staff members up to speed on
the project.
- Having an accurate record of who is on the team, and what role each
person plays, in order to identify where there are gaps in staffing.
Much of this is outside the scope of the project itself. The
organization holds the funds used to pay staff. It also provides the
ability to hire and fire people.
A.2.2.3 Sufficient supporting resources
As with staffing, the team needs resources to do their work:
a place to work and the tools to do the work, for example. They may
need consumable resources as well. For example, a team might need a
ready supply of liquid nitrogen in order to test a hardware component
that is supposed to operate at low temperature.
If the team lacks these resources, they can’t do their work. This
affects their satisfaction.
The project needs to have:
- Facilities where the team can work. This includes both office space
for desk work and lab space for building and testing.
- Ability to make hardware components, including the machining used,
the stock used for components, and ability to store and track the
inventory of made parts.
- Software build and test tools.
A.2.2.4 Secure position
Team members need to have a sense of security in their position. This
means that they need to believe that they understand their position in
the project and organization, believe that they will be treated
fairly, and believe that issues they raise will be addressed. The
opposite of this is when they have a sense of insecurity—because
they do not understand what is expected or how they are evaluated, or
because they believe that problems will not be resolved, even if they
raise an issue.
The sense of security allows people to put their effort into their
work, rather than spending their time and energy on worry. The sense
also helps keep people on the team so that their knowledge of the
system continues to benefit the project.
This comes from the project:
- Having clear records of what role each person is expected to fill,
and the ability for each person to find the people who have some role
or responsibility.
- Having clear reporting and decision authority, documented for all
the team to know.
- Having a process for raising issues about both technical and team
problems, along with a process for tracking the issues as they are
resolved.
The organization also needs to:
- Document how the project fits into the organization’s overall
structure.
- Document (and follow) a policy for how each person will be
evaluated.
- Respond to raised issues promptly and without retribution.
A.2.2.5 Fair compensation
A technical worker needs to believe they are being fairly compensated
for their time and effort. They need to be compensated well enough
that they are not distracted by want. That compensation may be
monetary, but it may take other forms as well.
Setting compensation policy is usually a responsibility of the
organization, not the project.
A.2.2.6 Belief in project
Skilled workers often have choices about what project they work
on. Many of them are motivated by a belief in the work they do: that
it will help its users, or that it will result in some good for the
world. If they come to believe that either or both is not true, they
will be demotivated.
The project should:
- Document and maintain the reasons why the organization and the team
are building the system.
- Maintain documentation of what the customer will use the system for.
- Communicate regularly with all the team about how interactions with
the customer are going.
The organization should also maintain an ethics policy that details:
- What the organization considers ethical behavior by team members;
- What the organization commits to as ethical behavior in the world;
and
- Procedures for raising and resolving ethical questions—including
external reporting when appropriate.
A.2.3 Organization
The people in the team work for the organization, which provides a
home for the project (see Section 16.2.3.) The
organization is responsible for finding funding for the project and
providing a legal entity for doing the work. The organization provides
the business operations that make the project possible.
There is no one kind of “organization” that fits all situations. The
organization might be anything from a single person, to a company, to
a consortium of organizations, depending on the project. The
organization might exist to return profit in exchange for the work, or
it might be a non-profit or a governmental organization that looks for
non-monetary benefits from the project. Some organizations exist only
to build and deliver one system; others expect to deliver the system
to many customers and to build more systems in the future.
Many of an organization’s needs are not to be met by the
system-building project itself; they are met by how well the
organization’s management and business operations. Nonetheless, how
the system is built can help or hinder business management or
operations.
The diversity of kinds of organizations means that the list of needs
below has to be tailored for each project and each organization.
model:4 Organization
4.1 Ability to deliver
The organization must have the ability to deliver the working system to the customer
4.1.1 Ability to communicate with customer
The organization must be able to communicate with the customer
→ model.team:2.1.1
4.1.1.1 Conflict resolution
The organization must be able to negotiate and resolve conflicts between the team and the customer
→ model.team:2.1.1.3
4.1.2 Support for the team
The organization must have the infrastructure to support the team
4.1.2.1 Leadership
The organization must have leadership that can run the organization in a way that enables the team
→ model.external:1.4, 1.5, 1.7, 1.8
4.1.2.2 Infrastructure
The organization must have the ability to staff and finance the team
→ model.external:1.3, 3.1
4.1.2.3 Resources
The organization must have resources to hire the team and for them to operate
→ model.external:1.3
4.1.2.4 Workplace regulation
The organization must provide a workplace that meets regulation
→ model.external:1.9
4.2 Ability to sell
The organization must have the ability sell the system produced (when appropriate)
→ model.external:2.1
4.2.1 Articulate value
The organization must be able to articulate the value of the system product being sold
→ model.artifacts:2.1
4.2.2 Market
There must be a market for the system being sold
→ model.artifacts:2.1
→ model.external:2.2
→ model.plan:3.2.1
4.2.3 Sales and marketing team
The organization must have a sales or marketing capability, with the resources to do its job
→ model.external:2.3
4.3 Profit
The organization must get enough profit from the project to fund overhead and to support future projects
→ model.external:3.2
→ model.plan:1.2.5, 1.2.6, 3.2.6
4.4 Positioning for future work
The organization must be positioned for future projects and/or maintenance of this system
4.4.1 Reputation
The organization must have a reputation for being able to build systems well
→ model:2.1, 2.2, 2.5
4.4.2 Reusable capability
The organization must have capabilities in processes, teams, and tools that will apply to future projects
→ model.external:4.1
4.4.3 Ongoing improvement
The organization must be able to learn and improve its capabilities over time
→ model.external:4.2
A.2.3.1 Ability to deliver
The purpose for the organization pursuing a system-building project is
to deliver a system to the customer. If the project does not deliver
something, the organization will see little return on its investment
and effort.
Of course, an organization might get a contract from a customer and
get started, only for the customer to cancel the contract. (Hopefully
the organization has taken this into account in its planning.) The
organization still needs to have been able to deliver the system,
even if the work was stopped.
The ability to deliver has two aspects: communication with the
customer and support for the team, in addition to the general ability
to build a system for the customer.
When the system being built has a specific customer, the organization
needs to be able to talk to them, keep them updated on progress, and
hear concerns or issues from the customer. When there is disagreement,
the organization needs people who can negotiate and resolve issues.
The project can help this by maintaining the interface with the
customer, including having people assigned to work with the customer,
documenting what they learn from the customer, and negotiating with
the customer as issues arise.
The project team can do little without the organization supporting
them. The team needs leadership; it needs workspace and other
infrastructure; it needs human resources and payroll and accounting
support. The organization needs to:
- Provide the resources (funding, space) that the team needs to do its
work.
- Provide supporting capabilities, such as hiring, problem resolution,
and marketing.
- Maintain a safe and regulation-compliant workplace.
A.2.3.2 Ability to sell
If the system is expected to be delivered to multiple customers over
time, the organization needs to be able to find those customers, make
the case to them that the system will benefit them, and work out a
deal to deliver the system.
I have written this need in terms of selling, but the needs apply when
something is being delivered not for monetary return. An open-source
project that is freely available to users does not sell the system for
money, but the way that project has value is for users to pick up,
deploy, and use the system. The project may want to attract developers
to build up an ecosystem of related products or services. Meeting
these needs involves making potential users aware of the system
and making the case that they will benefit from the
system.
To be able to sell the system, the organization needs to:
- Be able to say why the system is worth acquiring and using. The
system-building project can help this by keeping records of the
intended value proposition for the system.
- Ensure that there is a market for the system. The project can assist
by having that documentation of what the system is for, and by working
with the organization’s marketing team while designing the system.
- Have a team that can do sales and marketing.
A.2.3.3 Profit
The organization will be expecting to get some kind of return on its
effort. That may be a monetary return, but a non-profit or government
agency may look for a non-monetary return, such as a community
benefit.
The project can support this in two ways. First, the organization can
set business objectives for the project, such as expected profit.
The project can keep records of these objectives, and take them into
account in the system’s design. Second, the project can organize its
work as efficiently as possible so that investment goes as far as
possible (consistent with deadlines). The project’s management can
monitor the time and money being spent and work out how to adjust the
project if it looks likely that the project will not meet the
organization’s expectations on return or profit.
A.2.3.4 Positioning for future work
Many organizations build multiple systems over their
existence—whether this is building multiple bespoke systems for
customers, or building multiple products that are delivered to many
customers. The ability to continue to deliver profitable systems is a
major part of a company’s stock performance: the stock price is
determined by the market expectation of future returns to the
investors.
An organization’s reputation affects its ability to attract customers
and investment, as well as its ability to hire talented staff. The
reputation depends in part on its ability to deliver good systems.
An organization can become more productive over time—and thus
improve its reputation, its ability to deliver, and its
profitability. This comes from learning and improving. If the
organization builds up a staff that knows how to run a system-building
project well, future projects can be executed more efficiently. Better
tools will help the next projects. However, learning and improvement
does not often happen by chance; it happens when an organization sets
out to learn from its performance.
The project can:
- Add to the organization’s reputation for building a system well, on
time, and on budget.
- Maintain a transparent and good working relationship with the
customer, so that a
happy customer will refer others for future projects.
- Meeting its team’s needs, so that people on the team spread the word
that this is a good organization to work for.
The organization should:
- Take steps to build up reusable capability from one project to
another.
- Have the the commitment and processes to learn and improve over
time.
A.2.4 Funders
The funders provide the investment that funds the team building the
system (see Section 16.2.4.) The funder provides these
resources in the expectation of some kind of return, be that monetary
or not. A venture capital funder is most likely to look for a monetary
return from future profits from the organization it is funding. A
company providing internal funding more likely is looking the project
to add to the company’s capabilities, which will in turn enable the
company to increase its future profits. A government agency is likely
looking for something that will benefit the public in some way.
As noted earlier, there are many different kinds of funders, from
venture capital to company internal funding to customers paying for
development.
model:5 Funders
5.1 Return on investment
The funder must get at least the expected return on its investment
→ model:4.2, 4.3
5.1.1 Visibility
The funder must have sufficient visibility into the organization’s behavior and progress to determine when the project is at risk of not providing a return on investment
→ model.external:4.3
→ model.plan:1.2, 4.1, 4.2
5.1.2 Influence
The funder must have influence on the organization or project in order to address performance that will jeopardize return on investment
→ model.external:4.3.1
5.2 Ability to attract future investment
The project must help the funder attract investment for future projects
→ model:5.1
A.2.4.1 Return on investment
Funders provide capital to run the project on the expectation that
they will get some return on that investment.
In some cases, the return will come from profit realized in building
the system (Section A.2.3.3) or from an increase in the value of
the organization (Section A.2.3.4). In other cases the
return will come from the value of the system after it is delivered
and deployed (Section A.2.1.1, Section A.2.3.1).
The funders will also expect to be able to track the organization’s
and project’s progress, and to raise issues when they find that there
may be a problem that could jeopardize the funder’s return. The
organization needs to have people whose responsibility includes
interfacing with the funders.
The project can support the interface with funders by maintaining a
realistic plan for the work, managing its budget, and keeping the
organization informed of progress. The project should also have the
processes in place to respond when the funders raise an issue that
leads to a potential change to the system.
The project may also need to maintain accurate records and artifacts
that allow the funder to audit the project—verifying that the
information the funder has received is accurate and complete.
A.2.4.2 Ability to attract future investment
The funders get the capital they invest from somewhere. In many cases,
the investment capital comes from their customers: individual and
institutional investors for venture capital, legislatures and the
public for government investors. The funders will keep their investor
customers satisfied if they can show that their investments produce
the expected returns, leading to a reputation for using capital
wisely. At the same time, funders want to avoid bad press from
projects that have problems, which can reflect on the funders’ ability
to select organizations or projects.
The ways that the project can address this funder need are all
included in the previous section, on the funder’s need for return on
investment.
A.2.5 Regulators
Regulators (Section 16.2.5) provide an independent
check on work to ensure that it meets regulations or standards, thus
ensuring that some public good is maintained that the organization or
project might not otherwise be incentivized to meet.
The interaction between the project and regulators depends on the
countries involved and the nature of the project. Some industries
require licensing or certification of some kinds of system: most
aircraft, for example, must obtain type certification from the local
civil aviation authority before that aircraft is allowed to fly or be
sold. Spacecraft require a set of licenses for launch and
communication. Other industries, such as consumer electronics or
automobiles in the United States, depend on compliance with regulation
but compliance is only checked after the fact.
I include voluntary standards as part of regulation. Non-governmental
organizations set interoperability standards; the standards for USB
(set by the USB Implementer’s Forum) and WiFi (set by the Institute of
Electrical and Electronics Engineers 802.11 working group) are
examples. Other organizations set safety standards that help to ensure
consumer products are checked to be safe.
The regulators perform multiple tasks:
- Setting regulations or standards.
- Communicating those regulations to those who might be affected.
- Performing compliance checks for certification, when appropriate.
- Performing compliance checks when violation is suspected.
- Working with the organizations that are being checked to identify
and resolve issues.
- Overseeing remedies, when appropriate.
model:6 Regulators
6.1 Compliance and certification
The regulator must be able to work with the project to ensure regulatory compliance and (when appropriate) certify the system
6.1.1 Available regulation
The regulator must make information about regulations available to the organization and possibly user
→ model.artifacts:8.1
→ model.plan:3.2.5
→ model.team:2.3.1.1, 2.3.1.2
6.1.2 Application
The project must apply to the regulator for certification and then follow the certification process
→ model.artifacts:8.2
→ model.plan:3.3.7
→ model.team:2.3.1.5
6.1.3 System auditability
The regulator must be able to audit that the system complies with regulations
→ model.artifacts:4.2, 4.4, 4.5, 8.4
→ model.plan:3.3.3.1
→ model.team:2.3.1.3
6.1.4 Process auditability
The regulator must be able to audit that the organization has followed required processes in building the system
→ model.artifacts:8.3
→ model.team:2.3.1.3
6.2 Monitoring
The regulator must be able to monitor the organization, project, and/or system for compliance with regulation
→ model.team:2.3.1.3
6.2.1 Accurate information available
The organization and/or user must make available to the regulator accurate and complete information about the system and organization behavior
→ model.artifacts:4.2, 4.4, 4.5, 8.3, 8.4
6.2.2 Notify regulator
The organization or user must proactively provide information to the regulator when a potential regulatory problem is detected, as required by regulation
→ model.plan:3.3.7.1
→ model.team:2.3.1.4
6.3 Problem resolution
The regulator must be able to work with the project and/or user to identify and resolve potential regulatory problems
6.3.1 Communicate with organization or user
The regulator must be able to communicate with the organization or user about potential regulatory problems
→ model.plan:7.1
→ model.team:2.3.1.3
6.3.2 Accurate information
The regulator must obtain cooperation and accurate information from the organization or user to investigate a potential regulatory problem
→ model.artifacts:4.2, 4.4, 4.5, 8.3, 8.4
6.3.3 Respond to remedy
The organization or user must be able to respond to a regulator’s remedy
→ model.plan:7.1
→ model.team:2.3.1.5
A.2.5.1 Compliance and certification
The regulator makes regulations (or standards), and makes them
available to teams building affected systems.
The project responds to the regulations by designing and building the
system so that it meets the regulations, maintaining records needed to
show that the regulations have been met, and beginning a process for
getting certifications or licenses when appropriate.
The project is responsible for:
- Finding and documenting all the regulations that apply to the
system, and communicating those to the team. The project should
maintain artifacts documenting these regulations, and needs people
assigned to tracking down this information. Frequently the team will
need to ask the regulator for explanation or clarification as well.
- Tracking regulations for change. When regulations change, the team
needs people who will find the changes and oversee any changes to the
system needed to comply with the new regulations.
- Designing and building the system to meet the regulations, including
documentation of how compliance has been verified. The team must
include regulation as it formulates requirements and designs. The team
should have a process that ensures that designs and implementation are
checked against the regulatory requirements, and maintains records of
the checks.
- Maintaining records of the process that has been followed, so that
the regulator can audit the process that has been followed (separate
from the content of the system).
- Applying for certification. This involves knowing how to apply,
developing a working relationship with the regulator to perform the
application, delivering information to the regulator as needed, and
responding to issues raised by the regulator.
A.2.5.2 Monitoring
In some cases, the regulator must monitor the project’s work—for
example, during aircraft certification, which is generally a joint
effort between the aviation authority and the company building the
aircraft. A regulator might also need to monitor the project after a
violation has been found and the team is working on remedial action.
Accurate and timely information is paramount when this occurs. The
project must maintain good records to be able to provide that
information to the regulators. The information potentially covers
everything about the project: the design and analyses of the system,
its implementation, records of design rationales, and logs of the
processes followed.
The team must also be prepared to notify the regulator proactively as
situations arise. The team should have people who will watch for
situations and communicate with the regulator.
A.2.5.3 Problem resolution
I have never observed a licensing or certification process to go with
no problems. The processes and regulations are often complex, and
unless a team has done the process several times before there will
almost certainly be things the team needs to learn to get through the
process.
This means that there will be problems to resolve. Sometimes the team
will discover the problem and need guidance from the regulator. Other
times the regulator will raise the issue.
The team can make smooth the problem resolution process by:
- Documenting the process it is following, including notes on how the
team understands the process and what it learns along the way (to help
the next time).
- Maintaining good communications with the regulators, in order to be
able to ask them questions or receive notices from them. This implies
having people on the team who have the ongoing responsibility to
maintain the interface with the regulators.
- Maintaining accurate information, as noted above.
- Having and following a process to handle regulatory issues when they
are found or reported, including working with the regulator to find a
resolution and then implementing and verifying the resolution.
A.3 Model elements
All of the objectives in the previous section map to objectives
related to artifacts, team, tools, and plan. Some of them also map to
things other than the system-building that goes on in the
project.
This section lays out tables of the objectives for each element of the
model. Each objective is annotated with its parents; that is, the
objectives that are the reason that this objective is included. These
are annotated in the tables with an arrow pointing down and right:
↘. If one of the objectives has children, those are annotated
with a right-pointing arrow: →.
A.3.1 Artifacts
model.artifacts:1 Artifact management
1.1 Store artifacts
The project must have a place to store artifacts
↘ model:2.1.2, 2.4, 2.5.4
↘ model.artifacts:2.1, 2.2, 3.1, 4.2, 4.4, 4.5, 5.1, 5.2, 6.1, 6.2, 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4, 9.1
→ model.tools:2.1, 3.2.1, 3.4
1.1.1 Consistent versioning
The artifact storage must be able to maintain versions of all artifacts that are consistent with each other
1.2 Finding artifacts
Team members must be able to find artifacts that they are looking for
↘ model.artifacts:2.1.1, 3.1.3, 4.2, 4.4, 5.2, 6.1, 8.1
1.2.1 Discovery
Team members must be able to learn about artifacts they need to know of that they didn’t previously know existed
1.3 Status
Anyone looking at an artifact must be able to determine the status of that artifact (work in progress, proposed, approved, complete, and its version)
↘ model:3.1.3
↘ model.artifacts:2.1, 2.2, 3.1, 4.2, 4.4, 4.5, 5.1, 5.2, 6.1, 6.2, 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4, 9.1
1.3.1 Support workflow
model.artifacts:2 Purpose-related
2.1 System purpose
The artifacts must include documentation of the customer’s purpose for the system
↘ model:2.1.1, 2.1.2, 2.5.4, 4.2.1, 4.2.2
↘ model.plan:3.3.1
↘ model.team:2.1.1.1
→ model.artifacts:1.1, 1.3
2.1.1 Discoverable purpose
The artifacts that document the system’s purpose must be readily and accurately discoverable by members of the project team
→ model.artifacts:1.2
2.1.2 System requirements
The artifacts must include documentation of the customer’s reliability, safety, and security requirements for the system
↘ model:2.1.3, 2.1.4
2.1.3 System usage
The documentation of the customer’s purpose must include accurate information about what the system will be used for
↘ model:3.6.2
2.2 Changes in purpose
The artifacts must include records of requests made for changes to the system’s purpose, including the status of that request and any artifacts resulting from an approved change
↘ model:2.5.3, 2.5.4
↘ model.plan:5.1, 5.2, 5.3
↘ model.team:2.1.1.2, 2.3.1.2
→ model.artifacts:1.1, 1.3
2.3 Reasons for building system
The artifacts must include documentation of why the team has chosen to build the system
↘ model.plan:1.1
model.artifacts:3 Team-related
3.1 Team structure
The artifacts must include documentation of the structure of the team
↘ model:3.4.4
↘ model.plan:3.2.3, 6.3, 6.4
↘ model.team:1.2
→ model.artifacts:1.1, 1.3
3.1.1 Team membership
The documentation of team structure must include accurate records of who is on the team
3.1.2 Roles and authority
The documentation of team structure must include accurate records of the roles and authority that each team member has
3.1.3 Navigability
Members of the team must be able to conveniently and accurately navigate the records of team structure
→ model.artifacts:1.2
model.artifacts:4 System-related
4.1 Technical uncertainty
The artifacts must include records about the uncertainties or risks identified for the system being built
↘ model.plan:8.2
4.2 Specification and design artifacts
The artifacts must include accurate records of the specification and design of the system components and structure
↘ model:2.1.2, 6.1.3, 6.2.1, 6.3.2
→ model.artifacts:1.1, 1.2, 1.3
4.2.1 Rationales
The design-related artifacts must include rationales for the design choices made
↘ model:2.5.4
4.4 Implementation artifacts
The artifacts must include the implementation of the system
↘ model:2.1.2, 6.1.3, 6.2.1, 6.3.2
→ model.artifacts:1.1, 1.2, 1.3
4.5 Analysis artifacts
The artifacts must include accurate analyses of the system component and structure design or implementation
↘ model:2.1.2, 2.1.4, 2.1.5, 6.1.3, 6.2.1, 6.3.2
→ model.artifacts:1.1, 1.3
model.artifacts:5 Verification-related
5.1 Verification tests
The artifacts must include implementations of tests used for verifying the system implementation
↘ model:2.1.2, 2.1.4
↘ model.artifacts:5.2
→ model.artifacts:1.1, 1.3
5.2 Verification results
The artifacts must include accurate results of performing verification tests, reviews, and analyses
↘ model:2.1.2, 2.1.4
→ model.artifacts:1.1, 1.2, 1.3, 5.1
model.artifacts:6 Release/deployment-related
6.1 Release/deployment procedures
The artifacts must include the procedures to be used to release or deploy the system
↘ model:2.4
→ model.artifacts:1.1, 1.2, 1.3
6.2 Release/deployment records
The artifacts must include records of each release and deployment made of the system
↘ model.plan:3.4
→ model.artifacts:1.1, 1.3
model.artifacts:7 Management-related
7.1 Budget records
The artifacts must include records tracking resource budgets
↘ model.plan:4.1
→ model.artifacts:1.1, 1.3
7.2 Roadmap and plan
The artifacts must include the plan for completing the system
↘ model.plan:1.2
→ model.artifacts:1.1, 1.3
7.3 Tasking
The artifacts must include records about the tasks currently being performed, or that are scheduled to be performed in the near future
↘ model.plan:2.1, 2.2
→ model.artifacts:1.1, 1.3
7.4 Project uncertainty
The artifacts must include records about the uncertainties or risks identified for project execution
↘ model.plan:8.1
→ model.artifacts:1.1, 1.3
model.artifacts:8 Regulatory-related
8.1 Regulations
The artifacts must include all the relevant regulations that the system must meet (or references to them)
↘ model:2.3.1, 6.1.1
↘ model.plan:5.2
↘ model.team:2.3.1.2
→ model.artifacts:1.1, 1.2, 1.3
8.2 Certification process
The artifacts must include information on the certification process
↘ model:2.3.2, 6.1.2
→ model.artifacts:1.1, 1.3
8.2.1 Application
The artifacts must include records of applications made for certification
8.2.2 Certifications
The artifacts must include records of certifications that have been granted or denied for the system
↘ model.plan:3.3.7
8.3 Regulatory process records
The artifacts must include records of the process being followed to meet regulation or obtain certification
↘ model:2.3.2, 6.1.4, 6.2.1, 6.3.2
→ model.artifacts:1.1, 1.3
8.4 Regulatory verification records
The artifacts must include records showing that the system has been verified against regulatory requirements
↘ model:6.1.3, 6.2.1, 6.3.2
↘ model.plan:3.3.3.1
→ model.artifacts:1.1, 1.3
model.artifacts:9 Audit
9.1 Approvals
The artifacts must include records of reviews and approvals of designs and implementations
→ model.artifacts:1.1, 1.3, 1.3.1
A.3.2 Team
model.team:1 Organization
1.1 General structure
Each team member must be able to find and understand the structure of the team
↘ model:3.4.1
1.1.1 Finding team members
Each team member must be able to find essential information about other team members
↘ model:3.4.4
1.1.2 Reporting
Each team member must be able to accurately determine the reporting structure of the team
↘ model:3.4.4
1.2 Roles and responsibilities
Each team member must be able to accurately find and understand their roles and responsibilities
↘ model:3.4.2
→ model.artifacts:3.1
1.2.1 Clear responsibilities
Each team member must be able to accurately find and determine the responsibilities on which their performance will be evaluated
↘ model:3.4.3
model.team:2 Capabilities
2.1 Customer-related
2.1.1 Customer interface
The team must have people whose responsibility is to work with the customer
↘ model:4.1.1
2.1.1.1 Learn and communicate the customer’s purpose
The team must have people whose responsibility is to work with the customer to identify the customer’s purpose and requirements for the system and to communicate that to the rest of the team
↘ model:2.1.1, 2.1.3
↘ model.plan:3.2.1
→ model.artifacts:2.1
2.1.1.2 Learn and process change requests
The team must have people whose responsibility is to receive requests for changes, document those requests, and drive the process to decide on and resolve the requests
↘ model:2.5.1, 2.5.4
→ model.artifacts:2.2
2.1.1.3 Ability to negotiate
The people on the team who interface with the customer must be able to raise issues to the customer and negotiate resolutions of issues or conflicts
↘ model:4.1.1.1
2.1.2 Internal communication
The team must have people whose responsibility includes regularly informing the rest of the team about the status of working with the customer
↘ model:3.6.1
2.2 Technical capabilities
2.2.1 Ability to build system
The team must have the skills needed to build a system that meets the customer’s purpose
↘ model:2.1.2, 2.1.4, 2.5.4
2.2.2 Ability to verify system
The team must have the skills needed to verify that the designed or implemented system meets the customer’s purpose, regulatory requirements, and other constraints
↘ model:2.1.2, 2.1.4, 2.1.5, 2.5.4
2.2.3 Track technical uncertainty
The team must have people whose responsibility includes identifying risk or uncertainty related to the system being built, documenting those uncertainties, and ensuring that the uncertainties are resolved
↘ model.plan:8.2
2.2.4 Ability to release/deploy system
The team must have the skills needed to release or deploy the system
↘ model.plan:3.4
2.3 Regulator interface
2.3.1 Regulator interface
The team must have people whose responsibility is to work with regulator(s)
2.3.1.1 Identify regulation
The team must have people whose responsibility includes identifying relevant regulation or certification requirements and documenting them
↘ model:6.1.1
↘ model.plan:3.2.5
2.3.1.2 Detect and handle regulatory changes
The team must have people whose responsibility includes detecting that relevant regulations have changed, documenting those changes, and driving changes to plans to address the changes
↘ model:2.5.2, 6.1.1
→ model.artifacts:2.2, 8.1
2.3.1.3 Handle regulator requests
The team must have people whose responsibility includes receiving and responding to requests for information from the regulator
↘ model:6.1.3, 6.1.4, 6.2, 6.3.1
2.3.1.4 Handle regulator notification
The team must have people whose responsibility includes notifying the regulator at identified events that affect certification or regulatory compliance
↘ model:6.2.2
2.3.1.5 Perform certification/approval process
The team must have people whose responsibility includes working with the regulator(s) to obtain certification or approval
↘ model:6.1.2, 6.3.3
↘ model.plan:3.3.7
2.3.2 Process oversight
The team must have people whose responsibility is to ensure that the project is following processes that will result in a system that meets regulations and/or obtain certification
↘ model.plan:3.3.1.1, 3.3.2.1, 3.3.3.1
2.4 Management capabilities
2.4.1 Track plan
The team must have people whose responsibility includes building and maintaining the project plan
↘ model.plan:1.2, 5.4.1
2.4.2 Detect and respond to problems
The team must have people whose responsibility includes detecting when the project may not meet deadlines and oversee the response
↘ model.plan:1.2.4
2.4.3 Prioritize and assign tasks
The team must have people whose responsibility includes determining which tasks should be performed next according to some prioritization, and assigning those tasks to team members
↘ model.plan:2.1, 2.2
2.4.4 Maintain team information
The team must have people whose responsibility includes maintaining information about the team
↘ model.plan:6.2, 6.3, 6.4
2.4.5 Track staffing levels
The team must have people whose responsibility is to detect when staffing levels need to change, and then ensure that needed changes are made
↘ model.plan:6.1
2.4.6 Track project uncertainty
The team must have people whose responsibility includes identifying risk or uncertainty related to project execution, documenting those uncertainties, and ensuring that the uncertainties are resolved
↘ model.plan:8.1
2.5 Support capabilities
2.5.1 Maintain tools
The team must have people whose responsibility includes maintaining the tools used for building the system
↘ model:2.1.2, 2.4, 2.5.4
model.team:4 Exceptions
4.1 Raise technical issues
Each team member must know how to raise technical issues when they find them
↘ model:3.4.5
model.team:5 Other
5.1 Tracking
The team must be able to track time spent building the system
↘ model.plan:4.1.1
A.3.3 Tools
model.tools:1 General
1.1 Automate simple tasks
Where possible, the project should use tools to automate simple or repetitive tasks
↘ model:3.1.3
model.tools:2 Artifact management
2.1 Digital artifact storage
The tools must provide for storing and managing digital artifacts
↘ model.artifacts:1.1
model.tools:3 Hardware support
3.1 Design tools
The project must have the design tools needed to design hardware components
↘ model:2.1.2
3.2 Manufacturing
The project must have the tools needed to manufacture hardware parts
↘ model:2.1.2, 3.3
→ model.tools:3.4
3.2.1 Stock storage
The tools must provide for maintaining stock materials used to build hardware components
↘ model.artifacts:1.1
3.3 Hardware test
The project must have tools to perform verification tests on hardware components
↘ model:3.3
↘ model.plan:3.3.3, 3.3.5
3.4 Inventory management
The project must have the facilities and tools to maintain hardware parts inventory and track its content
↘ model.artifacts:1.1
↘ model.tools:3.2, 3.5
3.5 Hardware deployment
The project must have tools for delivering and distributing hardware components
↘ model:2.4
→ model.tools:3.4
model.tools:4 Software support
4.1 Software build
The project must have tools to build software components
↘ model:2.1.2, 3.3
4.2 Software test
The project must have tools to perform verification tests on software components
↘ model:3.3
↘ model.plan:3.3.3, 3.3.5
4.3 Software release
The project must have tools for making, maintaining, and distributing software releases
↘ model:2.4
model.tools:5 Facilities
5.1 Team facilities
The project must have facilities in which the team can work to develop the system
↘ model:3.3
A.3.4 Plan
model.plan:1 General roadmap
1.1 Overall objective
The roadmap must include a clear statement of the objective(s) of the system-building effort
↘ model:3.1.1, 3.6.1
→ model.artifacts:2.3
→ model.plan:3.2.4
1.2 Plan to completion
The project must maintain a plan that shows an estimation of the time and effort required to complete the system
↘ model:2.1.2, 2.2.3, 2.5.4, 3.1.1, 5.1.1
→ model.artifacts:7.2
→ model.team:2.4.1
1.2.1 Reflect uncertainty
The plan must accurately reflect the degree of uncertainty (or risk) in what is known about the steps needed to complete the system
↘ model:2.2.3.1
→ model.plan:8.1, 8.2
1.2.2 Update plan
The plan must be updated as work is completed or uncertainty changes
↘ model.plan:3.3.6, 5.4.1
1.2.3 Include resource estimate
The plan must include estimates of the time and resources required to complete steps in the plan
↘ model:3.2.1, 3.2.2
1.2.4 Detect and handle deadline problems
The project must include processes and milestones that will detect when project deadlines will not be met, determine how to respond, and ensure the response is executed
↘ model:2.2.4
→ model.team:2.4.2
1.2.5 Only project-relevant work in plan
The project must include only work that is relevant to building the system, or managing and supporting that development, in the plan
↘ model:2.2, 3.1.3, 4.3
1.2.6 Efficient execution
The project must organize and plan the work in an efficient way, minimizing time to completion and/or cost without sacrificing quality, customer purpose, or requirements
↘ model:4.3
→ model.plan:2.2, 8.1, 8.2
1.2.7 Navigability
The project plan information must be accessible to team members in a way that allows them to understand how the work will proceed and how it will affect their assignments
↘ model:3.4.2
model.plan:2 Sequencing and prioritization
2.1 Track current effort
The project must include processes to track what tasks are currently being worked on or have been assigned to people to be worked on in the near future
↘ model:2.1.2, 2.5.4
→ model.artifacts:7.3
→ model.team:2.4.3
2.2 Assign next tasks
The project must include processes to determine what tasks should be worked on in the near future, and by whom
↘ model:2.1.2, 2.5.4
↘ model.plan:1.2.6
→ model.artifacts:7.3
→ model.team:2.4.3
2.3 Detect and handle tasking problems
The project must include processes and milestones to detect when there are problems performing one or more tasks, determine how to respond, and ensure the response is executed
↘ model:2.1.2, 2.5.4
2.4 Navigability
The scheduling information must be accessible to team members in a way that allows them to determine what work they should be doing, and who is doing work related to theirs
↘ model:3.4.2, 3.4.5
↘ model.plan:6.1
model.plan:3 Process and life cycle
3.1 Defined life cycle
The project must have a defined life cycle that defines the processes people must follow to build and deploy the system
↘ model.plan:3.2, 3.3
3.2 Project startup
The project life cycle must include the processes involved in starting the project
→ model.plan:3.1
3.2.1 Learn and verify customer purpose
The project life cycle must include an initial step to learn the customer’s purpose for the system and ensure that the team properly understands that purpose
↘ model:2.1.1, 2.1.3, 4.2.2
→ model.team:2.1.1.1
3.2.2 Learn and verify available resources
The project life cycle must include an initial step to determine the resources initially available for building the system
↘ model:2.2.1
↘ model.plan:4.1
3.2.3 Establish organization structure
The project life cycle must include an initial step to decide on and document the structure of the team that will be working on the project
↘ model:3.4.2, 3.4.4
→ model.artifacts:3.1
3.2.4 Establish reasons for building the system
The project life cycle must include an initial step to determine whether the team should build the system, and if so, why
↘ model.plan:1.1
3.2.5 Establish regulatory constraints
The project life cycle must include an initial step to determine what regulations apply to the system, including the potential need for certification
↘ model:2.3.1, 6.1.1
→ model.team:2.3.1.1
3.2.6 Establish organization expectations
The project life cycle must include an initial step to determine what expectations has of the project, including definition of constraints on the project and system
↘ model:4.3
→ model.external:3.2
3.3 System building
The project life cycle must include the processes involved in building the system
↘ model:2.1.2, 2.1.4
↘ model.plan:5.4
→ model.plan:3.1
3.3.1 Design to purpose
The project life cycle must provide processes and milestones that ensure that the system design accurately reflects the customer’s purpose for the system
→ model.artifacts:2.1
3.3.1.1 Design to meet regulation
The project life cycle must provide processes and milestones that ensure the system design meets regulatory requirements
↘ model:2.3.2
→ model.team:2.3.2
3.3.1.2 Design for release/deployment
The project life cycle must provide processes and milestones that ensure that the resulting system can be released or deployed
↘ model.plan:3.4
3.3.2 Build to purpose
The project life cycle must provide processes and milestones that ensure that the built system accurately reflects the customer’s purpose for the system
↘ model:2.1.2
3.3.2.1 Build to meet regulation
The project life cycle must provide processes and milestones that ensure the built system meets regulatory requirements
↘ model:2.3.2
→ model.team:2.3.2
3.3.2.2 Build for release/deployment
The project life cycle must provide processes and milestones that ensure that the built system can be released or deployed
↘ model.plan:3.4
3.3.3 Verify against purpose
The project life cycle must provide processes and milestones that verify that the system meets the customer’s purpose
→ model.tools:3.3, 4.2
3.3.3.1 Verify against regulation
The project life cycle must provide processes and milestones that verify that the system meets regulation
↘ model:2.3.2, 6.1.3
→ model.artifacts:8.4
→ model.team:2.3.2
3.3.4 Verify no extraneous behavior
The project life cycle must provide processes and milestones that verify that the system does not include functions or behavior that is outside the customer’s purpose
3.3.5 Identifying and fixing errors
The project life cycle must provide processes and milestones that ensure error will be detected with high likelihood, and that detected errors will be fixed
↘ model:2.1.4, 2.1.5, 3.4.5
→ model.tools:3.3, 4.2
3.3.6 Adaptation
The project life cycle must provide processes and milestones to adapt the plans and design as the team learns about the system or as uncertainties are resolved
↘ model:2.5.4
→ model.plan:1.2.2
3.3.7 Perform certification/approval
The project life cycle must provide processes to result in certification or approval, if required for the system
↘ model:2.3.2, 6.1.2
→ model.artifacts:8.2.2
→ model.team:2.3.1.5
3.3.7.1 Regulatory notification
The project life cycle must define events at which the project must notify regulators, and processes by which the notification information is gathered and delivered
↘ model:6.2.2
3.4 System release and deployment
The project life cycle must include the processes involved in releasing and deploying the system
↘ model:2.4
→ model.artifacts:6.2
→ model.plan:3.3.1.2, 3.3.2.2
→ model.team:2.2.4
model.plan:4 Budgets
4.1 Resources
The budgets must include the amount of various resources allocated to the project
↘ model:2.2, 2.2.1, 5.1.1
→ model.artifacts:7.1
→ model.plan:3.2.2
4.1.1 Amount used
The budget must accurately record the amount of resources already used in the project
↘ model:2.2.2
→ model.team:5.1
4.1.2 Amount remaining
The budget must provide accurate measures of how much resource remains available
4.2 Deadlines
The budgets must include milestones or other deadlines that the project must meet
↘ model:2.2, 5.1.1
model.plan:5 Change handling
5.1 Receive change request
The project must have a process for receiving and documenting a request for change in purpose or features
↘ model:2.5.1
↘ model.external:4.3.1
↘ model.plan:7.1
→ model.artifacts:2.2
5.2 Receive regulatory change
The project must have a process for detecting and receiving changes in regulatory requirements
↘ model:2.5.2
→ model.artifacts:2.2, 8.1
5.3 Decision process
The project must have a process for determining whether to proceed with a change request or not
↘ model:2.5.1
↘ model.external:4.3.1
→ model.artifacts:2.2
5.4 System change
The project life cycle must provide processes and milestones for building changes to the system
↘ model.external:4.3.1
↘ model.plan:7.1
→ model.plan:3.3
5.4.1 Plan change
The project life cycle must provide processes for updating plans when change requests are accepted for building
→ model.plan:1.2.2
→ model.team:2.4.1
model.plan:6 Team-related
6.1 Determine need for staffing changes
The project life cycle must provide processes and milestones for detecting when a change in staffing is appropriate, and the following through on the needed changes
↘ model:3.2.1, 3.2.2
→ model.external:1.3
→ model.plan:2.4
→ model.team:2.4.5
6.2 Maintain team information
The project life cycle must provide processes and milestones for maintaining information about the structure, roles, responsibilities, and authority in the team
↘ model:3.4.2, 3.4.4
→ model.team:2.4.4
6.3 Adding team members
The project life cycle must provide a process for adding new team members to the processes and tools, and educating them about the project
↘ model:3.2.1, 3.4.2, 3.4.4
↘ model.external:1.3.1
→ model.artifacts:3.1
→ model.team:2.4.4
6.4 Removing team members
The project life cycle must provide a process and definitions of triggering events for removing a member from the team
↘ model:3.2.2
↘ model.external:1.3.2, 1.4
→ model.artifacts:3.1
→ model.team:2.4.4
model.plan:7 Regulatory-related
7.1 Receive and process regulatory issues
The project life cycle must provide a process by which the project can receive notification of issues from the regulator, identify remedies, implement the remedies, and respond to the regulator
↘ model:6.3.1, 6.3.3
→ model.plan:5.1, 5.4
model.plan:8 Risk and uncertainty
8.1 Project uncertainty
The project life cycle must track and manage uncertainties or risks related to project execution
↘ model.plan:1.2.1, 1.2.6
→ model.artifacts:7.4
→ model.team:2.4.6
8.2 Technical uncertainty
The project life cycle must track and manage uncertainties or risks related to the system being built
↘ model.plan:1.2.1, 1.2.6
→ model.artifacts:4.1
→ model.team:2.2.3
8.2.1 Efficient burn-down
The project life cycle must provide a process and milestones that lead to efficiently reducing technical uncertainty as the project progresses
A.3.5 External responsibilities
model.external:1 Team-related
1.1 Satisfaction
Project and organization management must take steps to provide team members with the information they need to give them confidence that the project is on track and will challenge the team members
↘ model:3.1.1, 3.1.2
1.2 Appropriate assignments
Project management must take steps to match team members with tasks that are needed and that challenge the team member
↘ model:3.1.2, 3.1.3
1.3 Appropriate staffing level
Project management must manage the makeup of the team to ensure that the project has the right people to do the work, including having processes to hire, contract, or let go of staff
↘ model:3.2.1, 3.2.2, 4.1.2.2, 4.1.2.3
↘ model.plan:6.1
1.3.1 Hiring
Project management and the hosting organization must be able to hire or move in staff when needed for the project
→ model.plan:6.3
1.3.2 Firing or transfer out
Project management and the hosting organization must be able to move out or let go staff who are no longer needed for the project
→ model.plan:6.4
1.4 Respond to team issues
Project management must respond appropriately to issues raised by team members, both technical issues and non-technical issues
↘ model:3.4.5, 4.1.2.1
→ model.plan:6.4
1.5 Fit to organization
The organization must provide the team with an understanding of how the project and the team members fit into the organization
↘ model:3.4.1, 4.1.2.1
1.6 Compensation
Project and organization management are responsible for setting compensation levels for team members at a level that is acceptable to both the staff and the project/organization
↘ model:3.5
1.7 Evaluation
Project and organization management are responsible for setting and documenting the evaluation process that will be used to judge each team member’s performance
↘ model:3.4.3, 4.1.2.1
1.8 Ethics policy
Project and organization management are responsible for setting and documenting an ethics policy that applies to all team and organization activities, along with mechanisms for reporting and resolving potential ethics violations
↘ model:3.6.2, 4.1.2.1
1.9 Workplace regulation
The organization management must provide a workplace that meets regulation
↘ model:4.1.2.4
model.external:2 Customer-related
2.1 Ability to sell
The organization must have the ability to sell the system produced (when appropriate)
↘ model:4.2
2.2 Ability to define market(s)
The organization must have the ability to define plausible market(s) for the system
↘ model:4.2.2
2.3 Sales and marketing capability
The organization must have a capability to perform sales and marketing of the system
↘ model:4.2.3
model.external:3 Resource-related
3.1 Sufficient resources
The organization and project management are responsible for obtaining funding and other resources sufficient to perform the project
↘ model:4.1.2.2
3.2 Define expected return
The organization must define the expected return on investment for the project to build the system
↘ model:4.3
↘ model.plan:3.2.6
model.external:4 Organization-related
4.1 Reusable capability
The organization must take steps to build up reusable capabilities that can apply to multiple projects
↘ model:4.4.2
4.2 Ongoing improvement
The organization must have the capability to learn and improve its capabilities over time
↘ model:4.4.3
4.3 Communication with funder
The organization must communicate with the funder in a way that gives the funder visibility into the organization’s behavior and progress on the project
↘ model:5.1.1
4.3.1 Receive and process funder concerns
The organization must have the capability to receive concerns from the funder, discuss the concerns, and take steps to address the concerns
↘ model:5.1.2
→ model.plan:5.1, 5.3, 5.4