0% found this document useful (0 votes)
36 views

Software Engineering

Software engineering is the application of engineering principles to software development. It is a systematic approach to software development that relies on scientific principles, methods, and procedures. Some key aspects of software engineering include analyzing user needs, designing and implementing software solutions, testing applications, and evolving software to meet changing needs. Common software development processes involve requirements analysis, design, implementation, verification, and maintenance phases. Popular process models include waterfall, evolutionary, prototyping, spiral, and concurrent development models.

Uploaded by

Akshat Giri
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Software Engineering

Software engineering is the application of engineering principles to software development. It is a systematic approach to software development that relies on scientific principles, methods, and procedures. Some key aspects of software engineering include analyzing user needs, designing and implementing software solutions, testing applications, and evolving software to meet changing needs. Common software development processes involve requirements analysis, design, implementation, verification, and maintenance phases. Popular process models include waterfall, evolutionary, prototyping, spiral, and concurrent development models.

Uploaded by

Akshat Giri
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 37

Software engineering

Introduction :
Software engineering is an engineering branch where
main focus is given over the development of software
product using well defined scientific principal,
procedures and methods.

SE is the process of analyzing user needs, designing,


constructing, and testing end user applications that will
satisfy the needs of the user through the use of
software programming language(s).As compared to
simple programming, software engineering is used for
larger and more complex software systems, which are
used as critical systems for business or for any
organization.

Visit : python.mykvs.in for regular updates


Software engineering
Introduction :
The term software engineer is most often confused with
programmer. Both work on vastly different disciplines.

Any programmer’s main task is to write source code


that makes a program run, whereas a software engineer
is responsible for designing, developing and
implementing the software solutions.

Thus Software Engineering covers wider aspect and


larger domain as compared to programming.

Programming is a component/part of software


engineering.

Visit : python.mykvs.in for regular updates


Software engineering
Software processes :
A software process is the process of dividing software
development work into different phases so that software
design is improved and product/project is easily
managed. It is also known as a software development
process or software development life cycle.

It is a kind of structure imposed on the development of


a software product. There is no ideal software process.
It depends upon the product , the organization where it
is being developed and the user for whom it is going to
be developed.

Visit : python.mykvs.in for regular updates


Software engineering
Software processes :

Common fundamental activities of all software processes:



Software specification - The functionality of the software
and constraints on its operation are defined under this
activity.

Software design and implementation – Designing of
software to meet the specification of software.

Software validation - The software must be validated to meet
the customer needs.

Software evolution - The software must be developed in
such manner that it can meet changing customer needs.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
It is an abstract representation of a software
process.

Common software process models are


1. Waterfall model
2. Evolutionary model
3. Component based model

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
1. Waterfall model
It is also known as a linear-
sequential life cycle model.
It is easy to use. In a
waterfall model , there are
number of phases and
each phase must be
completed before the next
phase begins and there
must not be any
overlapping in the phases.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
1. Waterfall model
The sequential phases in Waterfall model are −
Requirement analysis − Requirement specification document must be
prepared based on all possible requirement of software.

System Design − defining the overall system architecture based on the


requirements recorded in requirement specification document.Most of
software success depends on this phase.

Implementation − Based on system design small programs as units are


developed and later on these are integrated to work like a software

Verification − Testing of the software to check whether it fulfills user


requirements.

Maintenance − Some issues may arries at client environment to be


resolved are as a part of maintenance.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
1. Waterfall model

Situations to use/apply waterfall model


 
Clear and fixed requirements. Stable

problem definition. Technology is static.

No ambiguous requirements.

The project is small.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
1. Waterfall model
Advantages of waterfall model
 
Easy to understand Easy to

arrange task Clearly defined

stages Easy to manage

Well understood milestones

Disadvantages of waterfall model
Poor model for long project

Cannot fulfill changing requirement
 
No working software is developed till last phase
Dificult to measure the progress in phases
Visit : python.mykvs.in for regular updates
Software engineering
Software Process Models :
2. Evolutionary model
The evolutionary model is like "Incremental Waterfall
Model" ,where development cycle is divided into smaller
cycles , in this model users are able to get access to the
product at the end of each cycle.

The users provide feedback on the product for planning


to the development team for changing the product ,
plans or process.

These incremental cycles are typically of two or four


weeks in duration and continue until the product is fully
developed.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
Advantages

of Evolutionary Model
Error reduction: because versions are tested at each incremental cycle

User satisfaction: Users are given full chance of experimenting partially

developed system.
High quality: Quality is maintained due to thoroughly testing.

Low risk: There is significant reduction of risk as a versions is implemented.

Reduction Cost: It reduces cost by providing structured and disciplined steps.

Disadvantages

of Evolutionary Model:-
Multiple versions: Developer has to make table of different versions developed.

Difficult to Divide software: It is difficult to "divide the software and the problems in
several versions.

Uncertain customer needs: A confused user has uncertainty over his
requirements

