Software Analysis in a nutshell !!
Most of software companies here in Egypt does not have a Analysis Department or a software analyst despite the fact that every software development process needs an analysis phase even if it is a small project you still need to fully understand the project you are working on, from my experience you can not gain that understanding without software analyst and a clear analysis process. Some statistics even states that 50% of the reasons why software projects fails is because of poor requirements definition and another 15% because of poor scope definition ( we will see that these definitions means to software analysis process later in this article ). That percentage shows you how important software analysis contributes to the success or the failure of a software projects .
Before going into details about the software analysis process lets first define what do we mean by software analysis. One important definition i always look to it as a reference is Business Analysis According to " Business Analysis Body of Knowledge " book.
It’s group of tasks and techniques used as a connection ring among
stakeholders in order to enable them to understand the structure
and operations of an organization and to introduce a solutions
to its problems and help it achieve its goal.
Business analysis involves understanding how the organization work
and define the organization’s goal and to understand existing methods
that organization use in order to achieve that goal.
( Business Analysis Body of Knowledge from IIBA. )
Software analysis and Business analysis are roughly the same thing its role is bridging the gap between end user’s and software developers however software analysis requires more technical skills and even more software design or at least programming background.
Back in faculty we studied System analysis from " System analysis and design in changing world " Book and it defined System Analysis as follows,
Systems analysis consists of those activities that enable a person
to understand and specify what the new system should accomplish.
Systems analysis describes in detail the “what” that
a system must do to satisfy the need or to solve the problem.
Before digging into software analysis process we need to clarify some important concepts every software analyst should understand. The most important definition is REQUIREMENTS, Requirements is a set of actions or operation needed by an organization to solve problem or achieve a goal.A requirement may describe the current or the future state of any aspect of the enterprise. There is a classification schema for the requirements :-
- Business Requirements :- it is often defined through Enterprise Analysis, they describe the reasons why a project has been initiated, the objectives that the project will achieve, and the metrics that will be used to measure its success.
- Stakeholder Requirements :- They describe the needs that a given stakeholder has and how that stakeholder will interact with the software solution.
- Solution Requirements :- describe the characteristics of a solution that meet business requirements and stakeholder requirements. There is two types of solution requirements :- Functional requirements and it describes the behavior or the functions that software must perform it is often described as use cases or user stories, the second type is Non-Functional requirements describe environmental conditions under which the solution must remain effective or qualities that the systems must have. like security level that the software must retain or the how responsive and reliable it should be, there is different models and attributes that define Non-functional requirements you can search to learn more about them.
The second most important concept is SOLUTION, and software product is a solution to a problem or a way to make peoples life easier so it is more important to look at software analysis process as defining a problem and finding a solution to that problem, we can define a solution as some changes to the current state of a process or a system to help solve our problem, like writing a software to manage stock-houses that software is considered a solution (change) to the current state (paper work).
The Third concept is DOMAIN, software domain is like the scope of the software or what should and what should not the software perform, it is like a boundaries to the software to limit its functionality and area of specialty.
The last concept is STACKEHOLDERS, stakeholder is anyone that can affect or be affected by the system within the organization or from outside.
Software Analysis Process
- Plan analysis approach.
- Define the Business needs
- Define Key users and stakeholders.
- Define solution scope
- Requirements Analysis
1- Plan analysis approach
At the very beginning of software analysis process you should define the analysis approach you will follow or make a plane to follow while performing the analysis process, it is an important phase because that approach or plan will define how you will organize your requirements and how you will investigate that requirements, that plan should include details like how many meetings you need with the stakeholders to complete the analysis process, time between every meeting, who should be involved in that meeting, the purpose of every meeting and what are you expecting as a result from that meeting. There are a plenty of software development methodologies out there that defines its own analysis approach that you can follow as you investigate the requirements. "BABoK" Book mentioned that almost all software development methodologies are in a spectrum between between Plan-driven and change-driven. Plan-driven focus on minimizing up-front uncertainty and ensuring that the solution is fully defined before implementation begins in order to maximize control and minimize risk, Example is Waterfall methods. While Change-driven focus on rapid delivery of business value in short iterations in return for acceptance of a higher degree of uncertainty regarding the overall delivery of the solution. Example is Agile methods. In our decision we will focus on Agile method (Change-driven).In agile methodology you produce an initial list of high level requirements and then updated throughout the project. Throughout the project s these requirements will be prioritized and re-prioritized and then investigate these prioritized requirements into more details, Agile tend to place a great deal of emphasis on effective requirements prioritization methods, due to the small scope of each iteration or release.
Agile presume that it is difficult to identify all requirements in advance of their implementation so that it is lean enough to handle any change in the requirements. Agile focus more on frequency of communication than on formal documentation. Documentation occurs following implementation.
At the end of this phase you should have analysis approach and plan to follow, you need to define the deliverables, BA techniques, timing and frequency of interactions with stakeholders
2- Define business need
In agile, each and every component of work is tied to a business need. And this enables the team and the product owner to be clear about what success looks like and how to rank individual stories. Bridging The Gap
To define Business need we need yo answer the questions of What, Why and How.What is Business need ? Why we need to define Business need ?. How to define Business need ? .
What is Business need ? The business need defines the problem that the business analyst is trying to find a solution for , Business need can be generated in several different ways we will go into some of them shortly. Why we need to define business need ?. In order to identify and define why a change to organizational systems or capabilities is required (Define the business requirements), it is also will guide the identification and definition of possible solutions,will define the solution scope,will help in assessing the values that a solution will deliver to the organization and how it aligns with the business goals and objectives. The business analysis approach will be shaped by the problem or opportunity faced by the organization. It is also required to ensure that the business analyst understands what information should be elicited from the stakeholders. How we will define the business needs ? it can be shaped by defining Business Goals and objectives, there is a test to ensure that the objective is SMART :-
- Specific :- describing something that has an observable outcome .
- Measureable :- tracking and measuring the outcome.
- Achievable :- testing the feasibility of the effort (achievable)
- Relevant :- in alignment with the organization goals and needs
- Time-bounded :- the objective has a defined timeframe that is consistent with the business need
Business Problem or Opportunity, the business analyst should investigate to ensure that there is an opportunity for improvement if the issue is resolved. The business analyst should also consider the adverse impacts the problem is causing.Desired outcome , Proposed solution should be evaluated against the desired outcome. there is a several techniques for this like Benchmarking , Brainstorming , Functional Decomposition (All of them are described in details in BABOK ).
3- Define Key users and stakeholders
It is defined as long as the business need is identified and it is an ongoing process i mean by that you continue to define the stakeholder as long the analysis phase continues.stakeholders may be grouped into categories based on their influence and benefits from the system. We need to define the stakeholders in order to fully understand level of authority of each individual and understand how he will be affected by the software or affect in the software. Before conducting stakeholders analysis you need to define the Business need because as mentioned before it will clarify the motivation of the organization and stakeholders, also you need to understand the Enterprise Architecture, it is meant by enterprise architecture the organizational units that exist, their interactions with other organizational units. There are several elements that influence stakeholders analysis :-
- Identification :- understand who the stakeholders are and their roles.
- Complexity of Stakeholder Group
- Attitude and influence :- you need to assess the attitude and influence of the stakeholders. Attitude towards their goals, do they really believe that the solution will benefit the organization ? , do they value defining their requirements ?. you need to assess their attitude towards collaboration. Attitude towards their team members, the sponsors.The business analyst should analyze how much influence is needed to make the project succeed.
- Authority Levels For Business Analysis Work.
there exists many models that is used in stakeholders analysis like onion model and RACI model, and stakeholders matrix
4- Define solution scope
- Conceptualize the recommended solution in enough details to enable stakeholders to understand which new business capabilities an initiative will deliver. It is the characteristics, features, functions, services a solution will provide. It is all about how the solution will look like, how it will function, and all the characteristics of the solution. It is important because it will minimize the efforts and resources that is required to implement the solution. You need to state in-scope and out-of-scope components of the solution. Define major business and technical dependencies that will impose constraints to the effort to deploy the solution, including dependencies that may exist between solution components. there are many techniques that is used to define solution scope :-
- Functional Decomposition :- To understand the scope of work and to break the solution scope into smaller work products or deliverables.
- User Stories :- Describe stakeholders and the goals the system supports and as such can also be used to define the solution scope.
- Problem or Vision Statement :- A problem or vision statement states the business need, identifies key stakeholders, and briefly describes the positive impact that meeting the business need will have on those stakeholders.
5- Requirements Analysis
we previously defined Requirements as a set of actions or operation needed by an organization to solve problem or achieve a goal.A requirement may describe the current or the future state of any aspect of the enterprise. Requirements analysis describes the tasks and techniques used by a business analyst to analyze stated requirements in order to define the required capabilities of a potential solution that will fulfill stakeholders needs. First you need to Prioritize Requirements requirement prioritization is to define the relative importance of the requirement it may be based on their relative value, risk, difficulty of implementation, or on other criteria, these elements determine which requirements should be targets for further analysis and to determine which requirements should be implemented first, it also ensures that analysis and implementation efforts focus on the most critical requirements. There is a bases for the prioritization process like Business Value, Business or technical risk, Implementation Difficulty, Likelihood of Success, Relationship to Other Requirements, Stakeholder Agreement, Urgency (This approach prioritizes requirements based on time sensitivity.). There is some challenges you may face in the prioritization process like Stakeholders attempt to avoid difficult choices, fail to recognize the necessity for making trade-offs, or desire to rank all requirements as high priority, another challenge is that the solution development team may intentionally or unintentionally try to influence the result of the prioritization process by overestimating the difficulty or complexity of implementing certain requirements. You may rank the requirements according to MoSCoW Analysis technique, Must ( must be satisfied ), Should ( can be satisfied in other ways ), Could ( desirable but not necessary), Won’t( not to be implemented in a given release, but may be considered for the future.)
Organize Requirements is to create a set views of the requirements for the new business solution that are comprehensive, complete, consistent, and understood from all stakeholder perspectives. there are two objectives in organizing the requirements :-
- Understand which models are appropriate for the business domain and solution scope.
- Identify model interrelationships and dependencies. Requirements alone are not complex; it is the relationships and inter-dependencies among requirements that adds the element of complexity.
The business analyst may informally designate a set of requirements as “high” or “low” level based on the level of detail included.
There are a number of general modeling concepts that are relevant to business analysis:-
- User Classes, Profiles, or Roles. These models categorize and describe the people who directly interact with a solution. Each role groups together people with similar needs, expectations, and goals. Uses case model,process model.
- Concepts and Relationships. Concepts usually correspond to something in the real world; a place, a person, a thing, an organization. Data models
- Events. A request to a business system or organization to do something, such as a customer placing an order, or a manager requesting a report, can be described as an event. Process models, state diagrams ,use cases.
- Processes. Processes are a sequence of repeatable activities executed within an organization.
- Rules. Rules are used by the enterprise to enforce goals and guide decision-making. They determine when information associated with an entity may change, what values of information are valid, how decisions are made in a process, and what the organization’s priorities are.
You are expected to produce an organized structure for the requirements and a documented set of relationships between them.
Specify and Model Requirements Specifications and models are created to analyze the functioning of an organization and provide insight into opportunities for improvement, facilitating communication among stakeholders. A textual requirement must describe the capabilities of the solution, any conditions that must exist for the requirement to operate, and any constraints that may prevent the solution from fulfilling the requirement. Express one requirement at a time, Do not assume your reader has domain knowledge, Use terminology that is consistent and simple. Models The choice of which model(s) to use for a particular set of requirements is determined by the type of information to be communicated, as well as the audience who will consume the information.
Define Assumptions and constraints Assumptions are factors that are believed to be true, but haven’t been confirmed . Assumptions may affect all aspects of the project and pose a certain degree of risk if they do not prove to be true. Constraints are limitations on a possible solution. They are not requirements since they are not implemented in any form by the project team. An assumption is anything that is believed to be true but that has not actually been verified. Assumptions can relate to something in the present or in the future. Business Constraints they Describe limitations on available solutions, or an aspect of the current state that cannot be changed by the deployment of the new solution. They may reflect budgetary restrictions, time restrictions, limits on the number of resources available, restrictions based on the skills of the project team and the stakeholders, a requirement that certain stakeholders not be affected by the implementation of the solution, or any other organizational restriction.
Verify Requirements (Quality) Requirements verification ensures that requirements specifications and models meet the necessary standard of quality to allow them to be used effectively to guide further work, ensures that the requirements have been defined correctly that is, that they are of acceptable quality. There are several characteristics of the requirements :-
- Cohesive :- Relates to one and only one thing .
- Complete :- it does not missing ant details .
- Consistent :- Ensure that individual requirements do not contradict each other or describe the same requirement using different wording.
- Correct .
- Feasible :- implementable within the existing infrastructure .
- Modifiable .
- Unambiguous .
- Testable: There must be a way to prove that a requirement has been fulfilled.
Verification Activities :-
- Check for completeness using data flow diagrams
- Compare that each requirement against all other requirements and check if any element is missing.
- Make sure all triggers and outcomes have been accounted for in all variations.
- Make sure the terminology used in expressing the requirement is understandable to stakeholders and consistent with the use of those terms within the organization.
Validate Requirements The purpose of requirements validation is to ensure that all requirements support the delivery of value to the business, fulfill its goals and objectives, and meet a stakeholder need. It is an ongoing process to ensure that stakeholder, solution, and transition requirements align to the business requirements. Identify Assumptions , In many cases it may not be possible to prove that implementation of the requirement will result in the desired benefit. It may be necessary to make assumptions about the stakeholders response . Define measurable evaluation criteria , it is necessary to define the evaluation criteria that will be used to evaluate how successful the resulting change has been after the solution is deployed. Determine Business value , assess individual requirements to determine if they deliver business value.A requirement that does not deliver direct or indirect value to a stakeholder is a strong candidate for elimination. Evaluate Alignment with Business Case and Opportunity Cost , A requirement can be of value to a stakeholder and still not be a desirable part of a solution. A requirement that is not aligned with the business case should be defined and approved in a separate business case, or considered for removal from the solution scope. Ultimately, each requirement must be traceable to the objectives in the business case, and should also minimize the opportunity cost of implementation.
This in may not be an enough explanation to the business analysis or software analysis but i believe it provides an overview about what is exactly is business analysis and its most important phases. I hope this article is not a wast of time :)
P.S. I used Business Analysis Body of Knowledge as a reference for all the information provided in that article.