Introduction
1.Introduction to Software
engineering
1.What is Software?
1.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.
The software should deliver the required functionality and performance to the
user and should be maintainable, dependable and usable.
Maintainability
Dependability
Efficiency
Usability
1.Software - Characteristics
Software has a dual role. It is a product, but also a vehicle for delivering a
product.
1.Types of Software
1.Types of Software
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
1.Types of Software
Internet Software :
Programs that support internet accesses and
applications. For example, search engine,
browser, e-commerce software, authoring
tools.
1.Software Engineering
Pressmans view:
Software engineering is a layered technology (Figure 2.1)
Tools
Methods
Process
A quality Focus
Software methods:
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
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.
Objectives:
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.
Major Goals:
2.Components Of
Software
Engineering
2.Components of Software
Engineering
SE approach has two components , namely systems
engineering approach and development engineering approach.
The software and its quality depends upon the system in
which it is installed.
The system here has a broad meanings. The understanding of
the system can be achieved by the System study and Analysis.
the System study and Analysis is carried out through
SEM( Systems Engineering and Methodology). The SEM
steps are as under:
2.Components of Software
Engineering
2.
Implementation
2.Components of Software
Engineering
Software development engineering is carried out in two ways
2.Components of Software
Engineering
3.Software Crisis
3.Software Crisis
Large software systems often:
3.Software Crisis
3.Software Crisis
distributed systems
embedded systems
real-time systems
3. Software Crisis
Complexity
Conformity
Changeability
Invisibility
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
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.
Major Goals:
5.Similarities And
Differences From
Conventional Engineering
Processes
Programming
Computer Science
Software Engineering
is concerned with
theory
fundamentals
hardware,
software and
process engineering
6.Software Quality
Attributes
6.Software quality
operational characteristics
(PRODUCT OPERATION)
Its
(PRODUCT REVISION)
Its
(PRODUCT TRANSITION)
6.Product Operation
Correctness:
the extent to which a program satisfies its specifications and fulfills the
customers mission objectives
Reliability:
Usability:
Efficiency:
the
6.Product Revision
Maintainability:
the
Flexibility:
the
Testability:
the
6.Product Transition
Portability:
Reusability:
the effort required to transfer the program from one hardware and/or
software system to another
the extent to which a program (or parts or a program) can be reused in
other applications
Interoperability:
7. SOFTWARE DEVELOPMENT
LIFE CYCLE MODELS
8.WATERFALL MODEL
Feasibility study
Requirement analysis
and specification
Design
Coding and unit testing
Integration and system testing
Maintenance
Figure 2.1: Classical waterfall model.
8. Feasibility Study
8. Requirements specification
The important components of this document are the functional requirements, the
nonfunctional requirements, and the goal of implementation.
Each function can be characterized by the input data, the processing required on the
input data, and the output data to be produced.
The SRS document is written using the end user terminology. This makes the SRS
document understandable by the customer. After all, it is important that the SRS
document be reviewed and approved by the customer.
The SRS document normally serves as a contract between the development team and
the customer.
Any future dispute between the customer and the developers can be settled by
examining the SRS document.
The SRS documents provides not only the basis for carrying out all the development
activities, but also the basis for several other documents such as the design document,
the users manuals, the system test plan, etc.
8. Design
During the integration and system testing phase, the modules are integrated in a
planned manner. The different modules making up a software product are almost never
integrated in one shot. Integration is normally carried out incrementally over a number of
steps. During each integration step, the partially integrated system is tested and a set of
previously planned modules are added to it. Finally, when all the modules have been
successfully integrated and tested, system testing is carried out. System testing usually
consists of three different kinds of testing activities:
Acceptance testing: It is the system testing performed by the customer himself after the
product delivery to determine whether to accept or reject the delivered product.
Maintenance
Maintenance of a typical software product requires much more effort than the effort
necessary to develop the product itself. Maintenance involves performing any one or more
of the following three kinds of activities:
Correcting errors that were not discovered during the product development phase. This is
called corrective maintenance.
Improving the implementation of the system, and enhancing the functionalities of the
system according to the customers requirements. This is called perfective maintenance.
Porting the software to work in a new environment. For example, porting may be required
to get the software to work on a new computer platform or with a new operating system.
This is called adaptive maintenance.
Some of the glaring shortcomings of the waterfall model are the following:
Feasibility study
Requirement analysis
and specification
Design
Saturday,
August
29,
12:04:10
PM
System
Conceptualization.
System Conceptualization refers to the
consideration of all aspects of the
targeted business function or process,
with the goals of determining how
each of those aspects relates with
one another, and which aspects will
be incorporated into the system.
Saturday,
August
29,
12:04:10
PM
Systems
System
Coding.
Also known as
programming or the coding
phase, this step involves the
creation of the system software.
Requirements and systems
specifications from the System
Design step are translated into
machine-readable computer
code.
Saturday,
August
29,
12:04:10
PM
Testing.
9. PROTOTYPING MODEL
9. PROTOTYPING MODEL
Quick
design
Build prototype
Design
Refine
requirements
incorporating
customer
suggestions
Acceptance by customer
Customer
evaluation of
prototype
Implement
Test
Maintain
C
B
A
B
A
11.Evolutionary development
Exploratory development
Throw-away prototyping
S pecifica
tion
Outline
des cription
Development
Validation
Initial
vers ion
Interm ediate
vers ions
Final
vers ion
Problems
Applicability
The initialization step creates a base version of the system. The goal
for this initial implementation is to create a product to which the user
can react. It should offer a sampling of the key aspects of the problem
and provide a solution that is simple enough to understand and
implement easily.
Analysis.
Design
Code
Continue around this loop until the program is finished, or you've run
out of resources (time). Using the iterative approach means that
there's a running program at the end of each iteration. It doesn't to
everything, but it is something you can turn in.
For a company this means that it may be able to use the program for
some work and get value out of it before it is finished. It also means
that the project can be terminated as soon as the program is "good
enough.
Iterative Development
Iterative
In
You always have a running version of the program, e.g., if you run
out of time, you can deliver the last iteration, which may not have all
functionality, but it does something. This is usually worth more to your
instructor than a program which doesn't even compile yet.
PROBLEMS/CHALLENGES ASSOCIATED
WITH THE ITERATIVE MODEL
The iterative model can lead to "scope creep," since user feedback
following each phase may lead to increased customer demands.
As users see the system develop, they may realize the potential of other
system capabilities, which would enhance their work.