Time And Cost:As this model reduces "Time And Cost" but requirement is not
gathered correctly,may later on effect over time and cost.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
Following are the evolutionary process models.
a. The prototyping model
b. The spiral model
c. Concurrent development model

a. The prototyping model


It is software working
model of limited
functionality. In this
model, working programs
are quickly produced.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
a. The prototyping model
1.Communication- between developer and
customer to discuss the overall objectives of the
software.
2.Quick design- of known requirements
3.Modeling quick design- for clear idea about the
development of software
4.Construction of prototype- to be evaluated by
the customer itself.
5.Deployment, delivery, feedback- of developed
software

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
a. Situations to use prototyping model

when the desired system needs to have a lot of
interaction with the end users.

Typically, online systems, web interfaces where there
are very high amount of interaction with end users,
are best suited for Prototype model.

In Prototype model the end users constantly work
with the system and provide a feedback which is
incorporated in the system.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
b. The spiral model
It is a combination of
prototype & sequential
model or waterfall model.
All activities are done in
one iteration .Software
development is done in
the phases like planning,
modeling, construction,
deployment,communicati
on in spiral/continuous
manner.These phases are
repeated till fully
functional software is not
developed.
Visit : python.mykvs.in for regular updates
Software engineering
Software Process Models :

b.

Situations to use spiral model
Large and high budget projects

When risk assessment is very critical

Requirements are not very clearly defined.

Requirements are vague and even complex

The organization does not have much experience with the

domain.
Ample time is available.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
c. The Concurrent development model
This model defines a series of
events that will trigger
transition from state to state
for each software engineering
activities. During early stages
of design, an inconsistency in
the analysis model is
procured. This will generate
the event analysis model
correction, which will trigger
the analysis activity from the
done state into the awaiting
Changes State.
This model is suitable for the
development of client/server
applications.

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
c. Situations to use Concurrent development model

When incremental release to be determined by project team

When immediate need of feedback after testing

More features to be added later on in the project

When there is need of continuous testing

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
3. Component Based Model
Software products are built
using components, and these
components are developed
through a number of different
sources, be written
in several different
programming languages.
Software development gone
through the steps like
feasibility study, system
design, component
identification, component
integration, system testing
and system release.
Visit : python.mykvs.in for regular updates
Software engineering
Software Process Models :
3. Situations to use Component Based Model

When the emphasize is given to buy components not to build
components

When the software structure is lower in coupling

When the development process is evolutional and concurrent

When the focus is assembling the software components not
develope

Visit : python.mykvs.in for regular updates


Software engineering
Software Process Models :
3. Component Based Model
Advantages

Reduce the cost & risk of software development.

Reduce the amount of software to be developed.

Faster delivery of software.

Disadvantages

Requirement changes effect the software development.

Control over the system evolution is lost

Visit : python.mykvs.in for regular updates


Software engineering
Delivery models :
Software Delivery is the process of getting a software product
to market or to the client.

Software delivery includes the following actions:




Client requirements finding

Technology for software development and deployment
Testing and validation of software for quality

A software delivery model is a term which is widely used in the IT


industry. It is defined as a way of project delivery based on the
location of client/user. The choice of a delivery model can affect the
success of the entire project.

We will go through two types of delivery models



incremental delivery model

spiral delivery model

Visit : python.mykvs.in for regular updates



Software engineering
incremental delivery model
Incremental delivery model refers to the practice of repeatedly
delivering a system into client environment (or to the marketplace) in
a series of expanding capabilities. Incremental deliveries are often
between three and twelve months.
Incremental delivery model is often confused with iterative
development method. A six-month delivery cycle could be composed
of 10 short iterations. The results of each iteration are not delivered
to the marketplace, but the results of an incremental delivery are
delivered to the client.

Visit : python.mykvs.in for regular updates


Software engineering
spiral delivery model
Spiral delivery model can be
pretty costly to use and
doesn’t work well for small
projects. It’s a risk-driven
model which means that the
overall success of a project
highly depends on the risks
analysis phase. Risk analysis
requires to review and analyze
the project from time to time
Strong side of this model is
that there’s a possibility to add
some additional functionality
at the last stages of software
product development.Software
is repeatedly delivered after
each refinement.
Visit : python.mykvs.in for regular updates
Software engineering
Process activities :
The software process activities are the sets of activities that finally
ends up in the production of a software product. These software
process activities may involve the development of software from a
scratch. There are different software processes but all must include
the major four activities. They are:
1. Software specification
2. Software design and implementation
3. Software validation
4. Software evolution
These four basic process activities are
organized differently in different
development processes. In the waterfall
model, these activities are organized in
sequence, whereas in evolutionary
development these activities are interleaved.
Utilization of these activities depends on the
type of software, people and organizational
structures involved.
Visit : python.mykvs.in for regular updates
Software engineering
Process activities :
Software specification
The Software specification or requirements engineering
is the process of understanding the user requirements
means finding what services are required and what
constraints on these services are.

