FUNDAMENTALS
OF
SOFTWARE ENGINEERING
Reference books:
1. Fundamentals of Software Engineering , Rajib Mall, 3rd Edition, PHI, 2009
2. Software Engineering, Ian Somerville, 6th edition, Pearson Education Ltd,
2001.
3. Software Engineering A Practitioners Approach, Roger S Pressman, Tata
Mcgraw Hill, 4th Edition.
4. An Integrated Approach to Software Engineering, Pankaj Jalote, Narosa
Publications
5. Object Oriented and Classical Software Engineering, Stephen R Schach,
Tata McGraw Hill, 2002.
Objectives
To know the importance of Software and its attributes.
To introduce software engineering and to explain its importance.
To understand the notable changes in the software development
practices.
To discuss the key challenges facing software engineering.
To understand the various activities involved in developing a software.
To discuss the importance of various software process models used to
develop software.
Introduction
The economies of ALL developed nations are dependent on software.
More and more systems are software controlled.
Software costs often dominate computer system costs. The costs of
software on a PC are often greater than the hardware cost.
Software costs more to maintain than it does to develop. For systems
with a long life, maintenance costs may be several times development
costs.
Software engineering is concerned with cost-effective software
development.
Software
Computer programs and associated documentation such as requirements,
design models and user manuals.
Software products may be developed for a particular customer or may be
developed for a general market.
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.
Attributes of good software
The software should deliver the required functionality and performance to
the user and should be maintainable, dependable and acceptable.
Maintainability
Software must evolve to meet changing needs.
Dependability
Software must be trustworthy.
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems.
Software Engineering
Software engineering is an engineering discipline that is concerned
with all aspects of software production.
Software engineers should adopt a systematic and organised
approach to their work and use appropriate tools and techniques
depending on the problem to be solved, the development constraints
and the resources available.
Software engineering is an engineering discipline that is concerned
with all aspects (specification, development, management and
evolution) of software production.
Software Engineering
A discipline whose aim is the production of quality software,
delivered on time, within budget, and satisfying users' needs.
(Stephen R. Schach, Software Engineering, 2ed.)
Multi-person construction of multi-version software (Parnas, 1987)
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)
Notable Changes in Software Development
Practices
An important difference is that the main emphasis has shifted from
error correction to error prevention.
In exploratory style, coding was considered synonymous with
program development. Now, coding is regarded as a small part of
the different activities undertaken for program development.
A lot of effort and attention is paid to requirements analysis and
specification.
Periodic reviews are carried out during all stages of the
development process. [Link], DoS in CS,
17
UoM, MGM
Notable Changes in Software Development
Practices
Today software testing has become more systematic and for which
standard testing techniques are available.
There is better visibility of design and code.
In exploratory style, design and test activities were not
documented satisfactorily.
Several techniques and tools for tasks such as configuration
management, cost estimation, scheduling and task allocation have
been developed to make software development more effective.
Projects are being thoroughly planned.
18
Key Challenges
Heterogeneity
• Developing techniques for building software that can cope with
heterogeneous platforms and execution environments.
Delivery
• Developing techniques that lead to faster delivery of software.
Trust
• Developing techniques that demonstrate that software can be
trusted by its users.
Essential Characteristics of Software Engineering
Concerned about the construction of large programs
How to control the complexity
Constantly changing software requirements
Aim at improving the efficiency of software development
Teamwork is key to its successful implementation
Software must effectively support its users
Cultural background difference for software product creation.
Software Life Cycle Models
A life cycle model prescribes the different activities that need to be
carried out to develop a software product and the sequencing of these
activities.
A software life cycle is a series of identifiable stages that a software
product undergoes during its life time.
A software life cycle model is a descriptive and diagrammatic
representation of the software life cycle.
Importance
It encourages development of software in a systematic and disciplined
manner.
It forms a common understanding of the activities among the software
engineers which is essential while developing a large scale software
product involving several teams.
A documented life cycle model mandates a software development
organization to accurately define every activity in the life cycle.
A good life cycle model should unambiguously define the entry and
exit criteria for each phase.
Popular Software Life Cycle Models
Classical Waterfall Model
Iterative Waterfall Model
Prototyping Model
Evolutionary Model
Spiral Model
The RAD Model
The Concurrent Development Model
Component Based Development Model
Formal Methods Model
Unified Process Model
Classical Waterfall Model
Feasibility
Study
Limitations of Classical WFM
The Classical WFM considers the transition between phases to be
similar to a waterfall.
The model assumes that all requirements are defined correctly at the
beginning of the project and on the basis of that the development
work starts.
The model assumes that all the phases are sequential.
Iterative Waterfall Model
Limitations of Iterative WFM
The model cannot handle the different types of risks that a real life
software project may suffer from.
It cannot be satisfactorily used in projects where the customer if not
clear about his/her requirements and can provide rough requirements
only.
Most real life projects find it difficult to follow the rigid phase
sequence prescribed by the waterfall model to achieve better efficiency
and higher productivity.
A rigid adherence to the waterfall model would create blocking states
in the system.
Prototyping Model
Prototyping can be of two types:
• Evolutionary prototyping
• The rapid throughaway prototyping
6/16/2023 [Link], DoS in CS, UoM, MGM 29
6/16/2023 [Link], DoS in CS, UoM, MGM 30
Evolutionary Model
This model is also known as the successive versions model. In this model, the
system is first broken down into several modules or functional units that can be
incrementally implemented and delivered.
A A B A B C
A, B, C are modules of a software product that are incrementally developed and delivered
6/16/2023 [Link], DoS in CS, UoM, MGM 31
Calendar Time
6/16/2023 [Link], DoS in CS, UoM, MGM 32
The Evolutionary model combines the concepts of the linear
model with the concept of iteration. It delivers the software in
small parts called "increments." The first increment is called the
"core product." It is the basic product meeting the requirements
without any added frills. The successive increments then add to
the functionality of the product.
For example, in a security suite, the core product may include
an anti-virus, a firewall and an encryption tool. The next
increment could add a spyware removal tool. The next could add
a SPAM blocker and documentation, and so on. The incremental
model is particularly useful in the case of tight deadlines. It is
also used when human resource is a constraint.
6/16/2023 [Link], DoS in CS, UoM, MGM 33
Spiral Model
6/16/2023 [Link], DoS in CS, UoM, MGM 34
6/16/2023 [Link], DoS in CS, UoM, MGM 35
The spiral model is similar to the incremental model, in the sense that it also
combines the elements of the linear model with iteration. But the graphical
representation is of a spiral nature and is divided into a number of framework
activities called task regions.
Common task regions include:
Customer communication
Planning
Risk analysis
Engineering
Construction and release
Customer evaluation
Each task region in turn consists of a number of task sets. The advantage of
this type of model is that both the developer and the customer are better able
to understand the concept of software evolution, thus leading to a better final
product. The disadvantage of such a model is that it requires expertise in the
field6/16/2023
of risk assessment for the projectDoS
[Link], toinbe successful.
CS, UoM, MGM 36
When to use Spiral Model?
When project is large
When releases are required to be frequent
When creation of a prototype is applicable
When risk and costs evaluation is important
For medium to high-risk projects
When requirements are unclear and complex
When changes may require at any time
When long term project commitment is not feasible due to changes in
economic priorities
6/16/2023 [Link], DoS in CS, UoM, MGM 37
Advantages Disadvantages
Additional functionality or changes Risk of not meeting the schedule or
can be done at a later stage budget
Cost estimation becomes easy as the It works best for large projects only
prototype building is done in small also demands risk assessment
fragments expertise
Continuous or repeated development For its smooth operation spiral model
helps in risk management protocol needs to be followed strictly
Development is fast and features are Documentation is more as it has
added in a systematic way intermediate phases
There is always a space for customer It is not advisable for smaller project,
feedback it might cost them a lot
The RAD Model
Rapid application development (RAD) is an incremental
software development process model that emphasizes an
extremely short development cycle.
The RAD model is a “high-speed” adaptation of the linear
sequential model in which rapid development is achieved by
using component-based construction.
If requirements are well understood and project scope is
constrained, the RAD process enables a development team to
create a “fully functional system” within very short time
periods (e.g., 60 to 90 days)
Used primarily for information systems applications.
6/16/2023 [Link], DoS in CS, UoM, MGM 39
The RAD
Model
6/16/2023 [Link], DoS in CS, UoM, MGM 40
The RAD approach encompasses the following phases:
Business Modelling
Data Modelling
Process Modelling
Application Generation
Testing and Turnover
Like all process models, the RAD approach has drawbacks:
For large but scalable projects, RAD requires sufficient human
resources to create the right number of RAD teams.
RAD requires developers and customers who are committed to
the rapid-fire activities necessary to get a system complete in
a much abbreviated time frame. If commitment is lacking from
either
6/16/2023 constituency, RAD projects
[Link], will
DoS in CS, UoM, fail.
MGM 41
Not all types of applications are appropriate for RAD. If a
system cannot be properly modularized, building the
components necessary for RAD will be problematic. If high
performance is an issue and performance is to be achieved
through tuning the interfaces to system components, the RAD
approach may not work.
RAD is not appropriate when technical risks are high. This
occurs when a new application makes heavy use of new
technology or when the new software requires a high degree
of interoperability with existing computer programs.
6/16/2023 [Link], DoS in CS, UoM, MGM 42
The Concurrent Development Model
The concurrent development model, sometimes called concurrent
engineering.
The concurrent process model can be represented schematically as
a series of major technical activities, tasks, and their associated
states.
The concurrent process model defines a series of events that will
trigger transitions from state to state for each of the software
engineering activities.
The concurrent process model is often used as the paradigm for the
development of client/server applications.
In reality, the concurrent process model is applicable to all types of
software development and provides an accurate picture of the
current state of a project.
6/16/2023 [Link], DoS in CS, UoM, MGM 43
The
Concurrent
Development
Model
6/16/2023 [Link], DoS in CS, UoM, MGM 44
Component-Based Development
Object-oriented technologies provide the technical framework for a
component-based process model for software engineering.
The component-based development (CBD) model incorporates many
of the characteristics of the spiral model.
It is evolutionary in nature, demanding an iterative approach to the
creation of software.
However, the component-based development model composes
applications from repackaged software components (called classes).
The component-based development model leads to software reuse,
and reusability provides software engineers with a number of
measurable benefits.
6/16/2023 [Link], DoS in CS, UoM, MGM 45
Component-Based Development
6/16/2023 [Link], DoS in CS, UoM, MGM 46
Formal Methods Model
The formal methods model encompasses a set of activities that
leads to formal mathematical specification of computer software.
Formal methods enable a software engineer to specify, develop, and
verify a computer-based system by applying a rigorous,
mathematical notation.
A variation on this approach, called cleanroom software engineering,
is currently applied by some software development organizations.
Ambiguity, incompleteness, and inconsistency can be discovered and
corrected more easily, not through ad hoc review but through the
application of mathematical analysis.
When formal methods are used during design, they serve as a basis
for program verification and therefore enable the software engineer
to discover and [Link],
6/16/2023
errors that might go undetected.
DoS in CS, UoM, MGM 47
Limitations of Formal Methods Model
The development of formal models is currently quite time
consuming and expensive.
Because few software developers have the necessary background to
apply formal methods, extensive training is required.
It is difficult to use the models as a communication mechanism for
technically unsophisticated customers.
6/16/2023 [Link], DoS in CS, UoM, MGM 48
The Unified Process
Discuss the need for a “use-case driven, architecture centric,
iterative, and incremental” software process.
The unified process framework also include the five generic
framework activities like other process models.
The inception phase of the UP encompasses both customer
communication and planning activities.
The elaboration phase encompasses the customer communication
and modelling activities of the generic process model.
The construction phase of the UP is identical to the construction
activity defined for the generic software process.
The transition phase of the UP encompasses the later stages of the
generic construction activity and the first of the generic deployment
activity.
6/16/2023 [Link], DoS in CS, UoM, MGM 49
The production phase of the UP coincides with the deployment
activity of the generic process. During this phase, the on-going use
of the software is monitored. Support for the operating environment
is provided, and defect reports and requests for changes are
submitted and evaluated.
Unified Process Work Products
Inception phase
• Vision document
• Initial use-case model
• Initial project glossary
• Initial business case
• Initial risk assessment
• Project plan: phases and iterations
One or more prototypes
•6/16/2023 [Link], DoS in CS, UoM, MGM 50
Elaboration phase
• Use-case model.
• Supplementary requirements including non-functional reqrments.
• Analysis model.
• Software architecture description.
• Executable architecture prototype.
• Preliminary design model.
• Revised risk list.
• Project plan including iteration plan, adapted workflows,
milestones, technical work products.
• Preliminary user manual.
6/16/2023 [Link], DoS in CS, UoM, MGM 51
Construction phase
• Design model.
• Software components.
• Integrated software increment.
• Test plan and procedure.
• Test cases.
• Support documentation: user manuals, installation manuals,
description of current increment.
Transition phase
• Delivered software increment.
• Beta test reports.
• General user feedback.
6/16/2023 [Link], DoS in CS, UoM, MGM 52
Assignment Questions
1. What is the aim of software engineering? What does the
discipline of software engineering discuss?
2. What do you understand by the term life cycle model of
software development? Why is it important to adhere to a life
cycle model while developing a large software product?
3. Explain why the waterfall model of the software process is not
an accurate reflection of software development activities.
4. Giving reasons for your answer based on the type of type of
system being developed, suggest the most appropriate
generic software process model which might be used as a
basis for managing the development of the following systems:
6/16/2023 [Link], DoS in CS, UoM, MGM 53
• A university accounting system which is intended to replace an
existing system.
• An interactive system which allows railway passengers to find train
times from terminals installed in stations.
• A well-understood data processing application.
• A software product that would function as the controller of a
telephone switching system.
• A new text editor.
• A new library automation software that would link various libraries in
the city.
• A compiler for a new language.
6. Explain why programs which are developed using evolutionary
development are likely to be difficult to maintain.
7. Explain how both waterfall model of the software process and
the prototype model can be accommodated in the spiral
model.
6/16/2023 [Link], DoS in CS, UoM, MGM 54
Sample Questions
1. What are the major advantages of first developing the prototype of a
system?
2. Explain why the spiral model is considered to be a meta model.
3. Why are three different levels of testing – unit testing, integration
testing and system testing – necessary? What is the main purpose of
each of these different levels of testing?
4. Discus the various software design methodologies and their relative
advantages and disadvantages.
5. In any software development effort, why is it advantageous to detect
defects in the same phase in which they are introduced?
6. What is meant by software maintenance? Discuss the three kinds of
activities involved in software maintenance.
7. Compare different software life cycle models.
6/16/2023 [Link], DoS in CS, UoM, MGM 55