BA Document
BA Document
This document defines the solution development process that a business analyst
follows from identification of a problem in the business community to the
implementation of a solution in that same business community. The process is
fully described in the book Business Analysis: A Systems Approach to Solving
Business Problems.
– Identify the conditions in the problem domain that are causing the
problem
– Analyze and model the solution
– Data intensive systems might be modeled with an entity relationship
diagram
– You might model process-intensive systems with a data flow or activity
diagram
– Systems with high user interaction might be best rendered in use
cases
– Continually confirm your analysis with the affected product
stakeholders that the part of the solution that affects them will work and
is acceptable
B. Create process to review any changes to the evolving system that may
affect requirements
IV. Prepare acceptance tests based on the defined acceptance criteria that
will prove to business analyst and stakeholders that the problem has been
solved
A. Write acceptance test scenarios, scripts or cases that prove the problem
has been completely solved
– Tests should be executable by users or users’ representatives
– Results should be understandable by users or product stakeholders
– Final results should be understandable by problem owner or business
management to prove problem was solved
– Edward R. Murrow
The business analyst is a role that can be played by any job or position, from
developer to upper-level management, and must be a role that is played in any
successful business problem-solving effort. The tenets in this book are aimed at
those who must play that role so that they may play the role successfully. The
following represents a summation of those tenets and principles.
The project is the domain of the project manager and the solution team. The
product is the result of that project. The business analyst starts with the end in
mind [Covey89] and keeps it focused. The business analyst’s responsibility is to
solve the problem, and get that product into the business environment.
At any time the business analyst can tell anyone the value of the change being
made to the organization, and, for the most part, to any component of that
change. Each feature and function created by the solution team plays a part in
the overall solution and each has its intrinsic value. The business analyst always
knows “why”.
Here is a complaint from a senior business analyst: “Most projects are in design-
mode long before they have established what the problem that they are trying to
solve has been defined as. Too often I see project teams discussing how the
screen is going to look and what push buttons are going to do before anyone
knows what business problem we are trying to fix.”
The set of requirements that the business analyst creates describes the solution
to the business problem in terms that the business community can understand
and agree will completely and accurately solve their problem. The technical
community can also understand what needs to be done so they can completely
and accurately create the software to solve the problem.
The business analyst seeks that information and analyzes it to produce the
solution document containing the requirements.
Start by determining what information you need to solve the problem. Use the
information gathering plan to help structure the information gathering process.
Always keep the focus of the elicitation on gathering information.
No part of the solution should be based on only one source; all parts of the
solution should be verified, confirmed and validated, preferably by someone or
something other than the source of the information that produced that part of the
solution.
While eliciting information, the business analyst focuses only on getting as much
information as possible. Analyzing the information as it is acquired appears as
though the business analyst is judging the responder and will stem the flow of
information. During analysis, the opposite is true. Any new information created
while analyzing is a business analyst’s assumption. The facts only come from
the business.
Since most business analysts come from IT, there is a natural tendency to
assume that all business solutions can be solved with information technology and
that the only solution to a business problem is by applying the use of computers.
Many times, however, there are much more elegant and simple solutions to
business problems: changing processes, relocating process workers,
redistributing the work, and so forth.
Focus on the business, and how IT can be used to improve and enhance
the business’s status quo
Look for human solutions rather than technical ones. IT will come up with the
technical solution to support the human business interaction. The business
analyst has to make sure that the technology will be used comfortably by human
beings. Keeping focused on the human aspects of the solution keeps the
business analyst focused on the business as much as the technology and that
balances the solution.
Every solution is the source of new problems. Every problem has ancillary and
dependent problems. Focus first on the real problem to solve now, and keep
your eyes open for other problems that exist or that may exist when a solution is
applied.
Take a holistic view of the organization and apply inductive reasoning to the
environment surrounding the stated problem to discover any other problems. By
looking at the whole problem domain instead of only focusing on the immediate
issue, the business analyst:
Step out of the way of the communication and let it flow naturally. That is, let the
solution team talk to the product stakeholders and vice versa. Only step in
between to clarify, ameliorate, document (as in taking notes), facilitate (as in
moving the discussion along), or mediate.
Organize your communication efforts around obtaining feedback from all parties.
Keep announcements, status reports, and one-way communiqués to a minimum.
When one of your communications does not receive feedback, consider that your
communication failed and seek another way of transferring the information more
successfully.
Checkpoints
There are a few checkpoint meetings that you want to hold formally or informally
with one or more participants. The primary purpose of the checkpoints is to
make sure the solution is moving in the right direction. The checkpoints are not
status meetings or “this is what I have done” meetings”.
Perform a quick check of the defined problem statement with the problem owner
to make sure the problem is correct and it is the problem that should be solved.
At that time, you ask three questions:
The second meeting which could be informal or formal comes after the good
requirements have been confirmed, when you have the solution to the problem
that the process workers and/or customer agree to, and before you start the
validation process of turning the solution into a formal set of requirements or
solution document. The purpose is to technically confirm the solution and
uncover any technical infeasibility, and to let the solution team know what is
coming.
The third meeting, which is formal, is done after the technical team has defined a
technical solution. The technical team presents its solution to the business
analyst. The business analyst makes sure the solution still solves the business
problem and updates the business solution to include any variations that result
from the technical solution. The questions to be answered at this checkpoint are:
Once you have defined the solution and the business community has agreed that
it solves their problem, you are the only one who has the authority to physically
change the approved requirements. When you change them, the person(s) who
signed the original document should also agree with, if not re-sign, with the
changes made.
Requirements are written for those who create the solution not for those
who have the problem
The final target audience for the requirements is the solution team. While the
users or stakeholders need to agree that the requirements completely and
accurately solve the problem, the requirements are written for those who are
actually going to build the solution.
The requirements state the solution to the business problem. The system
delivered must do what the requirements say. The system delivered must solve
the problem.
There is certainly a lot of discussion in the agile communities about the value of a
formal set of requirements. There is no argument among the agilists about the
value of a well maintained and documented code base. Business analysts derive
the same benefit from documenting and maintaining complete requirements, as
developers do from maintaining their code base.
Your last name is “analyst” and everything you do is about analysis, from
preparing decision papers for upper-level management to analyzing problem
statements to determine what the real problem is. You do not accept anything as
fact without analyzing to make sure it is fact. Your ability to analyze is what
separates you from the requirements recorders.
You do not want to create a solution that nobody uses. The solution might be
elegant and satisfy all requirements; however, when it is not used, it fails as a
solution. The business analyst makes sure the product stakeholders, those
affected by the problem and those impacted by the solution, have the requisite
training and documentation, and are prepared for the change to their
environment.
Measure the problem domain to establish the depth and breadth of the problem
as part of our justification. Then implement the change. Once the problem is
solved, perform the exact same measurement so that you can show the
improvement.
Place the post implementation measurement into the product. In this way, you
can continue to ensure the product continues to solve the problem and provide
an indicator of future problems. It also establishes your first measurement the
next time you change the system.
Measuring also provides a continuing justification and proof that the proposed
changes are worthwhile and increases the trust that management has in you as a
business analyst.
2. Numbered (identified)
Each requirement must be identified with a unique number or label.
3. CompleteSelf-contained, stand-alone
Lack of consistency in requirements is one of the major reasons for failures due to
requirements errors. When inconsistency exists, assumptions will be made and
chances are the assumptions could be wrong.
6. Feasible
In scope
States no requirements for anything or anyone not in the system
Technologies
Does the technology exist to do what is needed?
Can the technology be accessed/acquired (Buy. Build. Borrow)?
Can the software team actually do it?
Economic (e.g., Cost / Benefits Analysis)
Legal and regulatory
Do all the requirements meet or conform to all applicable regulations?
Usability
Will the user actually be able to understand and use the feature to solve
the business problem?
Feasible means that it is possible to implement each requirement within the
capabilities and limitations of the known technical and operational environment.
7. Traceable
Traceable to scope, concept of operations, etc.
Traceable to source of requirements
8. Written for the correct audience
User requirements UserFunctional requirements User /
customerSystems requirements Architect / designerSoftware
requirements Analyst / designer / developerProgram
requirements Developer / testerHardware requirements
Analyst / procurement / testers
9. Word Choice
Precision
Precision in professional language has two purposes: to make communication with
fellow professionals specific and unambiguous, and to inform people on the outside
meaningfully and clearly [Holmes, Neville, “In Praise of Professional Precision”, IEEE
Computer, 4/2006].
Choice of words is important. There are a number of imprecise words that we think
are precise. These words should be avoided. (See next page). Technical words or
jargon tend to obfuscate, and should be avoided unless defined specifically in the
glossary.
Ambiguity
Ambiguity exists when any word or phrase may be interpreted in more than one
possible way. This can be verified by having another Business Analyst read the
requirements aloud or have a Business Analyst paraphrase what she or he thinks the
requirement is saying. If the meaning varies from the author’s intended meaning,
ambiguity exists and must be eliminated by rewording the requirement. Note that
the requirement itself may not need to be changed to eliminate the ambiguity. A
clearly defined and unambiguous entry in the glossary may eliminate the problem.
Positive voice
Well-organized Fully-automated
Trouble-free State-of-the-art
Working-condition User-friendly
Use nouns rather than pronouns or proper nouns
ability about
acceptable adequate all
appropriate approximately around
aspect
case characteristic* current
communicate comprehensive convenient
detect different*
easy efficient employ
enable
enough every everyone
factor fast function
feature* high immediate
instantaneously kind
large logical low
many matter measure(n)
modern note (v) numerous
operate
perform practical present (adj)
present (v)* quick
realistic reasonable run*
satisfactory set simple
several safe small
Phrases to avoid
Table of Contents
List of Figures
General Approach
Regardless of the time an activity takes whether they are done simultaneously or
in long planned phases fraught with documentation and approvals, the software
development life cycle (SDLC) must answer certain questions about the product
being developed.
Each of the life cycle models includes activities, tasks, or phases that answer
these questions, although not necessarily in the direct format given above.
Waterfall
While the Waterfall Model presents a straight-forward view of the software life
cycle, this view is only appropriate for certain classes of software development.
Specifically, the Waterfall Model works well when the software requirements are
well understood (e.g., software such as compilers or operating systems) and the
nature of the software development involves contractual agreements. The
Waterfall Model is a natural fit for contract-based software development since
this model is document driven; that is, many of the products such as the
requirements specification and the design are documents. These documents
then become the basis for the software development contract.
There have been many waterfall variations since the initial model was introduced
by Winston Royce in 1970 in a paper entitled: “Managing the Development of
Large Software Systems: Concepts and Techniques”. Barry Boehm, developer
of the spiral model (see below), modified the waterfall model in his book Software
Engineering Economics [Prentice-Hall, 1987]. The basic differences in the
various models are in the naming and/or order of the phases.
The basic waterfall approach looks like the illustration below. Each phase is
done in a specific order with its own entry and exit criteria and provides the
maximum in separation of skills, an important factor in government contracting.
While some variations on the waterfall theme allow for iterations back to the
previous phase, “In practice most waterfall projects are managed with the
assumption that once the phase is completed, the result of that activity is cast in
concrete. For example, at the end of the design phase, a design document is
delivered. It is expected that this document will not be updated throughout the
rest of the development. You cannot climb up a waterfall.” [Murray Cantor,
Object-Oriented Project Management with UML, John Wiley, 1998.]
V Model
The "V" Model (sometimes known as the "U" Model) reflects the approach to
systems development wherein the definition side of the model is linked directly to
the confirmation side. It specifies early testing and preparation of testing
scenarios and cases before the build stage to simultaneously validate the
definitions and prepare for the test stages.
“The V Model, while admittedly obscure, gives equal weight to testing rather than
treating it as an afterthought. Initially defined by the late Paul Rook in the late
1980s, the V was included in the U.K.'s National Computing Centre publications
in the 1990s with the aim of improving the efficiency and effectiveness of
software development. It's accepted in Europe and the U.K. as a superior
alternative to the waterfall model; yet in the U.S., the V Model is often mistaken
for the waterfall…”
“In fact, the V Model emerged in reaction to some waterfall models that showed
testing as a single phase following the traditional development phases of
requirements analysis, high-level design, detailed design and coding. The
waterfall model did considerable damage by supporting the common impression
that testing is merely a brief detour after most of the mileage has been gained by
mainline development activities. Many managers still believe this, even though
testing usually takes up half of the project time.” [Goldsmith and Graham, “The
Forgotten Phase”, Software Development, July 2002.]
As shown below, the model is the shape of the development cycle (a waterfall
wrapped around) and the concept of flow down and across the phases. The V
shows the typical sequence of development activities on the left-hand (downhill)
side and the corresponding sequence of test execution activities on the right-
hand (uphill) side.
The primary contribution the V Model makes is this alignment of testing and
specification. This is also an advantage to the business analyst who can use the
Model and approach to enforce early consideration of later testing. The V Model
emphasizes that testing is done throughout the SDLC rather than just at the end
of the cycle and reminds the business analyst to prepare the test cases and
scenarios in advance while the solution is being defined.
The business analyst’s role in the V Model is essentially the same as the
waterfall. The business analyst is involved full time in the specification of the
business problem and the confirmation and validation that the business problem
has been solved. This is done at the acceptance test stage. The business
analyst is also involved in the requirements phases and provides advice during
the system test stage which is typically performed by independent testers – the
quality assurance group or someone other than the development team. The
primary business analyst involvement in the system test stage is keeping the
requirements updated as changes occur and providing “voice of the customer” to
the testers and development team. The rest of the test stages on the right side
of the Model are done by the development team to ensure they have developed
the product correctly. It is the business analyst’s job to ensure they have
developed the correct product.
Incremental Development
The incremental approach is a generic method of delivering a working part of a
total product or solution. It is the basis of most agile and iterative methods
including Rational Unified Process (RUP). The agile concept of “timeboxing” is
an incremental delivery approach.
Staged Delivery
The staged delivery model initially advanced by Tom Gilb and later championed
by Steve McConnell applies the principles of incremental delivery to the waterfall
model. It is a development approach that emphasizes project planning and risk
reduction by using multiple software releases.
During the first phases of the staged delivery process, the overall problem is
defined and the solution specified. The second phase consists of creating an
architecture for the overall solution. After that, the product is partitioned into
interim or successive deliveries and each delivery goes through its own
development life cycle as shown in the following diagram. The goal of each
stage is to advance toward a complete and robust product on time and within
budget. Typically each stage has its own budget and deliverable schedule that
may be refined based on previous deliverables. The duration of each successive
stage is generally similar. The number of planned stages for achieving a final
release is dependent upon the functionality, application complexity, and so forth.
At the core of successful staged delivery is the customer review that occurs
between stages and is typically based on using the software in the business
environment. This is what Alistair Cockburn calls the “breathing space”. It allows
for customer feedback and adjustments to the architect, requirements, and
process for successive stages.
The staged and any incremental delivery approach presents extra challenges for
the business analyst. After the problem has been defined and the product
requirements specified, the business analyst then may be handling requirements
changes for multiple stages, or addressing the user or stakeholder feedback from
previously installed software while assisting with the development and testing of
succeeding stages. Especially when multiple development teams are involved,
the business analyst activities in a staged or incremental delivery life cycle are
best handled in a team effort with multiple business analysts assigned to different
stages and product deliverables.
Iterative Approaches
Spiral
The spiral model was defined by Barry Boehm, now at the University of Southern
California, as an early example of an iterative approach to software development.
It was not the first model to discuss iteration, but it was the first model to explain
why the iteration matters. As originally envisioned, the iterations were typically
six months to two years long.
Each phase of the spiral starts with a design goal (such as a user interface
prototype as an early phase) and ends with the client (which may be internal)
reviewing the progress and determining if the next spiral will take place.
The primary difference between the spiral model and the other life cycle models
is the emphasis of risk assessment as evidenced by the following illustration.
Each cycle through the phases ends with an evaluation by the customer and an
assessment of the risk of going ahead with the next iteration or stopping and
completing the delivery of the product.
Once the product is deemed ready for development based on customer feedback
and risk assessment, the process becomes a standard waterfall approach. The
difference is that the high-level design and specifications have been completed
and the construction phase has a prototype to follow. This makes the
implementation faster and of higher quality.
While the spiral model in its pure form is not used much outside the US Military, it
sets the pattern for most of the agile and iterative approaches that follow it.
There are also a multitude of “spiral” variations for all or parts of the solution life
cycle, such that spiral has almost become synonymous with iterative.
1. The new system requirements are defined in as much detail as possible. This
usually involves interviewing a number of users representing all the external
or internal users and other aspects of the existing system.
2. A preliminary design is created for the new system.
3. A first prototype of the new system is constructed from the preliminary design.
This is usually a scaled-down system and represents an approximation of the
characteristics of the final product.
4. A second prototype is evolved by a fourfold procedure: (a) evaluating the first
prototype in terms of its strengths, weaknesses, and risks; (b) defining the
requirements of the second prototype; (c) planning and designing the second
prototype; and, (d) constructing and testing the second prototype.
5. At the customer's option, the entire project can be aborted if the risk is
deemed too great. Risk factors might involve development cost overruns,
operating-cost miscalculation, or any other factor that could, in the customer's
judgment, result in a less-than-satisfactory final product.
6. The existing prototype is evaluated in the same manner as was the previous
prototype, and, if necessary, another prototype is developed from it according
to the fourfold procedure outlined above.
7. The preceding steps are iterated until the customer is satisfied that the refined
prototype represents the final product desired.
8. The final system is constructed based on the refined prototype.
9. The final system is thoroughly evaluated and tested. Routine maintenance is
carried out on a continuing basis to prevent large-scale failures and to
minimize downtime.
The business analyst’s role in the spiral is further extended into the development
life cycle. In addition to the requirements definition and liaison activities, the
business analyst is typically quite involved with the prototyping efforts and the
risk assessment stages. The business analyst also works with the customer
during the evaluations and sometimes represents the customer in evaluating the
applicability of the product at that point.
The RUP is organized around phases and disciplines in a matrix (see the
illustration that follows) that emphasizes the iterative nature of the process. Each
of the disciplines iterates a number of times through each of the phases until the
exit criteria for that phase are achieved. The phases are not defined so much by
activities, but by goals and outcomes:
The business analyst is usually deeply involved as the “voice of the customer”
throughout all the iterations and phases, more so, of course, in the inception and
elaboration phases.
Agile Approaches
DSDM
The Dynamic Systems Development Method (DSDM) is a framework of controls
for the development of IT systems to tight timescales. It is independent of any
particular set of tools and techniques. It can be used with object-oriented,
structured analysis, and design approaches in environments ranging from the
individual PC to global distributed systems. DSDM has been used successfully
by organizations in both the public and private sectors.
DSDM provides a generic process which must be tailored for use in a particular
organization dependent on the business and technical constraints. DSDM
outlines a five-phase process:
1. Feasibility Study
The feasibility study assesses the suitability of the application for a
RAD approach and checks that certain technical and managerial
conditions are likely to be met. The feasibility study typically lasts a
matter of weeks.
2. Business Study
The business study scopes the overall activity of the project and
provides a sound business and technical basis for all future work. The
high-level functional and non-functional requirements are baselined, a
high-level model of the business functionality and information
requirements is produced, the system architecture is outlined and the
maintainability objectives are agreed upon.
5. Implementation
Implementation consists of putting the latest increment into the
operational environment and training the users. The final step in
implementation is a review of what has been achieved.
Extreme Programming
Extreme Programming (XP) is the poster child for the agile approaches. The
process was developed by Kent Beck, Ward Cunningham, and Ron Jeffries.
When people think of agile they usually think in terms of XP. Extreme
Programming is a software development methodology that represents a
throwback to the very earliest and purest days of software development when
technicians ran the show. Then, software engineers enjoyed greater autonomy
largely because there were few in the management ranks who understood the
task at hand.
XP is the highest risk approach and requires the greatest skill, knowledge and
experience to run it successfully. According to the founders, all the principles of
XP must be adhered to be successful; adapting several of the principles and
trying to do XP will not work.
The XP process as shown above starts with a project's requirements which are
laid out as individual stories typically written on 3x5 index cards. These stories
have test cases which are written by the customer and developer working as a
team. A test case includes the test and the desired results which, if met, indicate
that that story is complete.
The project is done in iterations. At the end of an iteration, the next iteration is
planned out in an iteration planning meeting called the Planning Game. The
customer (with the developers' guidance, of course) decides what stories are to
be implemented in the next iteration, based on what is most important to them,
and what is most practical to implement next.
It is important that all iterations take the same amount of time. This is so that
metrics can be retained that let the XP team know what their velocity (speed of
development) is. The time that it took to complete a given story is recorded so
that the programmers get a good feel for how much effort it takes to do that type
of work.
The stories are broken down into tasks, which are the steps needed to implement
a given user story. Developers then sign up to do those tasks.
On the completion of an iteration, acceptance tests are done to ensure that the
test cases defined in that story have been met. The acceptance tests include
both automated unit testing and customer testing. This ensures that all
requirements are reached since the development is based around those
requirements for which there are definite indicators that tell whether a given
requirement is met. It also breaks down the project into reachable goals rather
than having programmers work away forever on an ever-expanding scope.
Some XP Precepts:
XP calls for short release cycles, a few months at most, so the scope
of any slip is limited. Within a release, XP uses one- to four-week
iterations of customer-requested features for fine-grained feedback
about progress. Within an iteration, XP plans with one- to three-day
tasks, so the team can solve problems even during an iteration.
XP asks the customer to choose the smallest release that makes the
most business sense, so there is less to go wrong before going into
production and the value of the software is greatest.
XP Principles
The following principles from Kent Beck’s book Extreme Programming Explained
constitute the essence of XP. Many are the same as principles already
described for other agile processes or in general. Some were initiated by XP and
some were adopted by XP.
3. Simple Design: XP uses the simplest possible design that gets the job
done. The requirements will change tomorrow, so only do what's
needed to meet today's requirements. Design in XP is not a one-time
thing but an all-the-time thing. There are design steps in release
planning and iteration planning, plus teams engage in quick design
sessions and design revisions through refactoring throughout the
course of the entire project.
The business analyst has a place in the solution development effort regardless of
the development approach or methodology used by the solution team.
“Since I am doing all three roles, what is the difference between the project
manager, the systems analyst, and the business analyst?”
As can be seen by the table above, the business analyst, project manager, and
systems analyst or technical lead basically perform the same activities with few
exceptions. This is where all the confusion arises. A business analyst does risk
analysis and so does the project manager and systems analyst. The project
manager defines scope, but so do the business analyst and systems analyst.
The difference among the three roles is one of focus. The business analyst
focuses his activities and tasks on the business or product. The project manager
focuses her activities and tasks on the project. The systems analyst focuses his
activities and tasks on the technical aspects of the solution.
The project manager has the overall authority and responsibility for the project
and its success. The systems analyst or technical lead is responsible for the
technical aspects of the implemented solution. The business analyst is
responsible to ensure that the originally defined business problem has been
solved completely and at the expected quality.