You are on page 1of 56

UNIT-01

Syllabus:
• Introduction: What is software engineering? Software Development Life Cycle,
Requirements Analysis, Software Design, Coding, Testing, Maintenance etc.
• Software Requirements: Functional and Non-functional requirements, User
Requirements, System Requirements, Interface Specification, Documentation of the
software requirements.
• Software Processes: Process and Project, Component Software Processes.
• Software Development Process Models. • Waterfall Model. • Prototyping. • Iterative
Development. • Rational Unified Process. • The RAD Model • Time boxing Model.
• Agile software development: Agile methods, Plan-driven and agile development, Extreme
programming, Agile project management, Scaling agile methods.

References: Ian Somerville book
Compiled bY Ms.Crimita Almeida
TOPIC-01
Software Engineering
Introduction: What is software engineering? Software Development Life
Cycle, Requirements Analysis, Software Design, Coding, Testing,
Maintenance etc

Compiled bY Ms.Crimita Almeida


Problems in software development

• Common Issues:-
• The final Software doesn ́t fulfill the needs of the customer.
• Hard to extend and improve: if you want to add a functionality later is
mission impossible.
• Bad documentation.
• Bad quality: frequent errors, hard to use, ...
• More time and costs than expected

Compiled bY Ms.Crimita Almeida


Software Engineering

• What is it?
• The study and application of methodologies to develop quality software that
fulfillcustomer needs.
• Objective
• To produce software that is:
• • On time: is deliver at the established date.
• • Reliable: doesn ́t crash.
• • Complete: good documentation, fulfill customer needs.

Compiled bY Ms.Crimita Almeida


What is software
• The term 'software' refers to the set of electronic program
instructions or data a computer processor reads in order to perform a
task or operation.
• Software can be categorized according to what it is designed to
accomplish.
• There are two main types of software: Systems software and
Application software.

Compiled bY Ms.Crimita Almeida


Systems Software
• Systems software includes the programs that are dedicated to managing
the computer itself, such as the operating system, file management
utilities, and disk operating system (or DOS).
• The operating system manages the computer hardware resources in
addition to applications and data.
Applications Software
• Application software, or simply applications, are often called productivity
programs or end-user programs because they enable the user to
complete tasks, such as creating documents, spreadsheets, databases
and publications, doing online research, sending email, designing
graphics, running businesses, and even playing games
Compiled bY Ms.Crimita Almeida
Introduction
• The term software engineering is composed of two words, software
and engineering.
• Software is more than just a program code. A program is an
executable code, which serves some computational purpose.
• Software is considered to be a collection of executable programming
code, associated libraries and documentations. Software, when made
for a specific requirement is called software product.

Compiled bY Ms.Crimita Almeida


Engineering
• Engineering on the other hand, is all about developing products, using
well-defined, scientific principles and methods.
• So, we can define software engineering as an engineering branch
associated with the development of software product using well-
defined scientific principles, methods and procedures. The outcome
of software engineering is an efficient and reliable software product.
• IEEE defines software engineering as:
• The application of a systematic, disciplined, quantifiable approach to
the development, operation and maintenance of software.

Compiled bY Ms.Crimita Almeida


Software product
● Types of Software Product:
● Based on how and why the software products are being developed,
software products can be of the following two types
Generic Software Products

Software products which were developed with the target to sell them to
customer eligible to buy with no customization for any specific customer are
called generic software products.

These software products are stand-alone, can be up-gradable to new


versions or updates while the updates are prepared by the software company
or vendor who developed the product.
Customized Software Products

Software products which were developed as per the requirements of a


specific customer.

Customized software products means a piece of software customized in case


of features, workflow, design, language etc. or with additional features
included or removed features and financed by a customer as the development
cost or price of the software being developed.

Customized software can be developed from scratch such as gathering all the
requirements from the customer, analyzing and developing using various
software development process models or it can also be that a software
product already exists and it will modified as per the requirements of the
customer.
Stages for software development

Compiled bY Ms.Crimita Almeida


Need of Software Engineering.
• The need of software engineering arises because of higher rate of change in
user requirements and environment on which the software is working.
• Large software - It is easier to build a wall than to a house or building,
likewise, as the size of software become large engineering has to step to give
it a scientific process.
• Scalability- If the software process were not based on scientific and
engineering concepts, it would be easier to re-create new software than to
scale an existing one.
• Cost- As hardware industry has shown its skills and huge manufacturing has
lower down the price of computer and electronic hardware. But the cost of
software remains high if proper process is not adapted.
Compiled bY Ms.Crimita Almeida
• Dynamic Nature- The always growing and adapting nature of software
hugely depends upon the environment in which the user works. If the
nature of software is always changing, new enhancements need to be
done in the existing one. This is where software engineering plays a
good role.
• Quality Management- Better process of software development
provides better and quality software product.

Compiled bY Ms.Crimita Almeida


