0% found this document useful (0 votes)
26 views123 pages

Se CH 1

The document outlines the fundamentals of software engineering, including definitions, application domains, and various software process models. It discusses the characteristics, needs, and evolving roles of software, as well as the software crisis and common myths in the industry. Additionally, it presents a layered technology approach to software engineering and details the generic process model for software development.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views123 pages

Se CH 1

The document outlines the fundamentals of software engineering, including definitions, application domains, and various software process models. It discusses the characteristics, needs, and evolving roles of software, as well as the software crisis and common myths in the industry. Additionally, it presents a layered technology approach to software engineering and details the generic process model for software development.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 123

Unit -1

software process model

Prepared by : Richa rawat


Unit-1
Outlines
• 1. Defining software
• 2. Software Application Domain
• a). System Software
• b). Business Software
• c). Engineering and Scientific Software
• d). Personal Computer Software
• e). Web based Application Software
• f). Artificial Intelligence Software
• g). Embedded Software System
• h). Real Time System
3. Software Engineering
a). Definition
b). Characteristics
c). Advantages and Disadvantages
4. The Evolving Role of Software
5. A Layered Technology
6. Software Crisis on the Horizon
7. Software Myths and Reality
8. Software Process Models
9. Generic Process Model
10. Generic Framework Activity, Umbrella activity
11. Software Development Models
i. Waterfall Model / The Linear Sequential Model
ii. Incremental Process Model
iii. Prototype Model
iv. Spiral Model
v. Evolutionary process Models
vii. The RAD Model
12 . Agile Process Model
13. Component-Based Development
14. Product and Process
SOFTWARE ENGINEERING

SOFTWARE ENGINEERING
Defining Software:-
• We all know that computer is made up of hardware and software.

• The things in our computer are visible and physical called hardware and the things which are visible
but not physical(logical) called software.

• In simple terms: Anything that can be stored electronically is called software.

• (IEEE Definition of software): “Software is a collection of computer programs, procedures,


rules, associated documents and concerned data with the operation of data processing system”
• Software is created through the process of software development, Which involves writing, testing, and
maintaining computer programs.

• Software can be developed using different programming language such as java, python, C++ , and
others.

• “Software is a set of computer programs that provides functionality and performs


desired tasks".
Examples:-
Operating Systems, Internet browser, Movie Player, Antivirus, Games etc…..

Engineering:-
• Engineering is the process of desingning and building something that serves a particular
purpose and find a cost effective solution to programs.

• Engineering is all about developing products ,but it is not sufficient to develop product
only but we need to define it in a well defined format, we need to use scientific principle
,methods ,structured system is to be used ,then it is known as engineering.
Software Applications Domain:-
•A software application domain refers to a specific area of computer software in which a
software program or set of programs is designed to operate.

•A software application domain is defined by the nature of the problems being solved or the
type of data being processed.

•Understanding the application domain is important for designing effective and efficient
software applications that meet the needs of users.

•So in all ,we can say that the application domain is a key factor in software development.
Software categorization based on their
application areas:-
a). System Software
b). Business Software
c). Engineering and Scientific Software
d). Personal Computer Software
e). Web based Application Software
f). Artificial Intelligence Software
g). Embedded Software System
h). Real Time System
1) System Software-
•In simple terms: System Software is a type of computer software that acts as an interface
between the computer hardware and application software.
•System Software is necessary to manage computer resources and support the execution of
application programs.
•It also controls the peripherals of computer like monitors, printers, storage devices etc.
•Software like operating systems, compilers, editors and drivers, etc., come under this
category.
2) Application Software/Personal Computer
Software:-
•Application software is a type of computer software that is designed to
perform specific tasks or function for users.

•It is a software that users interact with directly to perform various tasks like
creating documents, browsing the web, or playing games.
Examples- Word processors, Spreadsheet programs, web browsers,
Accounting System, Enterprise resource planning (ERP) ,Video
players, photo editors.
3) Web-based Software or Web applications:-
• A web application is an application programs that is stored on a remote server and
delivered over the internet.
•User can access this applications with the use of software known as web-browser.
• web applications are typically developed using web technologies such as HTML,CSS,
and Java script, and they can be accessed from any device with an Internet connection
and a web browser.
Examples:

online banking system, e-commerce websites, social networking sites, online gaming
platforms and productivity tools like Google Docs and Microsoft Office 365 etc.
4) Artificial Intelligence Software:-

•AI is the ability for a computer to think and learn.

•AI software is a computer program which acts like human behavior by learning various data
patterns and insights.

•Now a days AI based software are used in banking, retail, entertainment ,education, travel,
security etc.
Examples:
Google Assistant, Amazon Alexa, Apple’ Siri, Microsoft Cortana, Chatbots, Speech
Recognition, Visual Perception, Decision-making
and Translation between Languages etc..
Applications
5)Business Software
Software applications that are used by business users to perform
various business functions.

