Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
12 views

Unit 1 - Introduction to Software Engineering

The document provides an overview of software engineering, defining software as a set of instructions and documents that manipulate inputs to produce desired outputs. It discusses the classification of software into generic and customized types, attributes of good software, and various software engineering processes and models including Waterfall, Incremental, RAD, Prototyping, and Spiral models. The document emphasizes the importance of systematic approaches in software development to enhance productivity, quality, and customer satisfaction.

Uploaded by

rudragurung911
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Unit 1 - Introduction to Software Engineering

The document provides an overview of software engineering, defining software as a set of instructions and documents that manipulate inputs to produce desired outputs. It discusses the classification of software into generic and customized types, attributes of good software, and various software engineering processes and models including Waterfall, Incremental, RAD, Prototyping, and Spiral models. The document emphasizes the importance of systematic approaches in software development to enhance productivity, quality, and customer satisfaction.

Uploaded by

rudragurung911
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 48

Introduction to

Software
Engineering
What is Software?

 Software is a set of instructions to acquire inputs and to


manipulate them to produce the desired output in terms of
functions and performance as determined by the user of
the software
 Also include a set of documents, such as the software
manual , meant for users to understand the software
system
Description of the Software
 A software is described by its capabilities. The capabilities relate
to the functions it executes, the features it provides and the facilities it
offers.
EXAMPLE
Software written for Sales-order processing would have
different functions to process different types of sales order from
different market segments .
 The features for example , would be to handle multi-currency
computing, updating product , sales and Tax status.
 The facilities could be printing of sales orders, email to customers
and reports to the store department to dispatch the goods.
Classes of Software

Software is classified into two classes:


 Generic Software:

is designed for broad customer market whose


requirements are very common, fairly stable and well understood by
the software engineer.
 Customized Software:
is developed for a customer where domain ,
environment and requirements are being unique to that customer and
cannot be satisfied by generic products.
What is Good Software?

 Software has number of attributes which decide whether it is a


good or bad .
 The definition of a good software changes with the person who
evaluates it.
 The software is required by the customer , used by the end users of an
organization and developed by software engineer .
 Each one will evaluate the different attributes differently in order to
decide whether the software is good.
What are the attributes of good
software?

The software should deliver the required functionality and performance to


the user and should be maintainable, dependable and usable.
• Maintainability
– Software must evolve to meet changing needs
 Dependability
– Software must be trustworthy
 Efficiency
– Software should not make wasteful use of system resources
 Usability
– Software must be usable by the users for which it was designed
Software - Characteristics

 Software has a dual role. It is a product, but also a vehicle for delivering a
product.

 Software is a logical rather than a physical system element.

 Software has characteristics that differ considerably from those of hardware.

 Software is developed or engineered, it is not manufactured in the


classical sense

 Software doesn’t “wear out”

 Most software is custom-built, rather than being assembled from


existing components.
Changing nature of
software(Types)
 System Software- A collection of programs written to service other
programs at system level.
For example, compiler, operating systems.

 Real-time Software- Programs that monitor/analyze/control real


world events as they occur.

 Business Software- Programs that access, analyze and process


business information.

 Engineering and Scientific Software - Software using “number


crunching” algorithms for different science and applications. System
simulation, computer-aided design.
Changing nature of
software(Types)
 Embedded Software-:
Embedded software resides in read-only memory and is used to
control products and systems for the consumer and industrial markets.
It has very limited and esoteric functions and control capability.

 Artificial Intelligence (AI) Software:


Programs make use of AI techniques and methods to solve complex
problems. Active areas are expert systems, pattern recognition, games

 Internet Software :
Programs that support internet accesses and applications. For example,
search engine, browser, e-commerce software, authoring tools.
Software Engineering

 “A systematic approach to the analysis, design, implementation and


maintenance of software.”
(The Free On-Line Dictionary of Computing)
 “ The systematic application of tools and techniques in the
development of computer-based applications.”
(Sue Conger in The New Software Engineering)
 “ Software Engineering is about designing and developing high-
quality software.”
(Shari Lawrence Pfleeger in Software Engineering -- The Production
of Quality Software)
What is Software Engineering?
 Engineering: The Application of Science to the Solution of Practical Problems
 Software Engineering: The Application of CS to Building Practical Software