Attributes of software
Correctness: The software which we are making should meet all the
specifications stated by the customer.
Efficiency : This characteristic relates to the way software uses the available
resources. The software should make effective use of the storage space and
execute command as per desired timing requirements
Reliability : The software product should not have any defects. Not only this,
it shouldn't fail while execution.

.
Usability/Learnability: The amount of efforts or time required to learn how
to use the software should be less. This makes the software user-friendly
even for IT-illiterate people.
Integrity : Just like medicines have side-effects, in the same way a software
may have a side-effect i.e. it may affect the working of another application.
But a quality software should not have side effects
Interoperability : Interoperability is the ability of software to exchange
information with other applications and make use of information
transparently.
Reusability : If we are able to use the software code with some
modifications for different purpose then we call software to be reusable.
Portability : The ability of software to perform same functions across all
environments and platforms, demonstrate its portability
Extensibility : It should be easy to increase the functions performed by it.
Scalability : It should be very easy to upgrade it for more work(or for more
number of users).
• A software product can be judged by what it offers and how well it
can be used. This software must satisfy on the following grounds:
• Operational
• Transitional
• Maintenance

Compiled bY Ms.Crimita Almeida


Operational
• This tells us how well software works in operations. It can be measured
on:
• Budget
• Usability
• Efficiency
• Correctness
• Functionality
• Dependability
• Security
• Safety

Compiled bY Ms.Crimita Almeida


Transitional
• This aspect is important when the software is moved from one platform to another:
• Portability
• Interoperability
• Reusability
• Adaptability

Maintenance
• This aspect briefs about how well a software has the capabilities to maintain itself in
the
• ever-changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability Compiled bY Ms.Crimita Almeida
Software engineering-A layered technology
Software development is totally a layered technology. That means, to develop
software one will have to go from one layer to another. The layers are related
and each layer demands the fulfillment of the previous layer.
Quality Focus:

Quality of the software is the backbone of the product and must meet
customer specification. Quality can be defined as conformance to
requirements that focuses on the continual and continuous improvement
process which would satisfy the customer.

Process: The foundation for software engineering is the process


layer.which form the base for management control of software project and
defined the timely development of the software.
Methods:

Software engineering methods provide the technical how-to's for building


software. Methods will include requirements analysis, design, program
construction, testing, and support. Where actual implementation of this task is
carried out

Tools:

used to automate to development process resulting into efficient


implementation of methods according to process defined to deliver the quality
focused software.
Compiled bY Ms.Crimita Almeida
Topic:3 Software process
Software process: a structured set of activities required to develop a
software system. Many different software processes but all involve:
Software Specification – defining what the system should do;
Software Design and implementation – defining the organization of the
system and implementing the system;
Software Validation – checking that it does what the customer wants;
Software Evolution – changing the system in response to changing customer
needs.
A software process model

is an abstract representation of a process. It presents a description of a


process from some particular perspective.
When we describe and discuss processes, we usually talk about the activities
in these processes such as specifying a data model, designing a user
interface, etc. and the ordering of these activities.
Process descriptions may also include:
Products, which are the outcomes of a process activity;
Roles, which reflect the responsibilities of the people involved in the process;

Pre- and post-conditions, which are statements that are true before and after
a process activity has been enacted or a product produced.
Process and Project
• A process is a sequence of steps performed for a given purpose
• project its development process plays a key role—it is by following
the process the desired end goal of delivering the software is
achieved.
• A process is often specified at a high level as a sequence of stages.
The sequence of steps for a stage is the process for that stage, and is
often referred to as a sub-process of the process.

Compiled bY Ms.Crimita Almeida


Component Software Processes
• a process is the sequence of steps executed to achieve a goal.
• Since many different goals may have to be satisfied while developing
software, multiple processes are needed.
• Many of these do not concern software engineering, though they do
impact software development.
• These could be considered non-software process. Business
processes, social processes, and training processes are all examples
of processes that come under this.

Compiled bY Ms.Crimita Almeida


• The processes that deal with the technical and management issues of
software development are collectively called the software process.
• As a software project will have to engineer a solution and properly
manage the project, there are clearly two major components in a
software process—a development process and a project management
process.
• The development process specifies all the engineering activities that
need to be performed, whereas the management process specifies
how to plan and control these activities so that cost, schedule, quality,
and other objectives are met

Compiled bY Ms.Crimita Almeida


Topic:4 Software development process model
Waterfall model
Prototyping
Iterative development
Rational unified process
The RAD model
Time-boxing model
Waterfall model
Waterfall model
It was the first model to be introduced.
There are separate identified phases in the waterfall model:
 Requirements analysis and definition
 System and software design
 Implementation and unit testing
 Integration and system testing
 Operation and maintenance
Advantages
 Simple and easy to understand and easy to use
 Clearly defined stages
 Easy to arrange task
 Process and result will be documented
 Phases are processed and completed on time
Disadvantage
 The main drawback of the waterfall model is the difficulty of
accommodating change after the process is underway.
 In principle, a phase has to be complete before moving onto the next