Examples
Accounting System, Enterprise resource planning (ERP)
etc…

Applications
6) Embedded Software:-
•Embedded software is a software that is embedded in hardware or non-PC devices.

•Resides in read-only memory (ROM) of a device and is used to control its functions.

•Manufacturers build embedded software into the electronics of cars, telephones, modems,
robots, appliances ,toys, security system, televisions and digital watches.
Examples:
Keypad Control for a Microwave Oven, Digital Functions in an Automobile such as Fuel

Indicator, Dashboard Displays and Braking Systems, traffic control device .


7) Real-time System:-
Monitor, Analyse and Control the real time events.

Examples
Vehicle Event Controller, Radar, Air traffic control
system etc…

Applications:
What is Software Engineering ?
• Software engineering is the science and art of building(designing and writing
programs) a software systems that are:
1) on time
2) In budget
3) with acceptable performance
4) with correct operation

• Software engineering is the process of designing ,developing ,testing ,maintaining


software. It is a systematic and disciplined approach to software development that
airms to create high-quality ,reliable , and maintainable software.

• Software engineering includes a variety of techniques , tools and methologies ,


including requirements analysis ,design ,testing and maintenance.
• Software engineering is a technique through which we can developed or created
software for computer systems and any other electronic devices.
• In other words, software engineering is a process in which user needs are analyzed
software is designed based on there needs.
• Software engineer’s build these software and applications by using designing and
programming language.
• Three main aspects of Software Engineering are :

Provide quality products


Expected Cost
Complete work on agreed schedule
Needs of Software Engineering:-
The reasons why software engineering is needed to develop software products are given
below:

✔ To help developers to obtain high quality software.


✔To develop the product in appropriate manner using life cycle models.
✔ To gain skills to develop large programs.
✔To gain skills to be a better programmer.
✔To provide a software product in a timely manner.
✔To Provide a quality software.
✔To provide a software product at an agreed cost.
✔To develop ability to solve complex problems.
Also learn techniques of : Specification , design, user interface development, testing,
project management etc.
Software Characteristics:-
The characteristics of software decide whether the software is good or bad.

Understandability - Software should be easy to understand


It should be efficient to use.

Cost - Software should be cost effective as per its usage.

Maintainability- Software should be easily maintainable and modifiable in future.

Modularity- Software should have modular approach so it can be handled easily


for testing.

Functionality- Software should be functionally capable to meet user requirements.


Portability- Software should have the capability to be adapted for different
environments.

Correctness- Software should be correct as per its requirements.

Documentation- Software should be properly documented so that we can re-refer it in


future.

Reusability- It should be reusable, or its code or logic should be reusable in future.


The Evolving Role of Software:-
The evolving role of software means changing role of software. Basically any
software appears in two roles:

Software as a Product
Dual Role of software
Software as a Process
As a product,

Being a product the role of software can be recognised by its computing potentials, hardware
capabilities and accessibility of network computer by the local hardware.it also acts as an
information transformer i.e. producing , managing, modifying and conveying the source of
information.

As a process,(The vehicle for delivering a product)

Being a process the software acts as a vehicle for driving the product. In this role the
duty of software is control the computer or to establish communications between
the computers. Thus software plays dual role . It is both s product and a vehicle for
delivering a product.
the control of the computer (Ex. operating systems),
the communication of information (Ex. Networkingsoftware) and
the creation of other programs (Ex. software tools)
Software: Crisis on the Horizon-
The software crisis means the decisive time or turning point that software developers
encounter during software development. Hence software crisis represent various problems
that are faced by the software developers during software development process.

Software cost is getting increased tremendously day-by-day. The software purchase


expenses are higher that the hardware purchase. This is becoming worrying trend over the
year.
Following graph shows the ratio of hardware and software cost vs years-

This graph shows that cost of software is increasing rapidly than the hardware cost.
Causes of Software Crisis:-
• Software purchase coat is getting more that the hardware purchase cost .
Hence major part of budget of any software industry is on software purchase.
• Software products are difficult to alter , maintain ,enhance, debug or modify.
• Software resources are not being used optimally.
• Software product not being reliable.
• Many time software products get crashed on occurrence of specific condition.
• Delivery of software product within specified budget and on scheduled time.
Solution of Software Crisis:-
One possible solution to a software crisis is SOFTWARE ENGINEERING because
software engineering is a systematic, disciplined and quantifiable approach for preventing
software crisis, there are some guidelines:-

• Reduction in software over budget.


• The quality of the software must be high.
• Less time is needed for a software project.
• Experienced and skilled people working on the software project.
• Software must be delivered.
• Software must meet user requirements.
Software Myths:-
There are some misbeliefs in the software industry about the software and process of
building software . For any software developer it is a must to know such beliefs and reality
about them. Here are some typical myths-

