Download as pdf or txt
Download as pdf or txt
You are on page 1of 63

Software Engineering

Unit 1
SOFTWARE

Software is:
(1)instructions (computer programs) that when executed provide
desired features, function, and performance;
(2) data structures that enable the programs to adequately manipulate
information, and
(3) descriptive information in both hard copy and virtual forms that
describes the operation and use of the programs.
Software
• A software is more than programs.
• It consists of programs, documentation, setup procedures to operate
the software system.

PROGRAMS

Operating
Documentation
Procedures
Software Characteristics
• Software does not wear out : According to well known bath tub
curve in reliability studies for hardware products. Hardware products
wear out over a period of time. However, Software becomes reliable
overtime instead of wearing out.
• Software becomes obsolete if the environment for which it was
developed, changes.
• Software may be retired due to environmental changes, new
requirements, new expectations etc.
Software Characteristics
• Software is not Manufactured: It is a one time development effort
and continuous maintenance effort in order to keep it operational.
• Reusability of Components: Standard components can be reused
again in new projects. Software Reusability has introduced another.
area and is known as Component Based Software Engineering.
• Software is Flexible : It can accommodate changes most of the times.
Although it is difficult to develop software that is flexible enough to
accommodate any changes. The software development process
becomes difficult to plan, monitor and control. The exception leads to
Software Crisis.
Software Engineering
• The objective of Software Engineering to produce good quality,
maintainable software on time, within budget.
• To develop a disciplined manner and focus on quality of the product
and on the process used to develop product.
Definitions
• Fritz Bauer defined Software Engineering as “The establishment and
use of sound engineering principles in order to obtain economically
developed software that is reliable and works efficiently on real
machines.”

• Stephen Schach – “A discipline whose aim is the production of quality


software, software is delivered on time, within budget, and that
satisfies its requirements”
Failure Curve for Hardware
Bath Tub Curve Hardware
1. Hardware exhibits relatively high failure rates early in its life because of design and manufacturing
defects.
2. Failure rate rises again as hardware components suffer from the cumulative effects of dust, vibration,
abuse, temperature extremes, and many other environmental reasons.
3. The hardware begins to wear out. Software is not susceptible to the environmental maladies that
cause hardware to wear out.
Failure Curve for Software
Key Terms used in Software Engineering
• Product: What is delivered to the customer , is called a product. It
may include source code, specification document, manuals,
documentation etc. It is the set of deliverables.
• Process: It is the way in which we produce software. It is the
collection of activities that leads to ( a part of) a product. An efficient
process is required to produce good quality products.
• Deliverables: Generated during software development. For example:
Source code, user manuals, operating procedure manuals etc.
• Milestone: Events that are used to ascertain the status of the project.
• Measures: A measure provides a quantitative indication of extent,
size, dimension, capacity, efficiency, productivity or reliability of some
attributes of a product or process.
• Metrics: It is a quantitative measure of the degree to which a system,
component, or process, possesses a given attribute.
• Measurement: It is the act of evaluating a measure.
Types of Product

Generic Product: They are developed for anonymous customers.


Customized Product: They are developed for particular customers. The
specific product is designed and developed as per customer
requirements.
Software Crisis
The software crisis was due to the rapid increases in computer power and
the complexity of the problems that could not be tackled.
The causes of the software crisis were linked to the overall complexity of
hardware and the software development process. Software crisis can occur
due to following reasons:
• Projects running over-budget
• Projects running over-time
• Software was very inefficient
• Software was of low quality
• Software often did not meet requirements
• Projects were unmanageable and code difficult to maintain
• Software was never delivered
Software Process Framework
• It is an abstraction of the software development process. It
details the steps and chronological order of a process.
• it is utilized in most applications.
• Task sets, umbrella activities, and process framework activities
all define the characteristics of the software development
process.
Software process includes:
• Tasks – focus on a small, specific objective.
• Action – set of tasks that produce a major work product.
• Activities – group of related tasks and actions for a major
objective.
Process Framework Activities:
• The process framework is required for representing common process
activities.

• Communication, planning, modeling, construction, and deployment