Systems
 Programming
– Individual Writes Complete Program
– One Person, One Computer
– Well-Defined Problem
– Programming-in-the-Small
 Software Engineering
– Individuals Write Program Components
– Team Assembles Complete Program
– Programming-in-the-Large
What is the difference between software engineering and
computer science?

Computer Science Software Engineering


is concerned with
 theory  the practicalities of developing
 fundamentals  delivering useful software

Computer science theories are currently insufficient to act as a complete


underpinning for software engineering, BUT it is a foundation for practica
aspects of software engineering
What is Software Engineering?

Although hundreds of authors have developed personal definitions of software


engineering, a definition proposed by Fritz Bauer[NAU69] provides a basis:

 “[Software engineering is] the establishment and use of sound


engineering principles in order to obtain economically software that is
reliable and works efficiently on real machines.”

The IEEE [IEE93] has developed a more comprehensive definition when it


states:

 “Software Engineering: (1) The application of a systematic, disciplined,


quantifiable approach to the development, operation, and maintenance
of software; that is, the application of engineering to software. (2) The
study of approaches as in (1).”
Software engineering is a layered
technology - Pressman’s view:

Software Engineering Layers


What is Software Engineering?

 Software methods:
 Software engineering methods provide the technical “how to’s” for
building software.

 Methods --> how to encompass a broad array of tasks:


- requirements analysis, design, coding, testing, and maintenance

 Software engineering methods rely on a set of basic principles.


What is Software Engineering?

 Software process:
Software engineering process is the glue that holds:
- technology together
- enables rational and timely development of computer
software.
Software engineering process is a framework of a set of key process
areas.
It forms a basis for:
- project management, budget and schedule control
- applications of technical methods
- product quality control
What is Software Engineering?

 Software tools:
- programs provide automated or semi-automated support for the
process and methods.
- programs support engineers to perform their tasks in a systematic
and/or automatic manner.
Why Software Engineering?

 Objectives:

- Identify new problems and solutions in software production.


- Study new systematic methods, principles, approaches for system
analysis,design, implementation, testing and maintenance.
- Provide new ways to control, manage, and monitor software process.
- Build new software tools and environment to support software
engineering.
Why Software Engineering?

Major Goals:
- To increase software productivity and quality.
- To effectively control software schedule and planning.
- To reduce the cost of software development.
- To meet the customers’ needs and requirements.
- To enhance the conduction of software engineering process.
- To improve the current software engineering practice.
- To support the engineers’ activities in a systematic and efficient
manner.
A Process Framework
Process Framework Activities

 Communication
 Planning
 Modeling
 Construction
 Deployment
Umbrella Activities

 Software project tracking & control


 Risk Management
 Formal Technical reviews
 Software configuration management
 Reusability management
PROCESS
MODELS
SDLC Process Model

SDLC – Software Development Life Cycle

Process model is a framework that describes


the activities,actions,tasks,milestones,and
work products performed at each stage of a
software development project that leads to a
high quality software
Life cycle models

 Waterfall
model
 Incremental process models
– Incremental model
– RAD model
 Evolutionary Process Models
– Prototyping model
– Spiral model
 Object oriented process model
WATERFALL MODEL
a.k.as Linear life cycle model or
COMMUNICATION
Project initiation
classic life cycle model
Req. gathering

PLANNING
Estimating
Scheduling
tracking

MODELLING
Analysis
design

CONSTRUCTION
Code
Test

DEPLOYMENT
Delivery
Support
feedback
WATERFALL MODEL

 Project initiation & requirement gathering


– What is the Problem to Solve?
– What Does Customer Need/Want?
– Interactions Between SE and Customer
– Identify and Document System Requirements
– Generate User Manuals and Test Plans
• Planning
– Prioritize the requirements
– Plan the process
WATERFALL MODEL
 Analysis and design
– How is the Problem to be Solved?
– High-Level Design
– Determine Components/Modules
– Transition to Detailed Design
– Detail Functionality of Components/Modules
 Coding and Testing
– Writing Code to Meet Component/Module Design Specifications
– Individual Test Modules in Isolation
– Integration of Components/Modules into Subsystems
– Integration of Subsystems into Final Program
WATERFALL MODEL

 Deployment