Types of Myths

Management Customer Practitioner’s


Myths Myths (Developers)
Myths
1) Management Myths(Manager level myths)

Myth 1:
We already have a book that’s full of standards and procedures available for
building software which is enough.
xs
Reality:
• The book of standard may very well exist, but is it used?
• Does it reflect modern software engineering practice?
• Is it complete? Is it streamlined to improve time to delivery while still
maintaining a focus on quality?
Myth 2(Management Myths):-
We have the newest computers and development tools.

Reality:
• It takes much more than the latest model mainframe , workstation, or PC to do
high quality software development.
• Computer-aided software engineering (CASE) tools are more important than
.
hardware for achieving good quality and productivity.
• Majority of software developers still do not use tools effectively.
Myth 3(Management Myths):-
We can add more programmers and can catch up the schedule.

Reality:
• Software development is not a mechanistic process like
manufacturing.
• In the words of Fred Brooks : "adding people to a late software project
makes it later."
• People who were working must spend time educating the newcomers.
• People can be added but only in a planned and well-coordinated
manner.
2) Customer Myths:-
Myth 1:
A general statement of objectives (requirements) is sufficient to start a
development.

Reality:
• A formal and description of software is essential.

• Detailed requirements gathered with effective communication between


customer and developer.
Myth 2:(Customer Myths ):-
Requirement Changes can be easily accommodated because software is
very flexible.

Reality:
• It is true that software requirements change, but the
impact of change varies with the time at which it is
introduced.
• When requirements changes are requested early the
cost impact is relatively small.
• Early request for change can be accommodated easily.
3) Practitioner's (Developer) Myths:-
Myth 1:
Once we write the program, our job is done.

Reality:
• Experts say "the sooner you begin 'writing code', the
longer it will take you to get done."
• Industry data indicates that 60 to 80 % effort expended
on software will be after it is delivered to the customer
for the first time.
Myths (Practitioner’s Myths):-
Myth 2:
I can’t achieve quality until program is running.

Reality:
• One of the most effective software quality assurance mechanisms can
be applied from the inception (beginning) of a project—the technical
review.
• Software reviews are more effective “quality filter”
than testing for finding software defects.
Myths 3(Practitioner’s Myths):-
The only deliverable work product for a successful project is the working program.

Reality:
• A working program is only one part of a software configuration.
• A variety of work products (e.g., models, documents, plans) provide a foundation for
successful engineering and, more important, guidance for software support.

Myths 4 (Practitioner’s Myths):-


Software engineering is about creating unnecessary documentation.

Reality:
• Software engineering is not about creating documents. It is about creating a quality
product.
• Better quality leads to reduced rework. And reduced rework results in faster delivery times.
Software Engineering: A Layered Technology
Software engineering is a fully layered technology . All layers are connected and each
layer demands the fulfilment of the previous layer.
Layered technology is divided in to four parts-
1. A quality focus
2. Process
3. Method
4. Tools Tools

Method

Process

A quality focus

Software Engineering
1. A Quality Focus:-

A disciplined quality management is a backbone of software engineering technology.


It provides integrity that means providing security to the software so that data can be
accessed by only an authorized person, no outsider can access the data. It also focuses on
maintainability and usability.

2. Process Layer:-

Process layer is a foundation of software engineering. Basically process define the framework
for timely delivery of software. It is key that binds all the layers together which enables the
development of software before the deadline or on time.
The software process covers all the activities , actions, and tasks required to be carried out for
software development.
3. Method:-
During the process of software development the answers to all “how-to-do” questions are
given by method . It has the information of all the tasks which includes communications,
requirement analysis, design modeling , program construction, testing and support.

4. Tools:-
Software tools are used to bring automation in the software development process.
SE tools provide a self-operating system for processes and method.
Tools are integrated which means information created by one tool can be used by another.
Software Process
• A process is a collection of activities, actions and tasks that are performed when
some work product is to be created.

1. Activity
• to achieve a broad objective
• is applied regardless of the application domain, size of the project, complexity of
the effort
E.g. Communication with Stakeholders

2. Action
• a set of tasks that produce a major work product
E.g. Architectural Design

3. Task
• Focuses on a small, but well-defined objective
E.g. Conducting a Unit Test
Generic Process Model:-
• In Software Engineering , a generic process model is a framework that outlines the activities
and tasks involved in developing software.

• Software means to develop quality products by using technical and management rules.

• Any standard software process model would primarily consists of two types of activities:
• A set of framework activities, which are always applicable to all projects and a set of
Umbrella activities which are non SDLC activities that are applicable throughout the
process.

• To performing generic process here process framework activity and umbrella activity
is there.
3) Implementation:
The actual coding of the software is done in this phase.