are all examples of framework activities. Each engineering action
defined by a framework activity comprises a list of needed work
outputs, project milestones, and software quality assurance (SQA)
points.
• Communication: By communication, customer requirement gathering is done.
Communication with consumers and stakeholders to determine the system’s
objectives and the software’s requirements.
• Planning: Establish engineering work plan, describes technical risk, lists resources
requirements, work produced and defines work schedule.
• Modeling: Architectural models and design to better understand the problem
and for work towards the best solution. The software model is prepared by:
o Analysis of requirements
o Design
• Construction: Creating code, testing the system, fixing bugs, and confirming that
all criteria are met. The software design is mapped into a code by:
o Code generation
o Testing
• Deployment: In this activity, a complete or non-complete product or software is
represented to the customers to evaluate and give feedback. On the basis of their
feedback, we modify the product for the supply of better products.
Software Development Life Cycle
• According to IEEE, the software life cycle is :

The period of time that starts when a software product is conceived


and ends when the product is no longer available for use. The software
life cycle typically includes a requirement phase, design phase,
implementation phase, test phase, installation phase and checkout
phase, operation and maintenance phase and , sometimes retirement
phase.
Software Development Life Cycle
• A Software life cycle model is particular abstraction that represents a
life cycle.
• SDLC defines the complete cycle of development i.e. all the tasks
involved in planning, creating, testing, and deploying a Software
Product
Given below are the various phases:
• Requirement gathering and analysis
• Design
• Implementation or coding
• Testing
• Deployment
• Maintenance
Requirement Gathering and Analysis :
• During this phase, all the relevant information is collected from the customer to develop a
product as per their expectation. Any ambiguities must be resolved in this phase only.
• Business analyst and Project Manager set up a meeting with the customer to gather all the
information like what the customer wants to build, who will be the end-user, what is the purpose
of the product. Before building a product a core understanding or knowledge of the product is
very important.
Design

In this phase, the requirement gathered in the SRS document is used as


an input and software architecture that is used for implementing
system development is derived.

Implementation or Coding

Implementation/Coding starts once the developer gets the Design


document. The Software design is translated into source code. All the
components of the software are implemented in this phase.
Testing
• Testing starts once the coding is complete and the modules are released for testing. In this phase, the
developed software is tested thoroughly and any defects found are assigned to developers to get them fixed.
• Retesting, regression testing is done until the point at which the software is as per the customer’s
expectation. Testers refer SRS document to make sure that the software is as per the customer’s standard.

Deployment
• Once the product is tested, it is deployed in the production environment or first UAT (User Acceptance
testing) is done depending on the customer expectation.
• In the case of UAT, a replica of the production environment is created and the customer along with the
developers does the testing. If the customer finds the application as expected, then sign off is provided by
the customer to go live.
Maintenance
• After the deployment of a product on the production environment, maintenance of the product i.e. if any
issue comes up and needs to be fixed or any enhancement is to be done is taken care by the developers.
BUILD & FIX MODEL
It is most simple model of software development, the product is constructed with minimal requirements, No specifications
nor any attempt at design, and testing is most often neglected. This is a representation of what is happening in many
software development projects.
Advantages
• Cost efficient for very small projects of limited complexity.
Disadvantages Build
• Unsatisfying approach for products of reasonable size.
• Cost is higher for larger projects.
• Product will not be delivered on time most of the times.
Fix
• Often results in a product of overall low quality.
• No documentation is produced.
• Maintenance can be extremely difficult without specification and design document.
Water Fall Model
Water Fall Model
• Winston Royce introduced the Waterfall Model in 1970.
• This model has five phases: Requirements analysis and specification,
design, implementation, and unit testing, integration and system
testing, and operation and maintenance.
• The steps always follow in this order and do not overlap.
• The developer must complete every phase before the next phase
begins. This model is named the "Waterfall Model because its
diagrammatic representation resembles a cascade of waterfalls
Requirements analysis and specification phase
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

Design Phase:
This phase aims to transform the requirements gathered in the SRS into a suitable form that permits further coding In
a programming language. It defines the overall software architecture together with a high level and detailed design.
All thin work is documented as a Software Design Document (SDD).