– System Delivered to Customer/Market
– Bug Fixes and Version Releases Over Time

Strengths
 Easy to understand, easy to use
 Provides structure to inexperienced staff
 Milestones are well understood
 Sets requirements stability
 Good for management control (plan, staff, track)
 Works well when quality is more important than cost or schedule
Waterfall Drawbacks

 All projects cannot follow linear process


 All requirements must be known upfront
 Few business systems have stable
requirements.
 The customer must have patience. A working
version of the program will not be available until
late in the project time-span
 Leads to ‘blocking states’
 Inappropriate to changes
When to use the Waterfall
Model
 Requirements are very well known
 Product definition is stable
 Technology is understood
 New version of an existing product
 Porting an existing product to a new platform.
Incremental SDLC Model
 Combines the elements of waterfall model in an iterative
fashion
 Construct a partial implementation of a total system
 Then slowly add increased functionality
 User requirements are prioritised and the highest priority
requirements are included in early increments.
 Each subsequent release of the system adds function to the
previous release, until all designed functionality has been
implemented.
Incremental Model Weaknesses

 Requires good planning and design


 Requires early definition of a complete and
fully functional system to allow for the
definition of increments
 Well-defined module interfaces are required
(some will be developed long before others)
 Total cost of the complete system is not
lower
When to use the Incremental
Model

 When staffing is not available by deadline


 Most of the requirements are known up-front but are
expected to evolve over time
 When the software can be broken into increments and
each increment represent a solution
 A need to get basic functionality to the market early
 On projects which have lengthy development schedules
 On a project with new technology
RAD MODEL
Rapid Application Development
Model

 An incremental process model that emphasizes short


development cycle
 “High-speed” adaptation of the waterfall model.
 RAD approach also maps into the generic framework
activities
Drawbacks of RAD

 For large projects, RAD requires sufficient human


resources to create the right number of RAD teams.
 If developers & customers are not committed to rapid-fire
activities, RAD projects will fail.
 If the system cannot be properly modularized, building the
components will be problematic
 If high-performance is an issue, RAD may not work.
 RAD may be inappropriate when technical risks are high
When to use RAD

 Reasonably well-known requirements


 User involved throughout the life cycle
 Project can be time-boxed
 Functionality delivered in increments
 High performance not required
 Low technical risks
 System can be modularized
EVOLUTIONARY PROCESS
MODEL

 These models produce an increasingly more


complete version of the software with each
iteration
 When to use
– Tight market deadlines
– Well defined system requirements
– No details about system definition
PROTOTYPING
L
 A prototype is a partially developed product that enables
customers and developers to examine some aspects of the
proposed system and decide if it is suitable or appropriate for
the finished product
– Start with what is known about requirements.
– Do a quick design.
– Build the prototype by focusing on what will be seen by
the user.
– Use the prototype to show the user and help refining
requirements
PROTOTYPING MODEL
Drawbacks of Prototyping Model

 Customer sees what appears to be a working


version of the software and presumes that it is
the final thing.
 The developer often makes implementation
compromises in order to get a prototype working
quickly
Only one advantage is actual
software is engineered with an eye
toward quality
SPIRAL MODEL

 It couples the iterative nature of prototyping with the


controlled and systematic aspects of the waterfall model
Process
 Adapted to complete life cycle
 Process is represented as a spiral rather than as a sequence
of activities with backtracking.
 Each loop in the spiral represents a phase in the process.
 No fixed phases such as specification or design - loops in
the spiral are chosen depending on what is required.
SPIRAL MODEL
Spiral Model Strengths

• Focuses attention on reuse options.


• Focuses attention on early error elimination.
• Puts quality objectives up front.
• Integrates development and maintenance.
• Provides a framework for hardware/software
Development.
Drawbacks of the Spiral Model

 It may be difficult to convince customers that


the evolutionary approach is controllable.
 It demands risk assessment expertise and
relies on this expertise for success.
 If a major risk is uncovered and managed,
problems will occur.
When to use Spiral Model
 When creation of a prototype is appropriate
 When costs and risk evaluation is important
 For medium to high-risk projects
 Long-term project commitment unwise because
of potential changes to economic priorities
 Users are unsure of their needs
 Requirements are complex
 New product line
 Significant changes are expected

You might also like