4) Testing:
The Software is thoroughly tested to ensure that it meets the
specified requirements.

5) Deployment:
The Software is released and installed in the production
environment.

6) Maintenance:
After deployment, the software is monitored and maintained to ensure that it continues to
function correctly.
•Process framework activity include communication, planning, Modeling ,Construction and
Deployment these kind of activities are there.

•Umbrella activity include S/W Project tracking ,SQA , Technical Reviews , SCM, Reusability's
these kind of activities are there.

The generic process model typically consists of the following phases:

1) Requirements gathering and analysis:


This phase involves understanding the needs and requirements of the software system to
be developed.

2) Design:
In this phase, the software architecture and design are planned and documented.
Generic Framework Activities:-
• A generic framework activity is a high-level task that is performed throughout the software
development process.

•These activities are not specific to any particular methodology or technology ,but rather
represent common practices that are applicable to any software development project.

•The Following are typical framework activities:


1. Communication
• By Communicating customers requirements gathering is done.
• The Developer gather requirements of the project with the users.
2. Planning
• It consists of complete estimation, scheduling for project development and tracking.
• Describe work plan ,technical task, risks, resources requirements and a work
schedule.
• A project plan is created during this phase.
3. Modeling
• It involves to Develop a practical model to get a better understanding of the project.
• Various modeling technique such as UML,ERD, and Data Flow Diagrams are used
to create these models.
4 . Construction
• Construction consists of Code generation and testing part.
• Coding part implements the design details using an appropriate programming language.
• Testing is to check whether the flow of coding is correct or not and provides desired output or
not.
• Various types of testing such as Unit testing, Integration testing and acceptance testing are
performed in this phase.

5 . Deployment
• Deployment Step consists of Delivering the product to the customer and take feedback from
them
• If the customer wants some corrections or demands for the additional capabilities ,then
changes is required for improvement in the quality of software.
6. Maintenance:
• Maintenance is the ongoing process of fixing bugs, making enhancements,
and improving the performance of the software system.
Umbrella Activities:-
Umbrella activities are applied throughout a software project and help a software team
to manage and take control of all of things; progress, quality, change and risk arises
while developing the software.
1. Software project tracking and control
allows the software team to assess progress against the project plan
and take any necessary action to maintain the schedule.
2. Risk management
assesses (evaluates) risks that may affect the outcome of the project
or the quality of the product.
3. Software quality assurance(SQA team)
Defines and conducts the activities required to ensure software quality.
It is a methodology of checking the software development process with a predefined set
of standards.

4.Formal Technical reviews


Assessment of errors and correction done at each stage of activity .
5.Measurement(estimation)
This will include all the measurements or estimation of every aspects of the software project
like: Time estimation, cost estimation etc

6. Software configuration management(SCM)


manages the effects of change throughout the software process. SCM is a set of
activities designed to control changes made in the software development part.
7. Reusability management
Defines criteria for work product reuse (including software components) and
establishes mechanisms to achieve reusable components.
8. Work product preparation and production(Documentation)
encompasses (includes) the activities required to create work products such as
models, documents, logs, forms and lists.
All the project planning and other activities should be hard copied and the production gets
started here.
Software Process Models:-

• The process model is the abstract representation of process.


• Also known as Software development life cycle (SDLC) or
Application development life cycle Models

The Software Development Life Cycle (SDLC) is a process used by software


development organizations to plan, design, develop, test, deploy, and
maintain software applications.
SDLC (Software Development Life Cycle) is used in Every Software Development Company
because it is the root of the Development Cycle, if that model would not exist in the world,
firstly no software can build secondly if any how it would be made, it’s not going to succeed it
has no use, because of no maintenance, but Luckily SDLC model exist in Tech world But why
we need it Actually!

There are several reasons why organizations use the Software Development Life Cycle
(SDLC) when developing software applications:
To provide a structured and organized approach to software development:
The SDLC provides a framework for managing the software development process, which
helps to ensure that all necessary steps are taken and that the final product meets the
requirements.
1.To ensure that the software is of high quality: The SDLC includes testing and quality assurance
phases, which help to ensure that the software is free of bugs and that it meets the requirements.

2.To manage risks and costs: The SDLC helps organizations to identify and manage risks early in the
development process, which can help to reduce costs and minimize the impact of any issues that do
arise.

3.To improve communication and collaboration: The SDLC helps to ensure that all stakeholders,
including customers, end-users, and developers, are involved in the development process and that their
needs are taken into account.

4.To improve efficiency and productivity: The SDLC helps organizations to optimize the use of
resources and to streamline the development process, which can improve efficiency and productivity.

5.To increase the likelihood of a successful project outcome: Following a well-defined SDLC process
can greatly increase the chances of success of the project, as the process guides the team towards the
goal in a systematic and efficient way.
The SDLC typically includes the following phases:
1. Requirements gathering and analysis: This phase involves gathering information about the software
requirements from stakeholders, such as customers, end-users, and business analysts.

