SEUnit-1
SEUnit-1
SEMESTER- 6th
1
Unit-1
Introduction of Software Engineering
2
Software products may be
Generic - developed to be sold to a range of different customers e.g. PC software
such as Excel or Word.
Bespoke (custom) - developed for a single customer according to their specification.
New software can be created by developing new programs, configuring generic software
systems or reusing existing software.
Chronological evolution of software
1. 1950-1965 –Early Years
General Purpose
Hardware Batch
Orientation
Limited Distribution
Custom Software
2. 1968-1973- Second Era
Multi User
Real Time
Data Base
Product
Software
Concept of sw Maintenance
3. 1974-1986-Third Era
Distributed Systems
Embedded Systems
Low cost HW
Consumer Impact
4. 1987-2000-Fourth Era
Powerful Desktop
Object Orient
Technology Expert
Systems
Artificial Neural Network
Parallel Computing
Network Computers
3
1.2 Software Component
4
Lowest Level- It mirrors the instruction set of the h/w. makes efficient use of memory
and optimize programmed execution speed.
Machine language- 1 Level
Assembly language-2 Level
Mid Level - 3 Level. Machine independents used to create procedural description of the
program. More efficient then machine language C, C++
Highest fourth level:-These are non procedural moves the developer further from the
h/w. it use geographical icons.
2) Software is not manufactured, but it is developed through the life cycle concept.
3) Reusability of components
4) Software is flexible and can be amended to meet new requirements
5) Cost of its change at if not carried out initially is very high at later stage .
Program Software
5
1.4 Software Crisis
Software fails because it
crash frequently
expensive
difficult to alter, debug, enhance
often delivered late
use resources non-optimally
Software professionals lack engineering training
Programmers have skills for programming but without the engineering mindset
about a process discipline
Standish Group Report OG States:
Software Engineering
Software engineering is concerned with the theories, methods and tools for developing, managing
and evolving software products.
“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)
A systematic approach to the analysis, design, implementation and maintenance of
software. (The Free On-Line Dictionary of Computing) The systematic application of
6
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)
The technological and managerial discipline concerned with systematic production and
maintenance of software products that are developed and modified on time and within cost
constraints (R. Fairley)
A discipline that deals with the building of software systems which are so large that they
are built by a team or teams of engineers (Ghezzi, Jazayeri, Mandrioli)
Difference between software engineering and software programming
Software Engineering Software Programming
1. Single developer 1.Teams of developers with
multiple roles
2. “Toy” applications 2.Complex systems
3. Short lifespan 3.Indefinite lifespan
4. Single or few stakeholders
Architect = Developer = Manager = 4.Numerous stakeholders Architect ≠
Tester = Customer = User Developer ≠ Manager
≠ Tester ≠ Customer ≠ User
5.One-of-a-kind systems 5.System families
7
Difference between software engineering and traditional software engineering
• Software engineers often apply new and untested elements in software projects while
traditional software engineers generally try to apply known and tested principles and limit
the use of untested innovations to only those necessary to create a product that meets its
requirements.
• Software engineers emphasize projects that will live for years or decades whereas some
traditional engineers solve long-ranged problems that ensure for centuries.
• Software engineering is about 50 years old whereas traditional engineering as a whole is
thousands of years old.
• Software engineering is often busy with researching the unknown (eg. To drive an
algorithm) right in the middle of a project whereas traditional engineering normally
separates these activities. A project is supposed to apply research results in known or new
clever ways to build the desired result.
• Software engineering has first recently started to codify and teach best practice in the form
of design pattern whereas in traditional, some engineering discipline have thousands of
years of best practice experience handed over from generation to generation via a field’s
literature , standards, rules and regulations.
8
Activities undertaken during integration and system testing: - Integration of different modules
is undertaken once they have been coded and unit tested 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. The
goal of system testing is to ensure that the developed system conforms to its requirements laid out
in the SRS document.Test Rports are generatd after this phase.
Activities undertaken during maintenance: - Maintenance of a typical software product requires
much more than the effort necessary to develop the product itself. Many studies carried out in the
past confirm this and indicate that the relative effort of development of a typical software product
to its maintenance effort is roughly in the 40:60 ratio. This phase continues till the software is in
use.
1. Feasibility Study
2. Requirements Analysis and Specification
3. Design
4. Coding and Unit Testing
5. Integration and System Testing
6. Maintenance
9
1.6.2 Iterative Waterfall Model
• Waterfall model assumes in its design that no error will occur during the design phase
• Iterative waterfall model introduces feedback paths to the previous phases for each
process phase
• It is still preferred to detect the errors in the same phase they occur
• Conduct reviews after each milestone
10
Disadvantages of Waterfall Model
• It is difficult to define all requirements at the beginning of the project.
• Model is not suitable for accommodating any change
• It does not scale up well to large projects
• Inflexible partitioning of the project into distinct stages makes it difficult to respond to
changing customer requirements.
• Therefore, this model is only appropriate when the requirements are well- understood and
changes will be fairly limited during the design process.
• Few business systems have stable requirements.
• The waterfall model is mostly used for large systems engineering projects where a system
is developed at several sites.
1. The new system requirements are defined in as much detail as possible. This usually
involves interviewing a number of users representing all the departments or aspects of the
existing system.
2. A preliminary design is created for the new system.
11
3. A first prototype of the new system is constructed from the preliminary design. This is
usually a scaled-down system, and represents an approximation of the characteristics of
the final product.
4. The users thoroughly evaluate the first prototype, noting its strengths and weaknesses,
what needs to be added, and what should to be removed. The developer collects and
analyzes the remarks from the users.
5. The first prototype is modified, based on the comments supplied by the users, and a
second prototype of the new system is constructed.
6. The second prototype is evaluated in the same manner as was the first prototype.
7. The preceding steps are iterated as many times as necessary, until the users are satisfied
that the prototype represents the final product desired.
8. The final system is constructed, based on the final prototype.The final system is thoroughly
evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-
scale failures and to minimize downtime. Customers could believe it’s the working system.
Developer could take “shortcuts” and only fill the prototype instead of redesigning it.
Customers may think that the system is almost done, and only few fixes are needed
Advantage of Prototype model
• Suitable for large systems for which there is no manual process to define there
requirements.
• User training to use the system.
• User services determination.
• System training.
• Quality of software is good.
• Requirements are not freezed.
Disadvantage of Prototype model
• It is difficult to find all the requirements of the software initially.
• It is very difficult to predict how the system will work after development.
12
• Types of evolutionary development:
– Exploratory development
– Throw-away prototyping
Concurrent activities
Initial version
Specification
Outline Intermedia te
description Development versions
Final version
Validation
Advantages:
Deals constantly with changes
Provides quickly an initial version of the system
Involves all development team
Disadvantages:
Quick fixes may be involved
“Invisible” process, not well-supported by documentation
The system’s structure can be corrupted by continuous change
13
1.6.5 ITERATIVE ENHANCEMENT MODEL:
Iterative model is developed to overcome the drawback of water fall model. It is a combination
of benefits of water fall model and prototype model. Very popular i.e., used by industries.
In this model software is developed in increments each increment add some functional
capability to the system until full system is developed. It provides better testing after each
increment is easy as compare to entire model testing of water fall model and prototype. In
this model partial product is developed on few easily understandable requirements of overall
requirements.
14
1.6.6 Spiral model
The Spiral model of software development is shown in fig. The diagrammatic representation of this
model appears like a spiral with many loops. The exact number of loops in the spiral is not fixed. Each
loop of the spiral represents a phase of the software process. For ex ample, the innermost loop might be
concerned with feasibility study. The next loop with requirements specification, the next one with
design, and so on. Each phase in this model is split into four sectors (or quadrants) as shown in fig. 2.
The following activities are carried out during each phase of a spiral model.
15
• It is very flexible.
• Less documentation is needed.
• It uses prototyping
Disadvantages of Spiral Model
• No strict standards for software development.
• No particular beginning or end of a particular phase.
RAD Phases
• Requirements planning phase (a workshop utilizing structured discussion of
business problems)
• User description phase – automated tools capture information from users
• Construction phase – productivity tools, such as code generators, screen generators, etc.
inside a time-box. (“Do until done”)
• Cutover phase -- installation of the system, user acceptance testing and user training
16
Advantage of RAD
Dramatic time savings the systems development effort
Can save time, money and human effort
Tighter fit between user requirements and system specifications
Works especially well where speed of development is important
Disadvantage of RAD
More speed and lower cost may lead to lower overall system quality
Danger of misalignment of system developed via RAD with the business due to missing
information
May have inconsistent internal designs within and across systems
Possible violation of programming standards related to inconsistent naming
conventions and inconsistent documentation
17