Software Development Lifecycle CM Process
Software Development Lifecycle CM Process
Software Development Lifecycle CM Process
2/2/2009
CORSELLO
RESEARCH SOFTWARE DEVELOPMENT LIFECYCLE
THE CONFIGURATION MANAGEMENT ROLE
FOUNDATION
Abstract
Software development is a cycle that follows a concept from the identification of a business need to
inception of a development project through to the release of a software application to market. This
cycle is iterative in that the release of a product to market completes a version of the application, at
which time the cycle begins again refining the product to capture new concepts and needs of the
customer(s).
Table of Contents
Abstract ......................................................................................................................................................... 2
Introduction .................................................................................................................................................. 4
Business Phase .......................................................................................................................................... 8
CM Role in the Business Phase ............................................................................................................. 9
Planning Phase .......................................................................................................................................... 9
CM Role in the Planning Phase ........................................................................................................... 10
Development Phase ................................................................................................................................ 11
CM Role in the Development Phase ................................................................................................... 12
Testing Phase .......................................................................................................................................... 12
CM Role in the Testing Phase.............................................................................................................. 13
Delivery Phase ......................................................................................................................................... 14
CM Role in the Delivery Phase ............................................................................................................ 14
Maintenance Phase................................................................................................................................. 15
CM Role in the Maintenance Phase .................................................................................................... 15
Groups and Meetings.................................................................................................................................. 16
Configuration Control Board (CCB) ......................................................................................................... 16
Design Review Board .............................................................................................................................. 17
Code Review Board ................................................................................................................................. 17
Project Management / Oversight Board ................................................................................................. 17
Meetings ................................................................................................................................................. 18
Conclusions ................................................................................................................................................. 18
Appendices.................................................................................................................................................. 19
References .............................................................................................................................................. 19
Introduction
Software development is a cycle that follows a concept from the identification of a business need to
inception of a development project through to the release of a software application to market. This
cycle is iterative in that the release of a product to market completes a version of the application, at
which time the cycle begins again refining the product to capture new concepts and needs of the
customer(s).
Throughout this cycle, it is important to manage the documentation and products produced. The
management of this content; documentation, code and other artifacts alike, is conducted as a
configuration management or content management process. This process has ramifications in
organizational, legal and contractual policy as well as serving as a point of reference for quality control
and process improvement.
2. control, or the ability to freeze configuration items, changing them only through
agreed processes
3. status accounting of each configuration item
4. verification through a series of reviews to ensure conformity between the actual
configuration item and the information recorded about it
Configuration management as a process serves 2 core purposes, management of information and input
to process improvement efforts. Both of these fundamental purposes are of great importance to the
organization, while the former is the most directly attributable to the business need for CM.
The software development process is fundamentally based on work efforts. These work efforts are
divisible into phases as in the Rational Unified Process, or more generically in the Software Development
Lifecycle (SDLC). A basic partitioning of the process will yield 6 primary phases:
requirement from this phase is that all tests are passed at 100% with full coverage of all code
and exceptions. Additionally, all deployment instructions must be acceptable to enable creation
of deployment procedures for full systems installation.
5. Delivery Phase In the delivery phase the personnel will generate the installation routines and
dependency packages for delivery to the customers. This phase should not include personnel
from the testing phase or development phase. Completion of this phase is indicated by
successful testing of resultant installation media and instructions from the testing phase of the
delivery phase.
6. Maintenance Phase This
is the long-term maintenance of an
application. This phase is the
lifecycle support for each version of a
production application including
patch development, testing,
packaging and deployment. As with
all other phases, this phase may
incorporate an entire lifecycle of its
own. This phase ends with the
discontinuation of support for the
targeted version of an application. In
general, each released and supported
version of an application has its own
distinct maintenance phase with
distinct support code bases and
infrastructure.
In general, CM and project process are not the same. CM is the portion of the overall project process
that defines the rules, means and checks to ensure that the process is trackable, traceable and all
personnel and items are accountable. The CM process is most significantly involved in the definition of
the source code management (SCM) process for a software development project. It is important that
the distinction be made between the CM process and the larger encompassing software project process.
Formal process implementations should be lightweight and unobtrusive to all people involved in the
process. The CM process is no exception to this rule. The CM process should be no more complex or
cumbersome than is necessary to ensure compliance with
regulatory mandates and internal goals. It is further
important that internal goals are kept basic with emphasis
placed on asking “why” for every stated goal.
The SDLC share common personnel teams that are actually involved in the work that is undertaken and
accomplished in each phase. Each personnel team plays a role in one or more of the phases of the SDLC
and serve a concrete role in the accomplishment of the goal for a given phase. While not all teams are
involved in every phase, some teams (i.e. management and CM) are involved in all phases of the SDLC.
A commonly overlooked team in the SDLC is the legal team which is of critical importance insuring that
the contracts between the organization and the customer are clear, concise and accurately represented
in the product phase delivery elements. It is the legal team that leverages the CM team preserved
information to ensure all accountability requirements are met to the letter of the law. It is also the legal
team that helps to ensure the letter of the contract is aligned with the spirit of the contract and within
scope of the management plan for delivery. Without the aid of a legal team a project may be in serious
“hot water” with regulatory and contractual compliance issues.
It is of great importance to remember that while there is a great deal of complexity in the phases and
teams of the SDLC; the processes in place should not
be elaborate. In general, the best strategy for
process structure is to be as small, light and simple
as possible while being as large, heavy and complex
as necessary to accomplish the stated goals.
Business Phase
The initial stage of the software lifecycle is the business phase. This phase is frequently reduced in
importance or ignored altogether even though it may often be the most critical phase to the success or
failure of the overall project. If there is no solid business definition that serves to support the
development of a software application, or if there is a lack of process in place to leverage the software
when developed, the project may already be doomed. There is additionally the potential for scope
creep due to a lack of direction in the business which often manifests itself in the software lifecycle as
the requirements begin to illustrate the business problems. While this is a general gain for the business,
the moving target for the software can result in failure of the project with public ridicule even though
the business may still reap benefits from the lessons learned during the process.
Even in these circumstances, the prior business analysis would result in greater gains for the business at
tremendous cost savings. It is important to realize that software is not always the best solution, and the
business may be “throwing technology at the problem” when the root cause of the problem is not truly
known. In this situation, as a software project suffers, the development team is blamed even though
the root of the problem may be the fault of the poor business direction. By requiring a strong business
phase a software team can ensure that there is a solidly defined need for software with defensible
documentation to ensure long-term support for the project. It is also possible that a decision to not
build a software solution is the final outcome of this phase. If no software is to be developed, the result
of this phase should translate into a fairly high ROI to the development team as little energy is expended
and no formal project is initiated.
Planning Phase
The planning phase includes the definition of system vision, scope and ballpark cost. This phase
combines the inception and elaboration phases of the RUP and generally amounts to a significant
proportion of overall project timelines. It is at this point that the project staffing begins to increase.
In the initial portion of the planning phase a vision and scope is defined. This vision and scope are
generic, and should be fairly inflexible to ensure project budgets and timelines can be controlled. It is
also important to realize that there is no detailed scope defined at this point, simply a go/no-go
boundary for the beginning of the requirement gathering portion of this phase.
The overall processes (RUP, MSF, etc.) used in this and subsequent phases are not addressed in this
document, and as such, any detailed processes or methodologies may be employed. The workflows
defined here complement any methodology applied and serve as an overarching general concept to the
larger process. In general terms the CM processes employed function in the same manner.
It is important to note that in this phase, as the requirements gathering process proceeds, the project
may be cancelled at any time due to the discovery that the overall problem does not lend itself (at the
current time) to benefit from a software solution. Also, it is possible that the defined requirements will
be satisfactorily met by the purchase of an existing software solution (i.e. COTS/GOTS). In either case,
the project should be viewed as a tremendous success as there will be cost savings in both the
development process (short term) and software maintenance (long term). The overall purpose for any
project is to provide value to the user in terms of both productivity and costs.
In addition to the requirements gathering and refinement, this phase encompasses the entirety of the
design process. In design, all plans and constraints should be documented in artifacts. The use of
artifacts is exemplified by the Unified Modeling
Language (UML), but its use is neither required
nor specifically suggested. Any means of
design and modeling may be used if it suits the
needs and scale of the current project. It is
however of critical importance that all designs
are captured as artifacts and tied in some
manner to requirements or other artifacts. In
the final design, all artifacts should be linked
directly or indirectly to some requirement. Any
design elements that do not address a
requirement should not be developed as this is
superfluous cost to the customer.
Each of these aspects requires an attention to detail, including ensuring legal compliance to all relevant
regulations and mitigation of risk associated with client disagreement at any phase. The legal issues to
be addressed in these CM controlled items may be handled by legal counsel assigned to the project (as
is often the case in industry), but the management of the artifacts supporting this process fall squarely
to the CM team.
As is true with every phase, any methodology or processes may be implemented in practice; all of these
issues must be addressed by any approach used.
Development Phase
Once the project is well-defined in terms of both requirements and design, the development phase
begins. In this phase the primary activity is
development of code in conformance to
the design artifacts produced in the
planning phase. The development of code
may include prototype code that serves as
a proof of concept for implementations.
These prototypes are generally used in the
planning phase for refinement of design
and to solidify the design decisions.
It is critical that all design artifacts are tied to a requirement in some measure. It is also critical that all
code is tied to some artifact or requirement. Any code that does not have a tie to a requirement will be
viewed by the customer as unnecessary and the cost of development of such code as a cost violation.
As development proceeds all code should be managed through some form of code repository or source
code management system (SCM). The requirements for placing code into the SCM and required update
intervals should be set either organizationally or per contract and enforced through the CM process.
As design and development progresses, the drift between planned mappings of design to requirements
and actual code to requirements for code identified to support a design artifact will vary. It is often the
job of the CM team to provide a metric as to requirement coverage and design coverage to ensure the
project is on track to meeting the customer needs. It is important that there is a minimal impact on the
design and development team with regards to both the CM process and the requirements
accountability. To ensure that the customer is being adequately served and not being charged for the
development of unneeded features, the crosswalk of code and design to requirement is critical.
Testing Phase
The testing phase is another largely overlooked part of the software lifecycle. It is important that all
code written be tested thoroughly and often. Each bug that is caught early (preferably in the planning
phase) will cost an order of magnitude less
to fix than a bug caught late in the process.
It is arguable that this change cost curve for
agile processes is flat, however if examined
in a micro scale (agile has a tight cycle), the
cost curve is comparable, just on a smaller
scale.
Upon completion of this phase, the software system should be ready for packaging and release to
market. This phase is the critical assessment phase that determines if the overall solution is adequate to
release. If any portion of the system fails, the
RTM is delayed. This very concept illustrates
the importance of unit testing early and
often. It is also important that nightly builds
are performed and that integrated builds are
performed as early as possible.
In testing, all tests are documented and revised as they progress and is all captured through the CM
process. In the testing process each test is bound to some reference artifact; either a model (i.e. use
case) or a specific requirement(s). This serves to ensure the system as a whole is operating within
specification to the documented requirements.
The role of test begins to decline in this phase in terms of sheer volume, but this phase is the pivotal
point in the accountability and acceptance process.
Delivery Phase
The delivery phase is the shortest and least involved phase in the overall process. This is not however to
say it is the least important. This phase is
where all accountability is checked for
customer approval, all documentation must
have been completed and incorporated into
the system, and the setup packages are
created.
This is actually a time of increased activity for the CM team, as all committees, boards, groups, etc are
“retired” for this delivery cycle (and possibly reformed for the next release). It is important that at this
point in time all requirements have been signed off by the customer as being met and tested. It is here
where all legal issues need be addressed to ensure the final delivery of this version is bound and
concluded.
Maintenance Phase
The maintenance phase is the bug-fix, security patch and general support phase of the SDLC. This phase
includes the capture of bug reports and the tracking of their disposition to include the verification of
existence of the bug. Also, all feature enhancement requests may be captured to provide input to the
next versions.
The length of this phase is bounded by the support contract length for a specific version of the system.
If there are 3 concurrently supported versions of the system in the marketplace, then there are 3
concurrent maintenance phases running, most often supported by the same personnel.
As bugs are reported, the development of patches and propagation of that code to the baseline code for
future releases is the responsibility of the personnel staffing this team. Bugs that are discovered by the
developers on new versions also report the bugs to the maintenance teams to enable the patching of
deployed systems.
interaction must be documented and each facet of the process kept clearly isolated (if only logically) to
ensure accountability in the process.
As in every phase of the SDLC, the impact of these operations on the other groups involved must be
minimal while yielding value to the organization.
Each methodology for software development will specify some groups that should be used to track the
progress of the project. This paper will briefly cover a few of the more commonly used groups.
Based upon these definitions, a CCB serves to control the level of change permitted in the SDLC for a
given product. It is important to note that bugs are not addressed in this construct. A CCB is primarily
charged with dealing with changes from the requirements as originally defined in the early stages of the
planning phase. Any time a change from the existing plan is needed or desired; the CCB will either
approve or disapprove the change. It is common for the customer to be represented on this board in
addition to the project staff.
As an augmentation to the CCB, a local configuration change board (LCCB) may be formed to perform
CCB functions on a local level (generally on training systems). The LCCB can also be a vehicle for internal
change management for bug tracking and smaller internal changes that are not significant enough for
the CCB.
Code reviews, like design reviews can reveal limitations in the overall system as evaluated in its
constituent parts. By discovering these problems early, a tremendous amount of time may be saved
from the testing phase. While code reviews are of greater importance as project size increases, they
may be beneficial to any development project.
Managing and overseeing a software development project is a balancing act of ensuring that resources
are adequately allocated and utilized while not intruding upon the creative process and its natural flow.
In general, management of software projects must be flexible, macro-scale and yet still maintain enough
insight at a granular level to detect and prevent problems in situ. This is a major challenge which is
often addressed through the use of project management (PM) or project oversight (PO) boards.
A PM/PO board is composed of managers and team leads from the various sub-projects and teams
within the overall software project. These managers report their statuses and their anticipated
needs/concerns with respect to the other teams. This provides a reduced personnel meeting focused on
the operational requirements for integration of the constituent components being designed and built.
The use of these teams is generally best realized for projects involving more than 5-10 developers.
Meetings
Each of the groups involved in a software project will need to meet to discuss their respective area of
concern. The schedule for such meetings should be regular to ensure consistency, but should be no
more frequent than is beneficial to the accomplishment of the goals of the group. In a small project, the
meeting frequency is generally less than that of larger projects.
Whenever a group meets, it should follow a set of standard meeting rules (such as Robert’s Rules of
Order / Parliamentary Procedure) to ensure consistency and fairness. It is also important to ensure a
non-inflammatory and impersonal conversational style. That is to say that there should be no “blaming”
or attribution of decision or effort to any individual(s). This keeps the meeting professional and
technical with a reduced likelihood of personal interests being addressed.
All meetings need to be controlled by a moderator. The moderator should ensure that the
conversations stick to the topic of the meeting and that the rules of the meeting are adhered to. It is
also the job of the moderator (and the rest of the audience) to ensure that the tone of the conversation
(non-inflammatory and non-attributional) is maintained with a no-tolerance policy given to violations.
Conclusions
The software development lifecycle is an extremely complex business undertaking with significant non-
technical ramifications. A well defined set of practices and processes are required to ensure activities
are repeatable with a high probability of success. Further, ensuring that all aspects of the processes are
accountable is the responsibility of the configuration management team.
Appendices
References
Addison Wesley SE http://www.awprofessional.com/articles/index.asp?st=42031&rl=1
CM Pros http://www.cmprofessionals.org/
CrossTalk http://www.stsc.hill.af.mil/CrossTalk
Wikipedia http://en.wikipedia.org/wiki/Main_Page