2. Design: In this phase, the software design is created, which includes the overall architecture of the
software, data structures, and interfaces. It has two steps:
•High-level design (HLD): It gives the architecture of software products.
•Low-level design (LLD): It describes how each and every feature in the product should work and every
component.

3. Implementation or coding: The design is then implemented in code, usually in several iterations, and
this phase is also called as Development.
things you need to know about this phase:

•This is the longest phase in SDLC model.


•This phase consists of Front end + Middleware + Back-end.
•In front-end: Development of coding is done even SEO settings are done.
•In Middleware: They connect both the front end and back end.
•In the back-end: A database is created.
4. Testing: The software is thoroughly tested to ensure that it meets the requirements and works
correctly.

5. Deployment: After successful testing, The software is deployed to a production environment and
made available to end-users.

6. Maintenance: This phase includes ongoing support, bug fixes, and updates to the software.
There are different methodologies that organizations can use to implement the SDLC, such
as Waterfall, Agile, Scrum, V-Model and DevOps.
The Linear Sequential Model(Waterfall model)

• This Model also called as the Classic life cycle or the Waterfall model.

• The Linear sequential model suggests a systematic sequential approach to software


development.

• Once a phase is complete, you cannot go back and repeat the process of previous
phase.

• It was introduced in 1970 by Winston Royce.

• It is most obvious way to develop the software.

• Let’s discuss the characteristics and working of every phase one by one.
.The software development starts with requirement gathering phase.
Then progresses through analysis, design, coding, testing and
maintenance.
Following figure illustrates waterfall model.
1.Requirement Analysis and specification:
•The aim of this phase is to understand the exact requirements of the
customer and to document them properly.
•Both the customer and the software developer work together so as to
document all the functions, performance, and interfacing requirement of the
software.
•It describes the "what" of the system to be produced and not “how.”
•In this phase, a large document called Software Requirement
Specification (SRS) document is created which contained a detailed
description of what the system will do in the common language.
2) Design:
•Once the requirements are understood, the design phase begins.
•This involves creating a detailed design document that outlines the software
architecture, user interface, and system components.
•Several tools and techniques are used in designing like:
flow chart ,DFD, Data Dictionary, Decision table, decision tree etc.
. The design is an intermediate step between requirements analysis and coding.
Design focuses on program attributes such as-
Data structure
Software Architecture
Interface Representation
Algorithmic Details
3) Implementation:
•The implementation phase involves coding the software based on the design specifications.
•This phase also includes unit testing to ensure that each component of the software is working as
expected.

4) Testing:
Testing begins when coding is done. While performing testing the major focus is on logical internals of
the software. The purpose of testing is to uncover errors, fix the bugs and meet the customer
requirements.

5) Deployment:
Once the software has been tested and approved, it is deployed to the production environment.

6) Maintenance:
The final phase of the Waterfall Model is maintenance, which involves fixing any issues that arise
after the software has been deployed and ensuring that it continues to meet the requirements over
time.
When to use ? /Applications of waterfall model
• When the requirements are constant and not changed regularly.
• Application is not complicated and big.
• A project is short and simple.
• Where the tools and technology used is consistent and is not changing.
• When resources are well prepared and are available to use.

• Product definition is stable.

• There are no ambiguous (unclear) requirements.


Advantages
• Simple to implement and manage
• For implementation of small systems waterfall model is useful
• Easy to explain to the user.
• Verification at each stage ensures early detection of errors /misunderstanding

Drawbacks
• Unable to accommodate changes at later stages, that is required in most of the cases.
• No Overlapping of Phases
• Not suitable for large projects.
• It includes blocking states(wait for the other team member) , it may cause long waiting
time.
INCREMENTAL PROCESS MODEL-
•Incremental Model is a process of software development where
requirements divided into multiple modules of the software
development cycle. (like a mini project).

•In this model, each module goes through the requirements,


design, implementation and testing phases.

• Every subsequent release of the module adds function to the


previous module .

•The process continues until the complete system achieved.


Incremental model Phases:

1. Requirement analysis:
• In the first phase of the incremental model, the product analysis expertise
identifies the requirements.

• And the system functional requirements are understood by the requirement


analysis team.

•To develop the software under the incremental model, this phase performs a
crucial role.
2 . Design & Development:
• In this phase of the Incremental model of SDLC, the design of the system
functionality and the development method are finished with success.

•When software develops new practicality, the incremental model uses style
and development phase.

•3. Testing:
• In the incremental model, the testing phase checks the performance of
each existing function as well as additional functionality.

•In the testing phase, the various methods are used to test the behavior of
each task.
4. Implementation:

•Implementation phase enables the coding phase of the development


system.