• Ensures that the software will meet the user


expectations

• It’s a important stage of the software process ,errors


at this stage will reflect later on the next stages,
resultant higher costs of the project

Visit : python.mykvs.in for regular updates


Software engineering
Process activities :
1. Software specification
There are four main sub-activities of software specification in
Process Activities:
• Feasibility study: Technical,
operational, economical feasibility is
checked that these are as per budget
planned .
• Requirements elicitation and
analysis: Deriving the system
requirements through observation of
existing systems, onsite
observation, discussion with
stakeholders, etc.
• Requirements specification:
elicitation of requirements and
writing down these in a document.
• Requirements validation: Checking
the requirements for realism,
consistency and completeness.
Visit : python.mykvs.in for regular updates
Software engineering
Process activities :
2. Software design and implementation
It is a description of the architecture of the proposed
software. It can be considered as interfaces between system
components and the algorithms used. The design process
activities are the followings:
• Architectural design: It defines the overall structure
of the system, its components and their relationships
between these components.
• Interface design: It defines the interfaces between these
components, which must be clear.
• Component design: Take each component and design it.
• Database design: The system data structures
are designed and their representation in a
database is defined.

Visit : python.mykvs.in for regular updates


Software engineering
Process activities :
3. Software validation
Software verification (plan,requirements etc.,carried out by
QA ) or validation (actual product,carried out by testing
team) (V&V model) means system conforms to its
specification and that it meets the expectations of the
customer.
Testing has three main stages:
• Development (or component) testing: Components are tested by
the team developing system.
• System testing: Finding errors that result from interactions
between components.
• Acceptance testing: The system is tested with data supplied
by the system customer rather than using
dummy(simulated) data.

Visit : python.mykvs.in for regular updates


Software engineering
Process activities :
4. Software evolution
Software evolution means software maintenance, refer to
the process of developing software initially, then repeatedly
updating it for various reasons.
The main objectives of software evolution is ensuring the
reliability and flexibility of the system. The costs of software
maintenance are often several times the initial development
costs of software.

Visit : python.mykvs.in for regular updates


Software engineering
Agile Methods :
The Agile Method is an approach to project
management in software development. This method
assists teams in responding to the unpredictability
of software in development . It uses incremental,
iterative work sequences that are commonly known
as sprints.
AGILE methodology promotes continuous iteration
of development/testing throughout the software
development. Both development and testing
activities are concurrent.

Visit : python.mykvs.in for regular updates


Software engineering
Agile Methods :
The general principles of the Agile Method
• continually develop software to satisfy the client.
• Concentrate on delivering working software.
• Developers and user must work together
throughout the software development.
• Constant attention to technical excellence.
• Self-organized teams usually create the best
designs.
• At regular intervals, the team focus on how to
become more effective, so as tune and adjust their
behavior accordingly.

Visit : python.mykvs.in for regular updates


Software engineering
Agile

Methods –
Pair Programming:
Pair Programming is a agile
method ,where two
programmers share a single
workstation/computer. One
programmer is the driver,
whom has control over the
mouse and keyboard to write
the code, while the other
serves as the navigator, who
review the code that the other
is writing the code.
Visit : python.mykvs.in for regular updates
Software engineering
Agile

Methods –
Benefits of Pair Programming:
• Increased software Quality
• User Satisfaction
• Easy Integration of components
• Mentoring & Learning by programmers
• Flexibility in development

Visit : python.mykvs.in for regular updates


Software engineering
Agile

Methods –
Scrum
It is an agile development method which concentrates on how to
manage tasks within a team-based development environment.
Scrum believes in empowering the development team and
advocates working in small teams .

It consists of three roles


• Scrum Master : Responsible for setting up the team, sprint
meeting and removes obstacles to progress
• Product owner: Creates product backlog and responsible for the
delivery of the functionality at each iteration
• Scrum Team: Organizes the work to complete the sprint or cycle

Visit : python.mykvs.in for regular updates


Software engineering
Agile

Methods –
Scrum
Process flow of Scrum Methodologies:
• Each iteration of a scrum is known as Sprint
• Product backlog is a document/list where all details
are entered to get the end product.
• During each Sprint, top items of Product backlog are
selected and developed.
• Team works on the specified sprint backlog
• Team checks the work on daily basis.
• Team delivers product functionality at the end of the
sprint.

Visit : python.mykvs.in for regular updates


Software engineering
Agile

Methods –
Scrum
The Sprint
The main part of Scrum is a Sprint, where a useable and
potentially releasable product Increment is created.
Sprints can be of one week to one month in length.
There are three events each Sprint:
Sprint Planning – Team decides what to work in current
period
Daily Scrum – The Development Team meets for 5 to 15
minutes daily to inspect progress toward Goal.
Sprint Review – The Team review about task competed
as the per Backlog
Sprint Retrospective – The Team discusses on right and
wrong development, and how to improve
Visit : python.mykvs.in for regular updates

You might also like