1.1.
Software Engineering
fundamentals
Software:- Set of instructions or set of programs
are known as software.
In computer science and software
engineering, computer software is all the
information processed by computer
systems, programs and data.
computer software includes computer
programs, libraries and related non
executable data such as online
documentation or digital media.
What is software?
Definitions:
1. Software is a set of instructions (computer
programs) that when executed provide desired
features, function and performance.
2. Software is a data structures that enable the
programs to adequately manipulate information.
3. Software is a descriptive information in both
hard copy and virtual forms that describes the
operation and use of the programs.
Types of Software:-
1. System Software
2. Application Software
3. Utility Software
System Software: It is a software designed to provide a
platform to other software.
Ex. Operating System (Windows, Android, Linux)
Application Software: The software that helps you to do
a specific type of works is called as application software.
Ex. Ms word, Excel etc…..
Cont’d….
Utility Software: To manage, maintain and
control computer resources.
Ex. Antivirus Software
Characteristics of Software
1. Software is developed or engineered; it is not
manufactured in the classical sense.
2. Software doesn’t “wear out”.
3. Custom built software
4. Efficiency
5. Maintability
6. Dependability
Engineering: Application of science, tools and methods to
find out cost effective solution to problems.
OR
Engineering is an Application of knowledge and well
defined principles to develop products.
Software Engineering:- It is the method of applying
scientific and technological knowledge, procedures and
rules to design, develop, test and maintain the software
the product.
OR
Software Engineering:- Applying technological , scientific and
administrative approach to designing, developing, testing and
maintaining the software product in order to meet customer’s
requirements with best quality of referred as software
engineering.
Cont’d….
Purpose of Software Engineering
• To manage large software.
• To manage the cost.
• To manage the dynamic nature of the software.
Importance of Software Engineering
Why Study Software Engineering ?
• To acquire skills to develop large programs.
- Exponential growth in complexity and difficulty level
with size.
- The adhoc approach breaks down when size of software
increases
Cont’d….
• Ability to solve complex programming problems:
- How to break large projects into smaller and
manageable parts?
• To acquire skills to be a better programmer:
- Higher Productivity
- Better Quality Programs
• Learn techniques of:
- specification, design, interface development,
testing, project management, etc.
Nature of Software
• 7 broad categories of software:-
1. System Software
2. Application Software
3. Engineering & Scientific Software
4. Embedded Software
5. Product-line software
6. Web Applications
7. Artificial Intelligence software
Nature of Software
• 7 broad categories of software:-
1. System Software
2. Application Software
3. Engineering & Scientific Software
4. Embedded Software
5. Product-line software
6. Web Applications
7. Artificial Intelligence software
Cont’d….
System Software:- It is a collection of program
written to provide service for other program.
Example:- OS & compiler
Application Software:- It is a program or group
of programs designed for end users.
Example:- Email, spread sheets
Cont’d….
Engineering & Scientific Software:- The software
is used to facilitate the engineering functions &
tasks.
Example:- CAD
Embedded Software:- It is used to control
products & systems for consumer & industrial
markets. It resides in ROM.
Example:- GPS devices, calculators.
Cont’d
Web applications:- It is a client-server computer
program which the client runs in a web browser.
Examples:- online auctions, web mails, websites
Artificial Intelligence software:-ML learning includes
algorithms that are developed to tell a computer
how to respond to something by example.
Examples:- Speech recognition, Problem Solving
Learning & planning
Software Process
Process:- A sequence of steps/actions taken to
develop successful software system.
Process Framework:- Establishes the for SE by
identifying small no. of framework activities and
umbrella activities that are applicable for entire
software process.
Software Process Framework
Software
•
Process Framework
The process of framework consist if several activities which are
applicable to all types of projects,
• The software process framework is considered as a group of
various types of task sets.
• In the task sets there is collection of small work tasks, project
milestones, work productivity as well as software quality
assurance points.
Software Engineering Process
1. Requirement gathering analysis
• In this phase stakeholders communicate with customer and
system users to gather the business requirements like who will
use the system? How use will interact with the system? What
should be the system input and output? Etc
• Depending upon these requirements, Requirements
Specification Document (SRS) is prepared.
2. Design
• This phase makes use of output of requirements gathering
phase i.e. requirement specification document as an
input.
• Based on requirement specifications, software design
is prepared.
• Output of this phase is design specifications which
Cont’d….
• Data flow diagrams, flowcharts etc are included by design
specification document.
• Design specification acts as an input for Implementation phase
3. Implementation
• Implementation phase of development process decomposes the
system work into various smaller parts called modules.
• These modules are assigned to development team members and
actual coding is started.
• This is longest phase of system development.
• Output of this phase is actual code using specific programming
language .
Cont’d….
4. Testing
• Testing phase involves testing of actual code of system against
requirements of user in order to ensure that system will ensure will
satisfy all needs of users.
• Various testing strategies used are unit testing, system testing ,
integration testing, etc
• Output of testing phase is corrected and modified software code.
5. Deployment
• In this phase the system is deployed at users’ site for their use.
• In this phase customer uses the software and give feedback to
development team for any changes modifications in system if any.
6. Maintenance
• Once the software is deployed actual problems from user’s
perspective will come up. Its is responsibility of development team to
solve user’s problem time to time. This process is called as
maintenance of system.
Umbrella Activities
Framework activities: Small projects
Umbrella activities: Large projects
1. Software project tracking and control:-
Compare the progress of the project with the plan and take steps to
maintain a planned schedule.
2. Risk management:-
Analyze any potential risk that may have an impact on the software
product’s quality and outcome.
3. Software quality Assurance:-
These are activities required to maintain software quality.
Perform actions to ensure the product’s quality.
Cont’d….
4. Formal technical reviews:-
Assessment of errors and correction done at each stage of
activity
5. Software configuration management:-
Managing of configuration process when any change in the
software occurs.
6. Reusability Management:-
Reusable work items should be backed up. And reusable
software components should be achieved.
7. Work product preparation and production:-
The activities to create models, documents, logs, forms
and lists are carried out.
SE Layered Architecture
Cont’d….
•Software engineering is a fully layered
technology.
• To develop a software, we need to go from
one layer to another.
• All these layers are related to each other
and each layer demands the fulfillment of
the previous layer.
Cont’d….
1. Quality focus
The characteristics of good quality
software are:
Correctness of the functions required to be
performed by the software.
Maintainability of the software
Integrity i.e. providing security so that the
unauthorized user cannot access information
or data.
Usability i.e. the efforts required to use or
operate the software.
Cont’d….
2. Process : It is the base layer or
foundation layer for the software
engineering.
The software process is the key to keep all
levels together.
It defines a framework that includes
different activities and tasks.
In short, it covers all activities, actions and
tasks required to be carried out for software
development.
Cont’d….
3. Methods :The method provides the
answers of all 'how-to' that are asked during
the process.
It provides the technical way to implement
the software.
It includes collection of tasks starting from
communication, requirement analysis,
analysis and design modelling, program
construction, testing and support.
Cont’d….
4. Tools :The software engineering tool is
an automated support for the software
development.
The tools are integrated i.e the information
created by one tool can be used by the other
tool.
For example: The Microsoft publisher can
be used as a web designing tool.
Principles that Guide
Process
Be agile
1.
Focus on quality at every step
2.
3. Be ready to adapt
4. Build an effective team
5. Establish mechanisms for communication and coordination
6. Manage change
7. Assess risk
8. Create work products that provide value for others
Principles that Guide
Divide and conquer
1.
2.
Practice
Understand the use of abstraction
3. Strive for consistency
4. Focus on the transfer of information
5. Build software that exhibits effective modularity
6. Look for patterns
7. When possible, represent the problem and its solution
from a number of different perspectives.
8. Remember that someone will maintain the software.
Prescriptive Process Model
A process model describes how each step in SDLC
works & what are the process required for each
step in SDLC.
5 Process Model
1. Waterfall Model
2. Incremental Model- a) Incremental b) RAD
3. Iterative Model- a) Prototype b) Spiral
4. Evolutionary Model
5. Unified Model
Software Development Life Cycle
(SDLC)
Refers to overall process involved in the s/w
development.
Cont’d….
6 Phases in SDLC :
1. Requirement gathering & analysis
2. Design
3. Implementation / development
4. Testing
5. Deployment
6. Maintenance
Cont’d….
Requirement gathering & analysis:- User
requirements are collected from the user and
are provided to development team &
documents the requirements in the SRS
document.
Design:- Based on the requirement we make
a design showing how the flow of process
should happen.
Types - High level design e.g. Complete
house
Cont’d….
Implementation/ Development:- We start writing
the code for the s/w product. Output is code
document.
Testing:- Once the s/w is ready, it is sent to the
testing team. Check errors, validation of Req. etc.
Deployment:- Delivering the s/w to customer
Maintenance:- Solving the problems of the
customers.
Waterfall Model
Oldest Model
Sequential Development
Requirements
No reverse direction
Only when we are clear about requirements
Low budget Projects
No customer involvement
Will not allow any changes
Cont’d….
Cont’d….
Cont’d….
Incremental Model
Requirements are divided into multiple modules
Each module – Analysis, design, code & Testing
Used in day to day applications
e.g. Banking
Less manpower is required
Two Models :-
1. Incremental Model and RAD Model
Incremental Model
Cont’d….
Cont’d….
RAD Model
Iterative Process Model
Two Types :-
1. Prototype Model:- Sample- dummy model
- used when customer is not clear about req.
- also called throwaway model
2. Spiral Model:- 4 stages
- Repetitive activities
- mainly used for risk handling
Prototype Model
Spiral Model
Evolutionary Model
Also called Successive Version Model
Combination of iterative and incremental model
Incremental model first implement a few basic
features(i.e. basic s/w) and deliver to the customer.
Then build the next part and deliver it again and
repeat process.
Iterative model it takes feedback from every phases.
Cont’d….
Here, we break our work into smaller parts
Prioritize those parts and deliver to customer one
by one
Also known as “ Design a little, build a little, test
a little and deploy a little model.
Evolutionary Model
Advantages and Disadvantages
Advantages:
Customer requirements are clearly specified
Risk analysis is better
It supports changing environment
Initially operating time is less
Better suited for large mission-critical projects
Disadvantages:
Not suitable for smaller projects
Cost is large
Highly skilled resources are required.
Unified Process Model
Used only in case of object oriented systems(real time
systems)
Agile Software Development
Agile:- Move quickly