• It involves the final coding that design in the designing and development
phase and tests the functionality in the testing phase.

•After completion of this phase, the number of the product working is


enhanced and upgraded up to the final system product
When to Use ?

•When the requirements are superior(clearly defined/well understood).

•When the customer demands a quick release of the product.

•You can develop prioritized requirements first.

•A project has a lengthy development schedule.

•When a new technology is being used and also the software team is new to
this new technology.
Advantages:-

• Less cost and time is required to develop first increment called core
product.
• It is easier to test and debug during a smaller iteration.
• Customer can respond to each built.
• Product deliver is fast.
• Lowers initial delivery cost.
• Easier to manage risk because risky pieces are identified and
handled during iteration.
Disadvantages
• Needs good planning and design.
• Sometimes it is difficult to subdivide problems into functional units.
• Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally.
• Total cost is higher than Waterfall.
• This model can be used for very large problems.
RAD (Rapid Application Development) Model
Team 1dz
Modeling
Integration
Communication
Delivery
Construction Feedback
Team 2
Planning Modeling
Deployment

Team 3 Construction
Business
Modeling
Modeling Component
Data Modeling
Reuse
Process Modeling
Automatic
Construction Code
Generation
Testing
• It is a type of incremental model in which; components
or functions are developed in parallel.
• Rapid development is achieved by component based
construction
• This can quickly give the customer something to see and
use and to provide feedback.

1. Communication
• to understand business problem.

2. Planning
• multiple software teams work in parallel on different
systems/modules.
3. Modeling
1) Business Modeling: Information flow among the business.
Ex. What kind of information drives (moves)?
Who is going to generate information?
From where information comes and goes?
2) Data Modeling: Information refine into set of data objects that are
needed to support business.
3) Process Modeling: Data object transforms to information flow necessary
to implement business.
4. Construction
• It highlighting the use of pre-existing software component.
5. Deployment
• Deliver to customer basis for subsequent iteration.
When to Use ?
• There is a need to create a system that can be modularized
in 2-3 months of time.
• High availability of designers and budget for modeling
along with the cost of automated code generating tools.
• Resources with high business knowledge are available

Advantages
• Reduced development time.
• Increases reusability of components.
• Quick initial reviews occur.
• Encourages customer feedback.
• Integration from very beginning solves a lot of
integration issues.
Drawback

• For large but scalable projects, RAD requires sufficient human


resources.

• Projects fail if developers and customers are not committed in a much


shortened time-frame.

• Problematic if system can not be modularized.

• Not appropriate when technical risks are high (heavy use of new
technology).
Evolutionary Process Models
• Evolutionary models are iterative type models.
• They allow to develop more complete versions of the software.
• Evolutionary models
1) Prototyping Model
2) Spiral Model
1) The Prototyping Model

• Serves as a mechanism for identifying software requirements.


• Prototype can be serve as “the first system”.
• Quick planning and modelling.
• Feedback from customer/end user will refine requirement.
• Both customers and developers like this paradigm.
▪ Customer/End user gets a feel for the actual system.
▪ Developer gets to build something immediately.

A prototype is an early sample, model, or release of a product built to test a


concept or process.
Quick Plan

Communication

Modelling
Quick
Design

Deployment
Delivery and
Feedback
Prototype
Construction
When to Use ?/Application of Prototype Model
• Customers are not sure about the detail input, output and requirements.
• Developers are not sure about the technical feasibilities.
• This model used when desired system needs to have a lot of interactions
with users.
• This type of model generally used in GUI(Graphical user interface) type
development.
• Complicated and large system
Advantages
• Users are actively involved in the development
• Errors can be detected much earlier.
• Flexibility in design
• Helps team member to communicate effectively.
• A partial product is built at initial stage ,so customer can get a chance
to look of the product.
• New requirements can be accommodate(put up) easily.
• Quick user feedback is available for better solution.
Disadvantages
• The client involvement is more and it is not always considered by the
developer.

• It is low process because it takes more time for development.

• Many changes can disturb the rhythm of the development team.

• Costly with respect to time and money.

• If end user not satisfied with initial prototype ,he/she may lose interest in
the project.
Spiral Model
• Spiral model is proposed by Boehm in 1986.

• It is divided into set of frame work activities defined by software engineer


team.
• Each frame work activity represent one segment of spiral.
• Using spiral, software developed in a series of evolutionary
release.(Evolutionary means relating to a process of gradual change and
development.)
▪ Early iteration, release might be on paper or prototype.
▪ Later iteration, more complete version of software.
• Divided into framework activities (C,P,M,C,D).
• These framework activities are denoted by task region.
•Spiral model is realistic approach to development of large scale system and
software.

•Because customer and developer better understand the problem Statement


at each evolutionary level.

•Also risk can be identified or rectified at each such level.

