Department: Computer Technology Class: S. Y.
Name of Subject: Software Engineering
Subject Code: 22413
Teacher Name: Gawali S. S.
Definition of Software
• Software is a set of instructions that tells the computer about the
tasks to be performed and how these tasks are to be performed.
• Program is a set of instructions, written in a language understood
by the computer, to perform a specific task.
• A set of programs and documents are collectively called software.
What is Software?
• The product that software professionals build and then support
over the long term.
• Software encompasses:
(1)instructions (computer programs) that when executed provide
desired features, function, and performance;
(2)data structures that enable the programs to adequately store
and manipulate information and
(3)documentation that describes the operation and use of the
programs.
3
Software products
• Generic products
• Stand-alone systems that are marketed and sold to any customer
who wishes to buy them.
• Examples – PC software such as editing, graphics programs, project
management tools; CAD software; software for specific markets
such as appointments systems for dentists.
• Customized products
• Software that is commissioned by a specific customer to meet their
own needs.
• Examples – embedded control systems, air traffic control software,
traffic monitoring systems.
4
Why Software is Important?
• The economies of ALL developed nations are dependent on
software.
• More and more systems are software controlled ( transportation,
medical, telecommunications, military, industrial,
entertainment,)
• Software engineering is concerned with theories, methods and
tools for professional software development.
• Expenditure on software represents a
significant fraction of GNP in all developed countries.
Software Engineering
• “Software engineering is a discipline in which theories, methods
and tools are applied to develop professional software product”.
• Software engineering is a branch of computer science which
includes the development and building of computer systems
software and applications software.
Essential attributes of good software
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.
Dependability and Software dependability includes a range of characteristics
security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is
designed. This means that it must be understandable, usable and
compatible with other systems that they use.
Chapter 1 Introduction 7
Software Engineering
A Layered Technology
tools
methods
process model
Quality Management
◼ Any engineering approach must rest on organizational commitment to quality which fosters a
continuous process improvement culture.
◼ Process layer as the foundation defines a framework with activities for effective delivery of
software engineering technology. Establish the context where products (model, data, report, and
forms) are produced, milestone are established, quality is ensured and change is managed.
◼ 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.
8
Characteristics of Software Engineering
• Software is engineered, not manufactured
• Software does not ware out
• Most software is custom built rather than being assembled from
components
Software is engineered, not manufactured
• Software development and hardware development are two different
activities.
• A good design is a backbone for both the activities.
• Quality problems that occur in hardware manufacturing phase cannot
be removed easily. On the other hand, during software development
process such problems can be rectified.
• In both the activities, developers are responsible for producing
qualitative product.
Software does not ware out
• In hardware development process the failure rate is high because of
manufacturing defects. But after correcting such defects the failure rate gets
reduced.
• Software does not get affected from such environment maladies. Hence
ideally it should have an “idealized curve”.
• But due to some undiscovered errors the failure rate is high and drop down
as soon as errors get corrected. Hence in failure rating of software the “actual
curve” is:
Software does not ware out
• During the life of software if any change is made, some defects may get
introduced. This causes failure rate to be high.
• Before the curve can return to original steady state another change is
requested and again the failure rate become high.
• Thus the failure curve looks like a spike. Thus frequent changes in
software cause it to deteriorate.
• Another issue with software is that there are no spare parts for
software. If hardware component wears out it can be replaced by
another component but it is not possible in case of software.
• Therefore software maintenance is more difficult than the hardware
maintenance.
Most software is custom built rather than
being assembled from components
• Developing hardware product means circuit design - assembly of many
components like IC’s, capacitors and register, but this is not done while
developing software product.
• Most of Software is custom build.
• Now software development approach is reusability of software
components. (reuse of algorithm and data structure)
• Today software industry is trying to make library of reusable
components. Now a days software GUI is built using reusable
components such as message window, pull down menu.
• This approach is use in-built components in the software. This is called
as component engineering.
Types of Software
1. System Software
2. Application Software
3. Engineering / Scientific Software
4. Embedded Software
5. Web Application
6. Artificial Intelligence Software
• System Software:
-System software helps the user, the computer or mobile device, and an
application all work together seamlessly.
-It is collection of programs written to service other program.
-Example: Operating System, Compiler, Editor, Assembler
-Purpose of this is to establish a communication with hardware.
• Application Software:
-Application Software is a set of one or more programs, which solves a
specific Task.
-This software may be supported by database system.
-Example: Payroll systems, Inventory Control, Manage student database,
Word Processor, Spreadsheet and Database Management System etc.,
• Engineering / Scientific Software:
-Scientific and engineering software satisfies the needs of a
scientific or engineering user to perform enterprise specific tasks.
-Such software is written for specific applications using principles,
techniques and formulae specific to that field.
-Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD,
etc.
• Embedded Software :
-This type of software is embedded into the hardware normally in
the Read Only Memory (ROM) as a part of a large system and is used
to support certain functionality under the control conditions.
-Examples are software used in instrumentation and control
applications like washing machines, satellites, microwaves etc.
• Networking and Web Applications Software :
-Networking Software provides the required support necessary for
computers to interact with each other and with data storage facilities.
-The networking software is also used when software is running on a
network of computers (such as World Wide Web).
-It includes all network management software, server software, security
and encryption software and software to develop web-based applications
like HTML, PHP, XML, etc.
• Artificial Intelligence Software :
-Software like expert systems, decision support systems, pattern
recognition software, artificial neural networks, etc. come under this
category.
-They involve complex problems which are not affected by complex
computations using non-numerical algorithms.
Software Development Framework
• The Software Development Life Cycle (SDLC) is the logical process of developing any system.
• Using SDLC one can develop a system which satisfies customer needs, can be developed within
the predefined schedule and cost.
• Normally the system analyst makes use of software development life cycle for developing the
information system.
• The SDLC is a linear or sequential model in which output of previous phase is given as input to
next subsequent stage.
• Various phases of SDLC are:
1. Feasibility study
2. Requirement gathering and analysis
3. Design
4. Coding or implementation
5. Testing and maintenance
• Requirement gathering and analysis:
-The basic requirements of the software
project are identified and analyzed in this
phase.
• Design:
-The model of the software system is
prepared in this phase.
• Coding or implementation:
-Using the software design the coding is
• Feasibility Study: done in this phase.
-It is initial phase of software -Thus implementation model is prepared.
development framework.
-In this phase, it is decided • Testing and maintenance:
whether to built the system or not.
-The code is tested and modified if required
Software Process Framework
• The process framework required for representing the common process
activities.
• The software process is characterized by process framework activities, task
sets and umbrella activities.
• Process Framework activities:
- Communication: By communicating customer requirement gathering is
done.
- Planning: Established engineering work plan, describes technical risks,
lists resource requirements, work products produced and defines work
schedule.
- Modeling: The software model is prepared by:
+ Analysis of requirements
+ Design
- Construction: The software design is mapped into a code by:
+ Code generation
+ Testing
- Deployment: The software delivered for customer evaluation and
feedback is obtained.
• Task sets:
-The task set defines the actual work done in order to achieve the
software objective.
-The task set is used to adopt the framework activities and project
team requirements using:
*Collection of software engineering work tasks.
*Project milestones
*Software quality assurance points.
• Umbrella activities:
- Umbrella activities are applied throughout a software project and help a
software team manage and control progress, quality, change, and risk.
- Typical umbrella activities include:
1. Software project tracking and control—allows the software team to assess
progress against the project plan and take any necessary action to maintain
the schedule.
2. Risk management—assesses risks that may affect the outcome of the project
or the quality of the product.
3. Software quality assurance—defines and conducts the activities required to
ensure software quality.
4. Technical reviews—assess software engineering work products in an effort
to uncover and remove errors before they are propagated to the next
activity.
5. Measurement—defines and collects process, project, and product
measures that assist the team in delivering software that meets
stakeholders’ needs; can be used in conjunction with all other
framework and umbrella activities.
6. Software configuration management—manages the effects of
change throughout the software process.
7. Reusability management—defines criteria for work product reuse
(including software components) and establishes mechanisms to
achieve reusable components.
8. Work product preparation and production—encompass the
activities required to create work products such as models,
documents, logs, forms, and lists.
Process Model
• Definition: The process model can be defined as the abstract representation
of process.
• The appropriate process model can be chosen based on abstract
representation of process.
• It is also known as Software Development Life Cycle (SDLC) or Software
paradigm.
• Various types of process models are:
Waterfall Model
• It is also called as ‘Linear-sequential model’ or ‘classic life cycle
model’.
• Phases of waterfall model:
1. Requirement gathering and analysis
2. Design
3. Coding
4. Testing
5. Maintenance
• Requirement gathering and analysis • Coding phase:
phase: - Is a step in which design is translated
- The basic requirements of the into machine-readable form.
system must be understood by - Programs are created in this phase
software engineer.
• Testing:
• Design phase:
- It begins after when coding is done.
- It is an intermediate step after
requirements analysis and coding. - Purpose is to uncover errors, fix the
bugs and meet the customer
- Design focuses on program attribute requirements.
such as:
1. Data Structure
• Maintenance:
2. Software architecture
- It is the longest life cycle phase.
3. Interface representation
- When the system is installed and put
4. Algorithmic details in practical use then error may get
introduced, correcting such errors and
putting it in use is the major purpose.
• Advantage of Waterfall Model: • Disadvantage of Waterfall Model
✓ It is simple to implement. ✓ It is difficult to follow the
✓ It is useful for implementation of sequential flow in software
small System. development process.
✓The requirement analysis is done
initially and sometimes it is not
possible to state all the
requirements explicitly in the
beginning.
✓The customer can see the
working model of the project only
at the end. After reviewing of the
working model; if the customer
gets dissatisfied then it causes
serious problem
RAD Model (Incremental Model)
• RAD model is Rapid Application
Development model. It is a type
of incremental model.
• When the requirements are fully
understood and the component
based construction approach is
adopted then the RAD model is
used.
• Using the RAD model the fully
functional System can be
developed within 60 to 90 days.
• Multiple teams work on developing • Design phase:
the software system using RAD - During this various models are
model parallelly. created.
- Those models are business model,
• Requirement gathering phase: data model and process model.
-In this the developers communicate
with the users of the system and • Build:
understand the business process and
requirements of the software system. - It is an activity in which working
code is generated.
• Analysis and planning phase: - The code is well tested by its team.
- During this the analysis on the - The functionalities developed by all
gathered requirements is made and teams are integrated to form a
a planning for various software whole.
development activities is done.
• Deployment:
- Deployment of all the software
components is carried out.
• Advantages of RAD Model • Disadvantages of RAD Model
✓ Faster development cycle ✓ It has reduced scalability.
✓ Visualization of related ✓ Not appropriate when
routines periodically. technical risks are high.
✓ Encourages user involvement. ✓ This model requires heavily
✓ Low maintenance cost committed developer and
customers. If commitment is
lacking then RAD projects will
fail.