This page is published under the terms of the licence summarized in the footnote.
This paper expands on the Architecture Implementation part of the Architecture Management paper, addressing these terms and concepts:
“You” in this guide is the architect employed to support a solution development team. This paper is about your role in the SDLC. The paper concludes with some comments under the heading “People matter too”.
The SDLC is a process for the development, testing and deployment of a software system. Most large IS/IT organizations have their own SDLC, or use a variant of a well-known one like RUP or DSDM.
The table below is intended to show that the SDLC follows after commitment to implement an outline solution, and is influenced by inputs from governance and change management processes.
|
The five process
model for architects |
||
|
|
Change management |
|
|
Governance |
Outline solution |
|
|
Solution development (SDLC) |
||
The architect needs ongoing oversight of the SDLC; should monitor adherence to plan, interaction between components, specification changes, systems build; should maintain, review and refine architecture documentation accordingly.
The life cycle of a project is a process, or a collection of related processes. Underlying any formal description of an SDLC are assumptions that:
Our various guides to planning and management, also sponsors, stakeholders and inputs, amplify on several of the points made above.
Process improvement approaches like Six Sigma, Lean and CMMI are all about repeated processes. A process becomes repeatable when instances:
Trouble is, across the industry, the software development process fails the criteria above. The search for a repeatable software development process is frustrated by the findings that:
And within the world of software development:
A process that is repeatable in all those circumstances has to be a generalised abstraction. Most people find it too vacuous in practice.
Off-shore software development can be a relatively repeatable process. Because it is usually limited to short-cycle work for which there is a detailed specification, and ideally pre-defined test cases. Even there, the process can vary due to reasons above, different organisation structures and contractual or commercial agreements.
Mature enterprises have concluded that one size doesn't fit all, there is no single formula for success. Using one prescriptive process for all projects can bring more costs than benefits. Most define variations of their sequential process for different kinds of work, and define process tailoring guidelines. This is the assumption underlying process improvement schemes like CMMI.
The following sections describe a range of process variations from waterfall at one end to agile at the other.
Waterfall methods are based on the classic sequence of activities in a mechanical or hardware engineering project. The “waterfall” appears in a Gantt chart representation.
|
Sequential
development |
|||||
|
Analyze |
Analyze |
|
|
|
|
|
Design |
|
Design |
|
|
|
|
Build |
|
|
Build |
|
|
|
Test |
|
|
|
Test |
|
|
Roll out |
|
|
|
|
Roll out |
The assumption is that the activities, roles and artifacts of a project are predetermined in the initial project plans. The process determines the project life cycle.
The trouble is, you don’t learn what’s wrong with the requirements or the product until it is released. Software engineering isn’t like hardware engineering. Software products are more difficult to envisage up front. Software remains malleable even after delivery.
Moreover, you don’t learn what’s wrong with your process until the end.
Few if any SDLC processes are strictly sequential. Modern methods like RUP and the MSF process are better described as waterfall iterative. Even where a sequential process is imposed on a project, managers and architects will strive to proceed as iteratively as constraints allow.
An iterative method divides a large project into a series of smaller, often overlapping, projects that yield successively more complete versions of the desired product.
|
Iterative
development |
|||||
|
Initiation |
High-level architecture and analysis |
Ongoing development and refinement of the architecture |
|||
|
Product v1 |
A, D, |
B, T, R |
|
|
|
|
Product v2 |
|
A, D, |
B, T, R |
|
|
|
Product v3 |
|
|
A, D, |
B, T, R |
|
|
Product v4 |
|
|
|
A, D, |
B, T, R |
Iteration enables part of the desired solution to be delivered earlier, and lessons to be learned from this. Some allow that an iteration may last 6 months. In agile approaches, an iteration lasts no more than 90 days. In the agile method “Scrum”, an iteration is a 30 day sprint.
Iterative development can make projects small enough for the classic waterfall method to be applied in a sequential fashion from start to end of each iteration.
Iterative development can be subdivided into two kinds:
Introducing iterative development reduces the difficulties of large projects. But it does not make a project agile - as agilists mean it. Agile methods are not just iterative.
First, the attitude to requirements is different. Agilists observe that:
Second, the attitude to process is different. Agilists believe it is best that:
What does agile mean? Among other things:
Q) Do agile methods apply only to small projects?
A) No. Perversely: Sequential/waterfall processes work better on smaller projects, and agile principles are valuable on, even necessary for, larger projects.
The philosophy is that an agile method must and will provide better value, because it is inherently a more cost-efficient process than a sequential/waterfall method. The stated aim is that when the time or money runs out, the system will do what the users need most, what is possible and useful, rather than what might have been written down at the beginning.
For much more discussion of agile development: Agile development principles
Most SDLC processes (and there are many to choose from) call somewhere between waterfall and agile extremes. This section discusses what most SDLC processes have in common before discussing special features of agile methods. The common features below are roles, principles, phases and milestones, iterative development and prototyping.
A SDLC usually comes with default role definitions. E.g. The MSF process includes
also
Most SDLC processes encourage close user involvement
SDLC processes share many of their principles. The more agile the method, the more prescriptive it is about the principles and techniques (rather than sequence of activities). This table draws some correspondences between principles in different SDLC processes.
|
RUP - four
imperatives |
The MSF process -
four main principles |
DSDM - nine
principles |
|
focus on architecture |
|
|
|
develop iteratively |
iterative |
iterative/incremental development |
|
|
milestone-driven |
frequent delivery of products |
|
|
phase-based |
|
|
continuously ensure quality |
|
base-lining of requirements at a high level |
|
|
|
testing thru the lifecycle |
|
|
|
focus on fitness for business purpose |
|
manage change & assets. |
|
reversibility of changes |
|
|
allow for feedback and creativity. |
empowered teams |
|
|
|
active user involvement |
|
|
|
a collaborative and co-operative approach between all stakeholders. |
A SDLC is usually divided into four or five phases. This applies across the board from relatively sequential/waterfall methods to an agile method like DSDM.
|
IBM/Rational -
RUP |
Microsoft - MSF
Process |
DSDM |
|
Inception |
Envisioning |
Feasibility/Business Study |
|
Elaboration |
Planning |
Functional prototype |
|
Construction |
Developing - Stabilising |
Design prototype |
|
Transition |
Deploying |
Implementation |
Each phase ends at a stop/go milestone. Imposing stop/go reviews at pre-defined milestones helps managers spot and stop a runaway train. Note that agilists argue that reviewing abstract specifications is never adequate; it simply doesn’t reveal enough, so there must be some directly testable product.
Within each RUP phase, one plans a limited number of iterations, each yielding a tested system generation.
The table below our version of the SDLC, with activities grouped under four phases as in RUP.
|
SDLC phase |
Usual activities and products |
|
Inception |
Outline solution (architecture version 1) |
|
Requirements catalogue |
|
|
Business architecture version 2 |
|
|
IS development architecture version 2 |
|
|
IT operations architecture version 2 |
|
|
Elaboration |
Development guidelines (patterns and standards) |
|
Functional specification (use cases, UI design, business services, domain/data model) |
|
|
Data migration (if needed) |
|
|
Test strategy |
|
|
Transition plans: including migration paths |
|
|
Construction |
Detailed design: software & data |
|
Build: test documentation, Unit & link tested code |
|
|
System test: test documentation, System tested code |
|
|
Transition |
Acceptance testing, Acceptance tested code |
|
Transition into operations, Procedures & training |
|
|
Transition into maintenance, Maintenance procedures |
|
|
Cross-phase |
Requirements management and traceability records |
The more waterfall the method, the more prescriptive it is about the activities within a phase and the sequence of those activities. Nevertheless, the SDLC is a very complex and flexible process. This complexity means that the SDLC is not readily captured in a flow chart.
Even where a sequential/waterfall process is imposed on a project, managers and architects will strive to proceed as iteratively as constraints allow. For some, an iteration may deliver only a prototype, and may last 6 months.
Agilists are more rigorous and disciplined about iterative development. An iteration must deliver a tested solution – however limited. An iteration may last from 30 to 90 days. In the agile method “Scrum”, an iteration is a 30 day sprint.
Prototyping is used in all kinds of approach. In the agile method DSDM, it is promoted as one of the four main techniques (requirements prioritization, time-boxing, facilitated workshops, and prototyping).
A prototype is a working model of the thing to be built, not full-scale, not fully-featured. Even a Power Point presentation can be turned into a working UI prototype.
People build various kinds of prototypes at various times in the SDLC.
Throw-away or evolutionary prototype?
Horizontal or vertical prototype?
Functional or non-functional prototype?
· A technology solution prototype tests the feasibility of the specified technology solution. It proves that the chosen technologies can talk to each other and work together without significant problems. It may test the integrity of data passed between each component of the architecture. It may also be a performance prototype.
· A performance prototype demonstrates whether the performance targets can be met. It should include code to exercise known bottlenecks. It may stress a specific bottleneck. It may trial a specific performance tuning method. It may test the solution scalability and performance under a realistic load.
· A development prototype tests class libraries and design standards, it tests the invocation of infrastructure components and evaluates the performance thereof.
Spike development: Systems integration projects increasingly depend on components that are distributed over a wide-area network and/or over the internet. The more distributed the components the harder it is to predict the performance of the overall system. The higher the risks, the more effort you should spend on “spike development” to reach the stage where you can run a realistic test in a realistic test environment.
Lessons: Projects can get stuck in paralysis by prototyping. Some prototypes cannot be scaled up to work in the real enterprise. That’s why agilists propose an iteration should deliver a solution the customer can use right away. Manage customer expectations. A prototype built to prove one thing does not prove another. Most prototypes are best thrown away. Further effort is needed to harvest the results. Lessons learned must be fed back to the developers. Some code elements may be re-usable within the main development. Both these imply the development of training or standards, and a design authority to implement them.
The table below shows the main elements of a typical SDLC, which elements you focus on and which you keep an eye on.
|
SDLC phase |
Process step, with products |
Focus |
Interest |
|
Inception |
Outline solution (architecture version 1) |
Focus |
|
|
Requirements catalogue |
|
Interest |
|
|
Business architecture version 2 |
Focus |
|
|
|
IS development architecture version 2 |
Focus |
|
|
|
IT operations architecture version 2 |
Focus |
|
|
|
Elaboration |
Development guidelines (patterns and standards) |
Focus |
|
|
Functional specification (use cases, UI design, business services, domain/data model) |
|
Interest |
|
|
Data migration (if needed) |
|
Interest |
|
|
Test strategy |
|
Interest |
|
|
Transition plans: including migration paths |
Focus |
|
|
|
Construction |
Detailed design: software & data |
|
Interest |
|
Build: test documentation, Unit & link tested code |
|
Interest |
|
|
System test: test documentation, System tested code |
|
Interest |
|
|
Transition |
Acceptance testing, Acceptance tested code. |
|
Interest |
|
Transition into operations, Procedures & training. |
Focus |
|
|
|
Transition into maintenance, Maintenance procedures |
|
Interest |
|
|
Cross-phase |
Requirements management and traceability records |
|
Interest |
Your goal in supporting a solution development process is to implement a new and working solution at a time, cost and quality that is acceptable to the business. At the same time, you are concerned to implement overarching enterprise principles and standards.
You may have other goals within the solution development process. Make sure your manager defines your role in oversight of a programme or project. Are you responsible for delegating work to others? When should you take an interest in and/or contribute to something that someone else is responsible for? You may be asked to:
In a survey, we asked project team members to apportion the blame for project difficulties between process, people and technology. They apportioned blame in that order – suggesting process is the biggest challenge. But many managers will tell you people are the most important factor. This section includes some noteworthy advice from one such manager.
“I
have supported aggressive, dog -eat-dog clients for the last 7 years now and I
have accumulated many battle scars and lessons learned to help out anyone who
finds themselves in similar situations. As project manager, assuming that you
have a software background, that the
project has been approved , funded and the initial charter elements have been
defined , ...
“Follow the ten commandments below
From: "rmcdevit" to <development-projectmanagement@Groups.ITtoolbox.com>
Ref 1: other papers at http://avancier.co.uk
Footnote: Creative Commons Attribution-No Derivative Works Licence 2.0
Attribution: You may copy, distribute and display this copyrighted work only if you clearly credit “Avancier Limited: http://avancier.co.uk” before the start and include this footnote at the end.
No Derivative Works: You may copy, distribute, display only complete and verbatim copies of this page, not derivative works based upon it.
For more information about the licence, see http://creativecommons.org