phase
 Poor model for long and ongoing projects.
 Not good for complex projects
Prototyping Model
A prototype is an initial version of a system used to demonstrate concepts.
It can be used in
 Requirement engineering process to help with requirements elicitation
and validation
 In design processes to explore options and develop a UI design
 In testing process to run back to back process
Benefits
Improved system usability
Improved design quality
Improved maintainability
Reduced development effort
RUP(Rational unified process)
RUP(Rational unified process)
The RUP recognizes that conventional process models present a single
view of the process. In contrast, the RUP is normally described from
three perspectives:

1. A dynamic perspective, which shows the phases of the model over


time.
2. A static perspective, which shows the process activities that are
enacted.
3. A practice perspective, which suggests good practices to be used
during the process.
Inception The goal of the inception phase is to establish a business case
for the system. You should identify all external entities (people and
systems) that will interact with the system and define these interactions.

Elaboration The goals of the elaboration phase are to develop an


understanding of the problem domain, establish an architectural
framework for the system, develop the project plan and identify key
project risks. On completion of this phase you should have a requirements
model for the system, which may be a set of UML use-cases, an
architectural description and a development plan for the software.
Construction The construction phase involves system design, programming
and testing. Parts of the system are developed in parallel and integrated
during this phase. On completion of this phase, you should have a working
software system and associated documentation that is ready for delivery to
users.
Transition The final phase is concerned with moving the system from the
development community to the user community and making it work in a
real environment. This is something that is ignored in most software
process models but is, in fact, an expensive and sometimes problematic
activity. On completion of this phase, you should have a documented
software system that is working correctly in its operational environment.
RAD
RAD
RAD model is Rapid Application Development model.
It is a type of incremental model
In RAD model the components or functions are developed in parallel as if
they were mini projects.
Communication is an activity which works to understand the business
problem and the information characteristics that should be accommodate by
the software.
In RAD model Planning is required because numerous software teams works
in parallel on different system functions.
Modeling includes 3 major phases –
Business modeling--collects all info about product from market point or
business point of view
Data modeling—shows flow of data using techniques like DFD
Process modeling –determines activities performed in each process
Construction each team develops code of our product as well as performs
testing.
In the last stage Deployment collect code from different team and clubs
them into single project.
Advantages :
Reduced development time.
Product may be produced before delivery date
Disadvantages:
Large project requires more human resources
Requires highly skilled developers/designers.
If developers and customers do not interact with each other whole project
may elapse
Timeboxing model
Timeboxing model
In this development is done iteratively

In timeboxing model, each iteration is done in a timebox of fixed duration.

The functionality to be developed is adjusted to fit the duration of the timebox.


Moreover, each timebox is divided into a sequence of fixed stages where each stage performs a
clearly defined task (analysis, implementation, and deploy) that can be done independently.

This model also requires that the time duration of each stage is approximately equal so that
pipelining concept is employed to have the reduction in development time and product releases.

There is a dedicated team for each stage so that the work can be done in pipelining.
Thus, stages should be chosen in such a way that each stage perform some logical unit of work
that becomes the input for next stage.
Advantages
1. Speeds up the development process and shortens the delivery
time
2. Well suited to develop projects with a number of features in short
time period.

Disadvantages
3. Project management becomes more complex.
4. Not suited to projects in which entire development work cannot be
divided into multiple iterations of almost, equal duration.
Process activities
The four basic process activities of
1.specification
2.development
3.validation
4.evolution
are organized differently in different development processes.
Software specification
The process of establishing what services are required and the constraints on
the system’s operation and development.
Requirements engineering process
Feasibility study • Is it technically and financially feasible to build the
system?
Requirements elicitation and analysis • What do the system stakeholders
require or expect from the system?
Requirements specification • Defining the requirements in detail
Requirements validation • Checking the validity of the requirements
Requirement engineering process
Software design and implementation
The process of converting the system specification into an executable
system.
Design is about how to build a system.
Software design Design a software structure that realises the
specification;
Implementation Translate this structure into an executable program;
The activities of design and implementation are closely related and may be
inter-leaved.
General model of design process
Design activities
Architectural design, where you identify the overall structure of the system,
the principal components (sometimes called sub-systems or modules), their
relationships and how they are distributed.
Interface design, where you define the interfaces between system
components.
Component design, where you take each system component and design how
it will operate.
Database design, where you design the system data structures and how
these are to be represented in a database.
Software validation
Verification and validation (V & V) is intended to show that a system
conforms to its specification and meets the requirements of the system
customer.

System testing involves executing the system with test cases that are derived
from the specification of the real data to be processed by the system.
Testing is the most commonly used V & V activity.
Stages of testing
Development or component testing Individual components are tested
independently;
System testing Testing of the system as a whole.
Acceptance testing Testing with customer data to check that the system
meets the customer’s needs.
Software evolution
Software is inherently flexible and can change.
As requirements change through changing business circumstances, the
software that supports the business must also evolve and change

You might also like