Implementation and unit testing:


During this phase, the design is implemented. If the SDD is complete, the implementation or coding phase proceeds
smoothly, because all the information needed by software developers is contained in the SD. During testing, the code
is thoroughly examined and modified. Small modules are tested in isolation initially. After that, these modules are
tested by writing some overhead code to check the Interaction between these modules and the flow of intermediate
output.
Integration and System Testing
This phase is highly crucial as the quality of the end product is determined by the
effectiveness of the testing carried out. The better output will lead to satisfied
customers, lower maintenance costs, and accurate results. Unit testing determines
the efficiency of individual modules. However, in this phase, the modules are tested
for their interactions with each other and with the system

Operation and maintenance phase


Maintenance is the task performed by every user once the software has been
delivered to the customer, installed, and operational.
Waterfall Model

Advantages Disadvantages
• This model is simple to implement also the • In this model, the risk factor is higher, so this
number of resources that are required for it is model is not suitable for more significant and
minimal. complex projects.
• - The requirements are simple and explicitly • This model cannot accept the changes in
declared; they remain unchanged during the requirements during development.
entire project development. • It becomes tough to go back to the phase. For
• - The start and endpoints for each phase are example, if the application has now shifted to
fixed, which makes it easy to cover progress. the coding phase, and there is a change in
• - The release date for the complete product, requirement, It becomes tough to go back
as well as its final cost, can be determined and change it.
before development. • Since the testing done at a later stage, it does
• - It gives easy control and clarity to the not allow identifying the challenges and risks
customer due to a strict reporting system. in the earlier phase, so the risk reduction
strategy is difficult to prepare.
Spiral Model
Spiral Model
• The problem with traditional software process models is that they do
not deal sufficiently with the uncertainity, which is inherent to
software projects.
• Important software projects have failed because projects risk were
neglected and no body was prepared when something unforeseen
happened.
• Barry Boehm proposed the spiral model to incorporate the project
risk factor.
• A Spiral model in software engineering is used when project is large
• When releases are required to be frequent, spiral methodology is
used
• When creation of a prototype is applicable
• When risk and costs evaluation is important
• Spiral methodology is useful for medium to high-risk projects
• When requirements are unclear and complex, Spiral model
in SDLC is useful
• When changes may require at any time
• When long term project commitment is not feasible due to changes
in economic priorities
Each phase of the Spiral Model is divided into four quadrants as shown
in the above figure. The functions of these four quadrants are
discussed below-

Objectives determination and identify alternative solutions


This phase starts with gathering the business requirements in the
baseline spiral. Requirements are gathered from the customers and the
objectives are identified, elaborated, and analyzed at the start of every
phase.
This phase also includes understanding the system requirements by
continuous communication between the customer and the system
analyst. Then alternative solutions possible for the phase are proposed
in this quadrant.
Identify and resolve Risks
Risk Analysis includes identifying, estimating, and monitoring the
technical feasibility and management risks, such as schedule slippage
and cost overrun.
During the second quadrant, all the possible solutions are evaluated to
select the best possible solution.

Then the risks associated with that solution are identified and the risks
are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
Develop the next version of the product
The identified features are developed and verified through testing during the third
quadrant. This process may include activities such as benchmarking, simulation,
and prototyping. At the end of the third quadrant, the next version of the software
is available.

Review and plan for the next phase


Once a cycle is completed, the planning of the next cycle begins. In the fourth
quadrant, the Customers evaluate the so far developed version of the software. In
the end, planning for the next phase is started.

The development phase depends on the remaining risks. For example, if


performance or user-interface risks are treated more essential than the program
development risks, the next phase may be an evolutionary development that
includes developing a more detailed prototype for solving the risks.
Spiral Model Advantages and Disadvantages

Advantages Disadvantages
Additional functionality or changes can be done at a
Risk of not meeting the schedule or budget
later stage

Cost estimation becomes easy as the prototype Spiral development works best for large projects only
building is done in small fragments also demands risk assessment expertise

Continuous or repeated development helps in risk For its smooth operation spiral model protocol needs
management to be followed strictly