•In the initial pass, product specification is built and in subsequent passes
around the spiral the prototype gets developed and then more improved
version of software gets developed.

•In spiral model ,project entry point axis is defined. the axis represent starting
point for different types of projects.
When to use Spiral Model?
• When the prototype for the software functionality are needed.
• When requirements are not very clearly defined or complex.
• When the large or high budget projects need to be developed.
• Project is not expected within a specific limited time span
• When requirements are complex
Advantages
• Requirements changes can be made at every stage.
• Good for large projects.
• Additional Functionality can be added at a later date.
• Software is produced early in the Software Life Cycle.
• Risks can be identified and rectified before they get
problematic.(difficult)
• Due to user involvement ,user satisfaction is improved.
• It provides cohesion between different stages.
Disadvantages

• It is based on the customers communications. if the communication is not


proper then the software product that gets developed will not put up to the
mark.

• It demands considerable risk assessment .if the risk assessment is done


properly the only the successful product can be obtained.

•Doesn’t work well for smaller projects.


Component-Based Development
• Consists of the following process steps
▪ Available component-based products are researched and evaluated for the
application domain.

▪ Component integration issues are considered.

▪ A software architecture is designed to accommodate the components.

▪ Comprehensive (complete) testing is conducted to ensure


proper functionality.

• Capitalizes (take advantage) on software reuse, which leads to


savings in project cost and time.
Advantages-

• CBD model leads to software reusability.

• Based on studies, CBD model leads to 70% reduction in development


cycle time.

• 84% reduction in project cost.

• Productivity is very high.


Product and Process
• The product and process have strong relationships.

• If the process is weak then the product quality will be compromised and
also dependency on processes is very dangerous

• As creative software professional, you should also derive as much


satisfaction from the process as the end product.

• The importance of both the product and the process will be one of the key
element.
Difference between process and product
1) Product is the final production of the project.
While the process is a set of sequence steps that have to be followed to
create a project.

2) A product focuses on the final result.


Whereas the process is focused on completing each step being
developed.

3) The main goal of the product is to complete the work successfully.


the purpose of the process is to make the quality of the While project
better.
Agile Process Model
• Agile SDLC model is a combination of iterative and incremental process models with
focus on process adaptability and customer satisfaction by rapid delivery of working
software product.

• Agile Methods break the product into small incremental builds.

• Every iteration involves functional teams working simultaneously on various areas like
planning, requirements analysis, design, coding, unit testing, and acceptance testing.

• A simple meaning of Agile is -> ready to move in quick and easy way.

•Agile is being very popular now a days in software development area.

•It includes constant stakeholder collaboration and continues improvements at each phase.
Advantages

• Customer satisfaction by rapid, continuous delivery of useful software.

• Customers, developers and testers constantly interact with each other.

• Daily cooperation between business people and developers.

• Continuous attention to technical excellence (quality) and good design.

• Regular adaptation to changing circumstances.


Disadvantages
• In case of some software, it is difficult to estimate the effort required at
the beginning of the software development life cycle.

• The project can easily get “off track” if the customer representative is not
clear about final outcome, that they want.

• Only senior programmers are capable of taking the kind of decisions


required during the development process.
Agile PRINCIPLES (િસ ાંતો) TO ACHIEVE AGILITY
The Agile Alliance defines 12 agility (agile spirit) achieve agility.

1) Satisfy Customer: Our highest priority is to satisfy the customer through


early and continuous delivery of valuable software.

2) Adopt Changes : Welcomes changining Requirements, even late in the


development.

3) Frequent Delivery: Deliver working software frequently, from a couple


of weeks to a couple of months, with a preference to the shorter timescale.
4) Work together :Business people and developers must work together daily throughout the
project.

5) Work in Motivational environments: Build projects around motivated individuals. Give


them the environment and support they need, and trust them to get the job done.

6) Face to face conversation : The most efficient and effective method of conveying
information to and within a development team is face-to-face conversation.

7) Working Software : Working software is the primary measure of progress.


8) Promote Sustainable development :
Agile processes promote sustainable development.(continued growth.)
The sponsors, developers, and users should be able to maintain a constant pace indefinitely that
is sustainable and healthy for the long term.

9) Continuous attention : Continues attention to technical excellence and good design enhances
agility.

10) Simplicity–the art of maximizing the amount of work not done–is essential.

11) self-organizing team: The best architectures, requirements, and designs emerge from
self-organizing teams.

12) Team approach: At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
Types of widely used Agile Models
i. EXTREME PROGRAMMING (XP)
ii. Scrum
1.) EXTREME PROGRAMMING (XP)
• Extreme programming (XP) is one of the most important software
development frameworks of Agile models.

•It is suggested by Kent Back in 2000.

•It is used to improve software quality and responsiveness to customer


requirements.

• It uses the concept of object-oriented programming.

• A developer focuses on the framework activities like planning, design,


