software engineering
TRANSCRIPT
SOFTWARE ENGINEERING
Unit I
WHAT IS SOFTWARE ENGINEERING?
Software has become critical to advancement in almost all areas of human endeavour.
The art of programming only is no longer sufficient to construct large programs.
There’re serious problems in the cost, timeliness, maintenance, and quality of many software products.
Software engineering has the objective of solving these problems by producing good quality, maintainable software, on time, Within budget
DEFINITION
In 1968, Fritz Bauer defined s/w engineering as:
“The establishment & use of sound engineering principles in order to obtain economically developed software that is reliable & works efficiently on real machines.”
Stephen Schach define the same as:
“A discipline whose aim is the production of quality software, that is delivered on time, within budget, and also satisfies its requirements.”
DEFINITION The IEEE definition:
Software Engineering is:
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).
PROGRAM VS. SOFTWARE
Programs
Operating ProceduresDocumentatio
n
Software= Programs + Documentation + Operating Procedures
PROGRAM VS. SOFTWARE
Software is more than just programs. It consists of
Programs, Documentation of any fact of the program, and Operating procedures used to set up & operate
the Software system. Program is a combination of source code &
object code. Documentation consists of different types
of manuals as shown below:
Documentation Manuals
Analysis/ Specification
Design
Implementation
Testing
Context Diagram
Data Flow Diagram
Formal Specification
Flow Charts
ER Diagram
Source Code Listings
Cross- Reference Listings
Test Data
Test Results
List of Documentation Manuals
PROGRAM VS. SOFTWARE Operating procedures consist of instructions to set
up & use the software system & instructions on how to react to system failure.
List of operating procedures is:
Documentation Manuals
User ManualsBeginner’s Guide
Tutorial
Reference Guide
System Overview
Operational Manuals
Installation Guide
System Administration
Guide
LAYERED TECHNOLOGY
A “Quality” Focus
Process Model
Methods
Tools
LAYERED TECHNOLOGY Software engineering is a layered technology. An engineering approach must have a focus on
quality which provides a continuous process improvement culture.
Process layer is the foundation that defines a framework with activities for effective delivery of software engineering technology.
Method provides technical how-to’s for building software. It encompasses many tasks including
communication, requirement analysis, design modeling, program construction, testing and support.
Tools provide automated or semi-automated support for the process and methods.
SOFTWARE PROCESS
A process is a collection of activities, actions and tasks that are performed when someproduct is to be created.
It is not a rigid prescription for how to build computer software.
Rather, it is an adaptable approach that enables the people doing the work to pick and choose the appropriate set of work actions and tasks.
Purpose of process is to deliver software in a timely manner and with sufficient quality to satisfy those who have sponsored its creation and those who will use it.
FIVE ACTIVITIES OF AGENERIC PROCESS FRAMEWORK
A General Process framework consists of five major activities.
These activities can be used for all software development regardless of the application domain, size of the project, complexity of the efforts etc.
For many software projects, these framework activities are applied iteratively as a project progresses.
Each iteration produces a software increment that provides a subset of overall software features and functionality.
FIVE ACTIVITIES OF AGENERIC PROCESS FRAMEWORK
Communication: communicate with customer to understand objectives and gather requirements
Planning: creates a “map” defines the work by describing the tasks, risks and resources, work products and work schedule.
Modeling: Create a “sketch”, what it looks like architecturally, how the constituent parts fit together and other characteristics.
Construction: code generation and the testing.
Deployment: Delivered to the customer who evaluates the products and provides feedback based on the evaluation.