Development is fast and features are added in a


Documentation is more as it has intermediate phases
systematic way in Spiral development

Spiral software development is not advisable for


There is always a space for customer feedback
smaller project, it might cost them a lot
Iterative Enhancement Model
• This model has the similar phases as the waterfall model, but with fewer restrictions. In
general the phases occur in the same order as in the waterfall model but these may be
conducted in several cycles.
• Iterative Enhancement Model deliver an operational quality product at each release, but
one that satisfies only a subset of the customer’s requirements.
• Product is divided into releases , and the developer delivers the product release by
release.

• A utilizable product is released at the end of the each cycle with each release providing
additional functionality.

• Evolutionary development model bear a resemblance to iterative enhancement model.


The similar phases as defined for the waterfall model occur here in a cyclical fashion. This
model is different from iterative enhancement model in the sense that this doesn't
require a useable product at the end of each cycle. In evolutionary development
requirements are implemented by category rather than by priority.
Rapid Application Development Model

Requirements
Planning User Description Construction Cut over
Rapid Application Development Model

• It is an incremental process model developed by IBM in the 1980s


• User requirement phase is essential from requirement phase to delivery of
the product.
• Users participation ensures the involvement of user’s expectations and
perspective in requirements elicitation, analysis and design of the system.
• A rapid prototype is build and is given to user for evaluation
• The feedback is obtained and prototype is refined.
• The process continues, till the requirements are finalized.
• Grouping techniques such as FAST, BRAINSTORMING are used for
requirements elicitation.
• SRS and Design Document is prepared associating with users.
1)Requirement Planning Phase:
Requirement are gathered using any group elicitation technique.
2) User Description:
Joint teams of developers and users are constituted to prepare,
understand and review the requirements. The team may use
automated tools to capture information from the other users.
3) Construction phase:
This phase combines the detailed design, coding, and testing phase of
waterfall model. Here we release the product to the customer.
Productivity tools are used.
4) Cut over phase:
This phase incorporates acceptance testing by the users, installation of
the system and user training.
Advantage of RAD Model
• This model is flexible for change.
• In this model, changes are adoptable.
• Each phase in RAD brings highest priority functionality to the customer.
• It reduced development time.
• It increases the reusability of features.
Disadvantage of RAD Model

• It required highly skilled designers.


• All application is not compatible with RAD.
• For smaller projects, we cannot use the RAD model.
• On the high technical risk, it's not suitable.
• Required user involvement.
Prototype Model
• It requires that before carrying out actual software its prototype (model) must be
created.
• Prototype model is a toy implementation of system.
• A prototype usually a demo version of actual system, possibly with limited
functionality, low reliability, and inefficient performance compare to actual
system.
• Detailed information is not available in it.
• Idea behind it is to create a prototype to gather the basic requirements.
• Prototype is built on the basis of current available requirements.
• It gives the “actual feel” of the system.
• Prototype is not complete system many of the details are not built into the
prototype.
• The goal is to provide system with overall functionality.
Advantage of Prototype Model

1.Reduce the risk of incorrect user requirement


2.Good where requirement are changing/uncommitted
3.Regular visible process aids management
4.Support early product marketing
5.Reduce Maintenance cost.
6.Errors can be detected much earlier as the system is made side by
side.
Disadvantage of Prototype Model
An unstable/badly implemented prototype often becomes the final product.
Require extensive customer collaboration
1. Costs customer money
2. Needs committed customer
3. Difficult to finish if customer withdraw
4. May be too customer specific, no broad market
Difficult to know how long the project will last.
Easy to fall back into the code and fix without proper requirement analysis, design,
customer evaluation, and feedback.
Prototyping tools are expensive.
Special tools & techniques are required to build a prototype.
It is a time-consuming process.
The Unified Process
• It is a software engineering process with the goal of producing good
quality maintainable software within specified time and budget.
• It supports iterative development where project is developed through
series of short, fixed length, mini projects called iterations.
• The outcome of each iteration is a tested, integrated and executable
system.
• Each iteration has its own requirements analysis, design,
implementation and testing activities.
• System continues to enlarge and thus grow incrementally over time.
• Unified Process is also known as Rational Unified Process
INCEPTION ELABORATION CONSTRUCTION TRANSITION

