Ase Mod1
Ase Mod1
Software is more than just a program code. A program is an executable code, which serves
some computational purpose. Software is considered to be collection of executable
programming code, associated libraries and documentations. Software, when made for a
specific requirement is called software product.
Engineering on the other hand, is all about developing products, using well-defined, scientific
principles and methods
Software Development Life Cycle (SDLC) is a process used by the software industry to
design, develop and test high quality softwares. The SDLC aims to produce a high-
quality software that meets or exceeds customer expectations, reaches completion
within times and cost estimates.
SDLC is the acronym of Software Development Life Cycle.
It is also called as Software Development Process.
SDLC is a framework defining tasks performed at each step in the software
development process.
ISO/IEC 12207 is an international standard for software life-cycle processes. It aims to
be the standard that defines all the tasks required for developing and maintaining
software.
What is SDLC?
SDLC is a process followed for a software project, within a software organization. It
consists of a detailed plan describing how to develop, maintain, replace and alter or
enhance specific software. The life cycle defines a methodology for improving the
quality of software and the overall development process.
The following figure is a graphical representation of the various stages of a typical
SDLC.
Planning and Requirement Analysis
Requirement analysis is the most important and fundamental stage in SDLC. It is
performed by the senior members of the team with inputs from the customer, the sales
department, market surveys and domain experts in the industry. This information is
then used to plan the basic project approach and to conduct product feasibility study in
the economical, operational and technical areas.
Planning for the quality assurance requirements and identification of the risks
associated with the project is also done in the planning stage. The outcome of the
technical feasibility study is to define the various technical approaches that can be
followed to implement the project successfully with minimum risks.
Defining Requirements
Once the requirement analysis is done the next step is to clearly define and document
the product requirements and get them approved from the customer or the market
analysts. This is done through an SRS (Software Requirement Specification) document
which consists of all the product requirements to be designed and developed during the
project life cycle.
Designing the Product Architecture
SRS is the reference for product architects to come out with the best architecture for
the product to be developed. Based on the requirements specified in SRS, usually more
than one design approach for the product architecture is proposed and documented in
a DDS - Design Document Specification.
This DDS is reviewed by all the important stakeholders and based on various
parameters as risk assessment, product robustness, design modularity, budget and
time constraints, the best design approach is selected for the product.
A design approach clearly defines all the architectural modules of the product along
with its communication and data flow representation with the external and third party
modules (if any). The internal design of all the modules of the proposed architecture
should be clearly defined with the minutest of the details in DDS.
Building or Developing the Product
In this stage of SDLC the actual development starts and the product is built. The
programming code is generated as per DDS during this stage. If the design is
performed in a detailed and organized manner, code generation can be accomplished
without much hassle.
Testing the Product
This stage is usually a subset of all the stages as in the modern SDLC models, the
testing activities are mostly involved in all the stages of SDLC. However, this stage
refers to the testing only stage of the product where product defects are reported,
tracked, fixed and retested, until the product reaches the quality standards defined in
the SRS.
Deployment in the Market and Maintenance
Once the product is tested and ready to be deployed it is released formally in the
appropriate market. Sometimes product deployment happens in stages as per the
business strategy of that organization. The product may first be released in a limited
segment and tested in the real business environment (UAT- User acceptance testing).
Then based on the feedback, the product may be released as it is or with suggested
enhancements in the targeting market segment. After the product is released in the
market, its maintenance is done for the existing customer base.
The plans created during this phase will help you to manage time, cost, quality, change,
risk and issues. They will also help you manage staff and external suppliers, to ensure
that you deliver the project on time and within budget.
There are 10 Project Planning steps you need to take to complete the Project Planning
Phase efficiently.
It defines the roles and responsibilities of the project management team members.
It ensures that the project management team works according to the business
objectives.
It checks feasibility of the schedule and user requirements.
It determines project constraints.
A project objective describes the desired results of a project, which often includes a
tangible item. An objective is specific and measurable, and must meet time, budget,
and quality constraints.
A well written objective is crucial because it can affect every step of the project life cycle.
When you create a specific objective, you give your team a greater chance of achieving
the objective because they know precisely what they’re working towards. Clear project
objectives also support the current emphasis on total quality management: every
member of the team can consider themselves responsible for quality, because the whole
team can see the desired outcome from the beginning of the project.
Software project management begins with a set of activities that are collectively called
project planning
The manager and the software team must estimate the work that is to be done, the
resources required and the time that will be taken to complete the project
Estimates should always be made with the future needs in mind and also taking into
account the various degree of uncertainty
Process and project metrics provides the historical perspective and a powerful input for
the generation of quantitative estimates
As estimation lays a foundation for all other project planning activities, project
planning paves the way for successful software engineering.
The objective of software project planning is to provide a framework that enables the
project manager to make some reasonable estimates of resources, cost and schedule
These estimates are made at the beginning of a software project and should be updated
regularly as the project progresses towards completion
Software Scope
First activity in the planning of the software project is the determination of the scope of
the software
Scope of the software describes the data and control to be processed, function,
performance, constraints, interfaces and reliability
Feasibility
Resources
The second task involved in software planning is the estimation of the resources
required to accommodate the software development effort
Use relatively simple decomposition techniques to generate project cost and effort
estimates.
Use one or more empirical models for software cost and effort estimation.
The second option can work reasonably well, if the current project is quite similar to
the past efforts and other project influences are equivalent
Decomposition Techniques
in most cases, the problem to be solved is too complex to be considered in one piece
The decomposition approach can be seen from two different points of view
Since the estimate of the project is only as good as the estimate of the size of the work
to be accomplished, sizing represents the software project planner’s first major
challenge
From this statement it attempts to decompose the software into various problem
functions that can each be estimated individually
When LOC is used as the estimation variable, decomposition is absolutely essential and
is often taken to considerable levels of detail
For FP estimates, rather than focusing on function, each of the information domain
characteristics as well as the 14 complexity adjustment values (discussed in the
previous chapter) are estimated
The resultant estimates can then be used to derive a FP value that can be tied to past
data and used to generate an estimate
Process-based Estimation
The most common technique for estimating a project is to base the estimate on the
process that will be used
The process is decomposed into a relatively small set of tasks and the effort required to
accomplish each task is estimated
It begins with a delineation of the software functions obtained from the project scope
Once the problem functions and process activities are melded, the project planner
estimates the effort (e.g., person-months) that will be required to accomplish each
software for each software function
Cost and effort for each function and software process activity are computed as the last
step
Software Equation
Outsourcing
Therefore, staffing of your project should be done methodologically with a proper and
accurate plan.
Understanding the Purpose
Before you start staffing your project, you need to understand the purpose of your
project. First of all, you need to understand the business goals for the project and other
related objectives. Without you being clear about the end results, you may not be able to
staff the best resources for your project.
Spend some time brainstorming about your project purpose and then try to understand
the related staffing requirements. Understand the different skills required for project
execution, in order to understand what kind of staff you want.
Be Precise
Be precise when you prepare your staffing management plan. Make your staffing plan in
black and white. Do not include things just to make the people happy. Always include
the truth in your plan in a bold way. Whenever required, emphasize the roles and
responsibilities of the staff and organizational policies as well.
Advantages Dis-Advantages
Before the next phase of Error can be fixed only during the
development, each phase must be phase
completed
Some situations where the use of Waterfall model is most appropriate are
Requirements are very well documented, clear and fixed.
Product definition is stable.
Technology is understood and is not dynamic.
There are no ambiguous requirements.
Ample resources with required expertise are available to support the product.
The project is short.
Requirements Elicitation
Requirements elicitation is perhaps the most difficult, most error-prone and most
communication intensive software development. It can be successful only through an
effective customer-developer partnership. It is needed to know what the users really
need.
There are a number of requirements elicitation methods. Few of them are listed below –
Interviews
Brainstorming Sessions
Facilitated Application Specification Technique (FAST)
Quality Function Deployment (QFD)
Use Case Approach
The success of an elicitation technique used depends on the maturity of the analyst,
developers, users, and the customer involved.
1. Interviews:
Objective of conducting an interview is to understand the customer’s
expectations from the software.
It is impossible to interview every stakeholder hence representatives from
groups are selected based on their expertise and credibility.
Interviews maybe be open ended or structured.
1. In open ended interviews there is no pre-set agenda. Context free questions may be
asked to understand the problem.
2. In structured interview, agenda of fairly open questions is prepared. Sometimes a
proper questionnaire is designed for the interview.
2. Brainstorming Sessions:
It is a group technique
It is intended to generate lots of new ideas hence providing a platform to share
views
A highly trained facilitator is required to handle group bias and group conflicts.
Every idea is documented so that everyone can see it.
Finally a document is prepared which consists of the list of requirements and their
priority if possible.
3. Facilitated Application Specification Technique:
It’s objective is to bridge the expectation gap – difference between what the developers
think they are supposed to build and what customers think they are going to get.
A team oriented approach is developed for requirements gathering.
Each attendee is asked to make a list of objects that are-
1. Part of the environment that surrounds the system
2. Produced by the system
3. Used by the system
Each participant prepares his/her list, different lists are then combined, redundant
entries are eliminated, team is divided into smaller sub-teams to develop mini-
specifications and finally a draft of specifications is written down using all the inputs
from the meeting.
4. Quality Function Deployment:
In this technique customer satisfaction is of prime concern, hence it emphasizes on the
requirements which are valuable to the customer.
3 types of requirements are identified –
Normal requirements – In this the objective and goals of the proposed software
are discussed with the customer. Example – normal requirements for a result
management system may be entry of marks, calculation of results, etc
Expected requirements – These requirements are so obvious that the customer
need not explicitly state them. Example – protection from unauthorized access.
Exciting requirements – It includes features that are beyond customer’s
expectations and prove to be very satisfying when present. Example – when
unauthorized access is detected, it should backup and shutdown all processes.
The major steps involved in this procedure are –
1. Identify all the stakeholders, eg. Users, developers, customers etc
2. List out all requirements from customer.
3. A value indicating degree of importance is assigned to each requirement.
4. In the end the final list of requirements is categorized as –
It is possible to achieve
It should be deferred and the reason for it
It is impossible to achieve and should be dropped off
5. Use Case Approach:
This technique combines text and pictures to provide a better understanding of the
requirements.
The use cases describe the ‘what’, of a system and not ‘how’. Hence they only give a
functional view of the system.
The components of the use case design includes three major things – Actor, Use cases,
use case diagram.
1. Actor – It is the external agent that lies outside the system but interacts with it in
some way. An actor maybe a person, machine etc. It is represented as a stick figure.
Actors can be primary actors or secondary actors.
Primary actors – It requires assistance from the system to achieve a goal.
Secondary actor – It is an actor from which the system needs assistance.
2. Use cases – They describe the sequence of interactions between actors and the
system. They capture who(actors) do what(interaction) with the system. A
complete set of use cases specifies all possible ways to use the system.
3. Use case diagram – A use case diagram graphically represents what happens
when an actor interacts with a system. It captures the functional aspect of the
system.
A stick figure is used to represent an actor.
An oval is used to represent a use case.
A line is used to represent a relationship between an actor and a use case.