SPM Lecture Notes
SPM Lecture Notes
E – Contents
UNIT - 1
What is Software?
What is Project?
o Invisibility.
o Complexity.
o Flexibility.
Feasibility Study
Planning
Project Execution
Requirements Analysis
SRS
Design
Coding
Verification and Validation
Implementation/Installation
Maintenance and support
https://www.tutorialspoint.com/sdlc/sdlc_overview.htm
https://www.sharecodepoint.com/2018/02/int411-software-project-management-study-
material-notes-spm.html
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.
What is SDLC?
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.
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.
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.
Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to generate the
code. Different high level programming languages such as C, C++, Pascal, Java and PHP are
used for coding. The programming language is chosen with respect to the type of software
being developed.
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.
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.
Software development process
Description
In software engineering, a software development process is the process of dividing software
development work into smaller, parallel or sequential steps or subprocesses to improve
design, product management, and project management. It is also known as a software
development life cycle.
Types
Most modern development processes can be vaguely described as agile. Other methodologies
include waterfall, prototyping, iterative and incremental development, spiral development,
rapid application development, and extreme programming.
Purpose
The basic purpose of these methodologies is to provide smooth software development
according to the project requirements. The software development methodology is a
framework that is used to structure, plan, and control the process development of an
information system.25-Dec-2020
Advantages
Positive. Time saver: When you need results fast, code-and-fix is perfect. With a small
amount of time, the code-and-fix model allows one to produce a finished product fast. Lack
of money or resources: Sometimes a company does not have the money to really plan a
project.
A software process model is an abstraction of the software development process. The models
specify the stages and order of a process. So, think of this as a representation of the order of
activities of the process and the sequence in which they are performed.
Waterfall model
V model
Incremental model
RAD model
Agile model
Iterative model
Prototype model
Spiral model
Choosing the right software process model for your project can be difficult. If you know your
requirements well, it will be easier to select a model that best matches your needs. You need
to keep the following factors in mind when selecting your software process model:
Project requirements
Before you choose a model, take some time to go through the project requirements and
clarify them alongside your organization’s or team’s expectations. Will the user need to
specify requirements in detail after each iterative session? Will the
requirements change during the development process?
Project size
Consider the size of the project you will be working on. Larger projects mean bigger teams,
so you’ll need more extensive and elaborate project management plans.
Project complexity
Complex projects may not have clear requirements. The requirements may change often, and
the cost of delay is high. Ask yourself if the project requires constant monitoring or feedback
from the client.
Cost of delay
Is the project highly time-bound with a huge cost of delay, or are the timelines flexible?
Customer involvement
Do you need to consult the customers during the process? Does the user need to participate in
all phases?
This involves the developers’ knowledge and experience with the project domain, software
tools, language, and methods needed for development.
Project resources
This involves the amount and availability of funds, staff, and other resources.
As we mentioned before, there are multiple kinds of software process models that each meet
different requirements. Below, we will look at the top seven types of software process models
that you should know.
Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases. In this Waterfall model, typically, the outcome
of one phase acts as the input for the next phase sequentially.
The following illustration is a representation of the different phases of the Waterfall Model.
Incremental Model
The system is put into production when the first increment is delivered. The first increment is
often a core product where the basic requirements are addressed, and supplementary features
are added in the next increments. Once the core product is analyzed by the client, there is
plan development for the next increment.
Advantages
The software will be generated quickly during the software life cycle
It is flexible and less expensive to change requirements and scope
Throughout the development stages changes can be done
This model is less costly compared to others
A customer can respond to each building
Disadvantages
The software will be generated quickly during the software life cycle
It is flexible and less expensive to change requirements and scope
Throughout the development stages changes can be done
This model is less costly compared to others
Advantages
RAD MODEL
The RAD model falls into the category of Agile development techniques, which are iterative and
incremental methods of software development focused on speed and quick development, more
than the long and detailed process that the waterfall model is usually known for.
StepsintheRapidApplicationDevelopmentModel
1. Plan Requirements
2. User Design
3. Rapid Construction
4. Finalization
Plan Requirements
During this phase, developers and end users get together and find out what the requirements are.
This includes project scope, time allocated, and basic functionalities required. It’s not a
comprehensive stage since it’s understood that the functionalities will change and evolve as time
passes.
User Design
This is where feedback is gathered from the users. While doing so, architecture and design for
the product are kept in mind to understand what’s possible and what’s not.
In addition, this feedback from users allows for initial prototypes to be produced quickly. This
prototyping step is done as many times as required to finalize all the features and functionalities
of the product.
Rapid Construction
After the prototypes in the previous step are confirmed, the features and functions are finalized,
and the construction of the final product begins. The construction of the final product is a lot
faster than traditional methods since the modules for the decided features were already made in
the prototypes. Code reusability is a major factor to consider when following the Rapid
Application Development model, since speed and efficiency do matter.
Finalization
This is where the product moves from the building environment to the live environment—from
the construction phase to the testing phase. Here, the functions and user interface are tested
thoroughly to ensure they all work together without bugs and glitches.
Another part of this step is the training that’s given to end users to ensure that they understand
how to use the product, and where they can find what they need.
SPIRAL MODEL
The spiral model is a combination of sequential and prototype models. This model is best
used for large projects which involve continuous enhancements. There are specific activities
that are done in one iteration (spiral) where the output is a small prototype of the large
software. The same activities are then repeated for all the spirals until the entire software is
built.
To explain in simpler terms, the steps involved in the spiral model are:
A spiral model has 4 phases described below:
1. Planning phase
2. Risk analysis phase
3. Engineering phase
4. Evaluation phase.
**************************************************************************