You are on page 1of 55

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. Dr.H.S.Nagendraswamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 29


6/16/2023 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 31
Calendar Time
6/16/2023 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 33
Spiral Model

6/16/2023 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 34


6/16/2023 Dr.H.S.N.Swamy, 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
Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 39
The RAD
Model

6/16/2023 Dr.H.S.N.Swamy, 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
Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 43
The
Concurrent
Development
Model

6/16/2023 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 45
Component-Based Development

6/16/2023 Dr.H.S.N.Swamy, 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 correctDr.H.S.N.Swamy,
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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, 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 Dr.H.S.N.Swamy, DoS in CS, UoM, MGM 55

You might also like