coding and testing.
XP values
•Following are the values for extreme programming:

1) Communication
•Building software development process needs communication between the developer and
the customer.

•Communication is important for requirement gathering and discussing the concept and to
get the important feedback.

2) Simplicity
• XP focuses on the current needs instead future needs to incorporate in the design

• The simple design is easy to implement in code.


3) Feedback
• The feedback for the software product cab be obtained from the developers of the software
,customers, and other software development team.

•Feedback guides the development process in the right direction.

4) Courage/Trust
In every development process there will always be a pressure situation. The courage or the
discipline to deal with it surely makes the task easy.

5) Respect
• Agile process should inculcate the habit to respect all team members, other stake holders
and customer.
Process of EXTREME PROGRAMMING (XP)model
:
Class-responsibility-collaboration (CRC) cards are a brainstorming
tool used in the design of object-oriented software.
1. XP – PLANNING
• Planning starts with the requirements gathering which enables XP team to
understand the rules for the software.

•Here instead of making larger document user stories are written by the
customer in which what they need is mentioned.

•The customer and developer work together for the final requirements.

•The developer breaks down the user stories into small release and a plan for
releasing small functionalities is prepared.

•Divide the development into small iteration. iterative development helps in


quick or agile development.
2. XP – DESIGN
• The XP design follows the 'keep it simple' principle.
• Simple design always takes less time than the complex design .
•It is always good to keep the things simple to meet the current requirements.

3. XP – CODING
•Most essential requirement of XP is customer availability. In Extreme programming the
customer not only helps the developer team but it should be a part of the project.
•The coding is started after the initial design work is over.
•After the initial design work is done, the team creates a set of unit tests which can test each
situation that should be a part of the release.
•The developer is focused on what must be implemented to pass the test.
•Two people are assigned to create the code. It is an important concept in coding activity,
this will increase the quality of coding.
4. XP – TESTING
•Validation testing of the system occurs on a daily basis. It gives the XP team
a regular indication of the progress.

•All the code must be tested using unit testing before its release.
ii. SCRUM
•This model is developed by Jeff Sutherland , Ken Schwaber and mike
beedle in 1990.
•Scrum is an agile process model which is used for developing the complex
software systems.

•It is a lightweight process framework.


•Scrum is simple to understand
•Scrum framework help the team to work together
•Scrum is the most used one of the agile methodologies.
SCRUM workflow activities
SCRUM DEVELOPMENT ACTIVITIES/Process
of scrum
1. Backlog
• It is a list of project requirements or features that must be provided by the customer.
• The items can be included in the backlog at any time.
• The product manager analyses this list and updates the priorities as per the
requirements.

2. Sprint
• These are the work units that are needed to achieve the requirements mentioned in
the backlogs.
• Typically the sprints have fixed duration or time box (of 2 to 4 weeks).
• Thus sprints allow the team members to work in stable and short-term environment.
3. Meetings
• There are 15 minutes daily meetings to report the completed activities, obstacles
and plan for next activities.
• Following are three questions that are mainly discussed during the meetings.
• 1) What are the tasks done since last meeting ?
• 2) What are the issues that team is facing ?
• 3) What are the next activities that are planned ?

4. Demo
• During this phase implemented functionalities are demonstrated to the customer.
ROLES (SCRUM)
There are three roles in this methodologies ,and their responsibility are:
i) Scrum master
The scrum can set up the master team ,arrange the meeting and remove obstacles for the
process.

ii) Product Owner


The Product owner makes the product backlog ,priorities the delay and
is responsible for the distribution of functionality on each repetition.

iii) Scrum Team


The team manager its work and organizes the work to complete the sprint
or cycle.
Advantages of Scrum:
• Scrum can help teams complete project deliverables quickly and efficiently
• Scrum ensures effective use of time and money
• Large projects are divided into easily manageable sprints
• Developments are coded and tested during the sprint review
• Works well for fast-moving development projects
• The team gets clear visibility through scrum meetings
• Scrum, being agile, adopts feedback from customers and stakeholders
• Short sprints enable changes based on feedback a lot more easily
• The individual effort of each team member is visible during daily scrum
meetings
Disadvantages of Scrum:
• Scrum often leads to scope creep, due to the lack of a definite end-date
• The chances of project failure are high if individuals aren't very committed
or cooperative
• Adopting the Scrum framework in large teams is challenging
• The framework can be successful only with experienced team members
• Daily meetings sometimes frustrate team members
• If any team member leaves in the middle of a project, it can have a huge
negative impact on the project
Full Forms(IMP)
FTR: Formal Technical Review
SQA: Software Quality Assurance
SDLC: Software development life cycle
SCM: Software Configuration Management
SE: Software Engineering
SRS : Software Requirement Specification
XP model: eXtreme Programming
Thank You

You might also like