Time

Definition Planning Initial Release of


of and Operational the
Objectives architectur Capability Software
of the e for the Product
project project
Inception:
To define the scope of the work. Here we define requirements using
the requirements elicitation technique. Customer and developer
interaction helps to capture and define the requirements.
Requirements are always changing but these change can be
accommodated due to iterative nature of the process. The outcome of
this phase is clear definition of the objectives of the project
Elaboration:
How do we plan and design the project? What resources are required?
What type of architecture may be suitable?. These question are
answered in this phase. Here we specify the features and prepare the
baseline of the architecture. Outcome of this phase is planning and
architecture documents.
Construction
The objectives are translated in design and architecture documents.
These documents are the inputs to construction phase and output is
the product. We build and test the product in this phase. The outcome
of this phase is the deliverable product to the customer and sometimes
may be treated as beta release.

Transition
Transitioning the product to the customers involves many activities like
delivering, training, supporting and maintaining the product. The
ultimate objective is customer satisfaction. The phase may continue till
the customers are satisfied. The outcome is the product release which
also concludes the life cycle of the unified process.
Incremental Development Model
• Incremental Model is a process of software development where
requirements divided into multiple standalone modules of the
software development cycle.
• 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 release. The process continues
until the complete system achieved.
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.
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.
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.
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
Advantage of Incremental Model
• Errors are easy to be recognized.
• Easier to test and debug
• More flexible.
• Simple to manage risk because it handled during its iteration.
• The Client gets important functionality early.
Disadvantage of Incremental Model
• Need for good planning
• Total Cost is high.
• Well defined module interfaces are needed.
Agile Model
• The meaning of Agile is swift or versatile."Agile process model" refers
to a software development approach based on iterative development.
Agile methods break tasks into smaller iterations, or parts do not
directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development
process. Plans regarding the number of iterations, the duration and
the scope of each iteration are clearly defined in advance.
• Each iteration is considered as a short time "frame" in the Agile
process model, which typically lasts from one to four weeks. The
division of the entire project into smaller parts helps to minimize the
project risk and to reduce the overall project delivery time
requirements.
Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis,
design, coding, and testing before a working product is demonstrated
to the client
Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build
the project. Based on this information, you can evaluate technical and economic
feasibility
Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the
high-level UML diagram to show the work of new features and show how it will
apply to your existing system.
Construction/ iteration: When the team defines the requirements, the work
begins. Designers and developers start working on their project, which aims to
deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.
Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
Deployment: In this phase, the team issues a product for the user's work
environment.
Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Agile Testing Methods:

• Scrum
• Crystal
• Dynamic Software Development Method(DSDM)
• Feature Driven Development(FDD)
• Lean Software Development
• eXtreme Programming(XP)
Scrum
• SCRUM is an agile development process focused primarily on ways to
manage tasks in team-based development conditions.
• There are three roles in it, and their responsibilities are:
• Scrum Master: The scrum can set up the master team, arrange the
meeting and remove obstacles for the process
• Product owner: The product owner makes the product backlog,
prioritizes the delay and is responsible for the distribution of
functionality on each repetition.
• Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.
eXtreme Programming(XP)
• This type of methodology is used when customers are constantly changing demands
or requirements, or when they are not sure about the system's performance.
Crystal:
• There are three concepts of this method-
1.Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2.Cyclic delivery: under this, two more cycles consist, these are:
1. Team updates the release plan.
2. Integrated product delivers to the users.
3.Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
Advantage(Pros) of Agile Method:
1.Frequent Delivery
2.Face-to-Face Communication with clients.
3.Efficient design and fulfils the business requirement.
4.Anytime changes are acceptable.
5.It reduces total development time.
Disadvantages(Cons) of Agile Model:
1.Due to the shortage of formal documents, it creates confusion and crucial
decisions taken throughout various phases can be misinterpreted at any
time by different team members.
2.Due to the lack of proper documentation, once the project completes and
the developers allotted to another project, maintenance of the finished
project can become a difficulty.

You might also like