Professional Documents
Culture Documents
com
UNIT I
1.0 INTRODUCTION
SOFTWARE:
ENGINEERING:
SOFTWARE ENGINEERING:
Methods
Process
Quality
www.vidyarthiplus.com Page 1
www.vidyarthiplus.com
1.Analysis
2.Design
3.Implementation
4.Testing
5.Maintenance
This view opposed uniqueness and "magic" of programming in an effort to move the
development of software from "magic" (which only a select few can do) to "art" (which the
talented can do) to "science" (which supposedly anyone can do!). There have been numerous
definitions given for software engineering (including that above and below).
www.vidyarthiplus.com Page 2
www.vidyarthiplus.com
People developing systems were consistently wrong in their estimates of time, effort, and
costs
Reliability and maintainability were difficult to achieve
Delivered systems frequently did not work
1979 study of a small number of government projects showed that:
2% worked
3% could work after some corrections
45% delivered but never successfully used
20% used but extensively reworked or abandoned
30% paid and undelivered
Fixing bugs in delivered software produced more bugs
Increase in size of software systems
NASA
StarWars Defense Initiative
Social Security Administration
financial transaction systems
Changes in the ratio of hardware to software costs
early 60's - 80% hardware costs
middle 60's - 40-50% software costs
today - less than 20% hardware costs
Increasingly important role of maintenance
Fixing errors, modification, adding options
Cost is often twice that of developing the software
Advances in hardware (lower costs)
Advances in software techniques (e.g., users interaction)
Increased demands for software
Medicine, Manufacturing, Entertainment, Publishing
Demand for larger and more complex software systems
Airplanes (crashes), NASA (aborted space shuttle launches),
www.vidyarthiplus.com Page 3
www.vidyarthiplus.com
Paradigms refer to particular approaches or philosophies for designing, building and maintaining
software. Different paradigms each have their own advantages and disadvantages which make
one more appropriate in a given situation than perhaps another (!).
A method (also referred to as a technique) is heavily depended on a selected paradigm and may
be seen as a procedure for producing some result. Methods generally involve some formal
notation and process(es).
Thus, the following phases are heavily affected by selected software paradigms
Design
Implementation
Integration
Maintenance
The software development cycle involves the activities in the production of a software system.
Generally the software development cycle can be divided into the following phases:
www.vidyarthiplus.com Page 4
www.vidyarthiplus.com
Validation:
"Are we building the right product"
www.vidyarthiplus.com Page 5
www.vidyarthiplus.com
o The system is executed with test data and its operational behaviour is observed
V& V goals
Verification and validation should establish confidence that the software is fit for purpose
Rather, it must be good enough for its intended use and the type of use will determine the
degree of confidence that is needed
V & V planning
Careful planning is required to get the most out of testing and inspection processes
The plan should identify the balance between static verification and testing
Test planning is about defining standards for the testing process rather than describing
product tests
www.vidyarthiplus.com Page 6
www.vidyarthiplus.com
Software validation
o Evolutionary development
Specification, development and validation are interleaved.
o There are many variants of these models e.g. formal development where a
waterfall-like process is used but the specification is a formal specification that is
refined through several stages to an implementable design.
Waterfall model phases
www.vidyarthiplus.com Page 7
www.vidyarthiplus.com
o Exploratory development
www.vidyarthiplus.com Page 8
www.vidyarthiplus.com
o Throw-away prototyping
Objective is to understand the system requirements. Should start with
poorly understood requirements to clarify what is really needed.
Evolutionary development
Evolutionary development
o Problems
Lack of process visibility;
www.vidyarthiplus.com Page 9
www.vidyarthiplus.com
o Applicability
For small or medium-size interactive systems;
For parts of large systems (e.g. the user interface);
For short-lifetime systems.
Incremental development
Spiral development
www.vidyarthiplus.com Page 10
www.vidyarthiplus.com
RAD MODEL:
www.vidyarthiplus.com Page 11
www.vidyarthiplus.com
Business Business
Modeling Modeling
Data Data
Modeling Modeling
Process Process
Modeling Modeling
Application Application
Generation Generation
60 – 90 Days
PROTOTYPE MODEL:
Requirement collection
Quick Design
Prototype creation(or)modification
Assessment
Prototype refinement
www.vidyarthiplus.com Page 12
www.vidyarthiplus.com
CUSTOMER TEST
DRIVES MOCK - UP
www.vidyarthiplus.com Page 13
www.vidyarthiplus.com
Re-engineering approaches
o Usually follows a ‘waterfall’ model because of the need for parallel development
of different parts of the system
Little scope for iteration between phases because hardware changes are
very expensive. Software may have to compensate for hardware problems
o Inevitably involves engineers from different disciplines who must work together
Much scope for misunderstanding here. Different disciplines use a
different vocabulary and much negotiation is required. Engineers may
have personal agendas to fulfil
www.vidyarthiplus.com Page 15
www.vidyarthiplus.com
A set or arrangement of elements that are organized to accomplish some predefined goal
by processing information.
The goal may be to support some business function or to develop a product that can be
sold to generate business revenue. To accomplish the goal, a computer-based system
makes use of a variety of system elements:
Software. Computer programs, data structures, and related documentation that serve to
effect the logical method, procedure, or control that is required.
data, and electromechanical devices (e.g., sensors, motors, pumps) that provide external
world function.
Procedures. The steps that define the specific use of each system element
or the procedural context in which the system resides.
Product Engineering
Product engineering is a crucial term in the sphere of software development. It is through product
engineering that the future of a product is decided. The purpose of software Product Engineering
is to consistently and innovatively perform a well-defined engineering process that integrates all
software engineering activities to effectively and efficiently develop correct, consistent software
products. Software Engineering tasks include analyzing the system requirements allocated to
software, developing software architecture, designing the software, implementing the software in
the code, integrating software components, and testing the software to verify whether it specifies
specific requirements.
www.vidyarthiplus.com Page 17
www.vidyarthiplus.com
www.vidyarthiplus.com Page 18