0% found this document useful (0 votes)
13 views41 pages

SW Engg Intro 2.1

Uploaded by

mywandisbig
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views41 pages

SW Engg Intro 2.1

Uploaded by

mywandisbig
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

Software Engineering

Introduction
(Unit 1 – Part 1)
Dr. Najumudheen E S F
Software

 Computer software is the product that software


professionals build and then support over the long term
 It encompasses
 Programs that execute within a computer of any size and
architecture,
 Content that is presented as the computer programs execute, and
 Descriptive information in both hard copy and virtual forms that
encompass virtually any electronic media

9/4/2023 Dr. Najumudheen E S F, Software Engineering 2


Nature of Software (1)

 Software takes on a dual role.


 It is a product, and at the same time, the vehicle for delivering a
product.
 As a product,
• It delivers the computing potential embodied by computer hardware
or more broadly, by a network of computers that are accessible by
local hardware
 As the vehicle used to deliver the product
• Software acts as the basis for
– The control of the computer (operating systems),
– The communication of information (networks), and
– The creation and control of other programs (software tools and
environments)

9/4/2023 Dr. Najumudheen E S F, Software Engineering 3


Nature of Software (2)

 Software is not susceptible to the environmental


maladies that cause hardware to wear out.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 4


Failure Curves for Software

 In theory, the failure rate curve for software should take the form
of the “idealized curve”
• Undiscovered defects will cause high failure rates early in the life of
a program. However, these are corrected, and the curve flattens.
 The idealized curve is an oversimplification of actual failure
models for software.
 However, the implication is clear - software doesn’t wear out. But
it does deteriorate!
9/4/2023 Dr. Najumudheen E S F, Software Engineering 5
Failure Curves for Software (2)

 During its life, software will undergo change.


 As changes are made, it is likely that errors will be introduced,
causing the failure rate curve to spike as shown in the “actual curve”
 Before the curve can return to the original steady-state failure rate,
another change is requested, causing the curve to spike again
 Slowly, the minimum failure rate level begins to rise – the software is
deteriorating due to change.
9/4/2023 Dr. Najumudheen E S F, Software Engineering 6
Nature of Software – Contd. (3)

 Another aspect of wear illustrates the difference between


hardware and software.
 When a hardware component wears out, it is replaced by a
spare part.
 There are no software spare parts.
 Every software failure indicates an error in design or in the
process through which design was translated into machine
executable code.
 Therefore, the software maintenance tasks that accommodate
requests for change involve considerably more complexity than
hardware maintenance

9/4/2023 Dr. Najumudheen E S F, Software Engineering 7


Software Application Domains

 Broad categories of computer software


 System software
 Application software
 Engineering/scientific software
 Embedded software
 Product-line software
 Web/Mobile applications
 Artificial intelligence software
 All the above categories of software present continuing
challenges for software engineers

9/4/2023 Dr. Najumudheen E S F, Software Engineering 8


Software Engineering – Introduction (1)

 Software Engineering
 The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of
software; That is, the application of engineering to software.
 The study of approaches related to the above process
 Software Engineering encompasses
 A process,
 A collection of methods (practice), and
 An array of tools that allow professionals to build high-quality
computer software.
 Software engineers apply the software engineering
process.
9/4/2023 Dr. Najumudheen E S F, Software Engineering 9
Software Engineering – Introduction (2)

 Software Engineering is important because


 It enables us to build complex systems in a timely manner and
with high quality
 It imposes discipline to work that can become quite chaotic
 It also allows the people who build computer software to adapt
their approach in a manner that best suits their needs.
 Steps in Software Engineering
 We build computer software like we build any successful
product,
• By applying an agile, adaptable process that leads to a high-quality
result, which meets the needs of the people who will use the
product.
• We apply a Software Engineering approach
9/4/2023 Dr. Najumudheen E S F, Software Engineering 10
Software Engineering – Layers (1)

 Software engineering is a layered technology.


 Any engineering approach (including software engineering) must
rest on an organizational commitment to quality. Total quality
management
 The foundation for software engineering is the process layer.
• The software engineering process is the glue that holds the
technology layers together and enables rational and timely
development of computer software

9/4/2023 Dr. Najumudheen E S F, Software Engineering 11


Software Engineering – Layers (2)

 Software engineering methods


• Provide the technical know-how for building software.
• Methods encompass a broad array of tasks that include
communication, requirements analysis, design modeling, program
construction, testing, and support.
 Software engineering tools provide automated or semi-
automated support for the process and the methods

9/4/2023 Dr. Najumudheen E S F, Software Engineering 12


The Software Process

 Software Process
 The systematic approach that is used in software engineering
 The set of activities, actions, and tasks that are performed to
create some work product
• An activity strives to achieve a broad objective
– Example: Communication with stakeholders
– It is applied regardless of the application domain, size of the
project, complexity of the effort, etc.
• An action encompasses a set of tasks that produce a major work
product
• A task focuses on a small, but well-defined objective that produces
a tangible outcome
– Example: Conducting a unit test

9/4/2023 Dr. Najumudheen E S F, Software Engineering 13


The Software Process – Contd.

 In the context of Software Engineering


 A process is not a rigid prescription for how to build computer
software.
 It is an adaptable approach that enables the people doing the
work (the software team) to pick and choose the appropriate set
of work actions and tasks

9/4/2023 Dr. Najumudheen E S F, Software Engineering 14


Software Product

 Products or deliverables are the outcomes of a process


activity.
 For example, the outcome of architectural design (activity) may
be the software architecture model (deliverable)
 From the point of view of a software engineer, the work
products are
 The programs, documents, and data that are produced as a
consequence of the activities and tasks defined by the process

9/4/2023 Dr. Najumudheen E S F, Software Engineering 15


Software Process – Basic Activities

 Four fundamental activities are common to all software


processes
 Software Specification
• Customers and engineers define the software that is to be produced
and the constraints on its operation
 Software Development
• The software that meets the specification is designed and
programmed for production
 Software Validation
• The software is validated to ensure that it does what the customer
requires
 Software Evolution
• The software is modified to reflect changing customer and market
requirements
9/4/2023 Dr. Najumudheen E S F, Software Engineering 16
Software Process Models

 A Software Process Model


 Also called as Software Development Life Cycle or SDLC
 A simplified representation of a software process
 Generic process models
• High-level, abstract descriptions of software processes that can be
used to explain different approaches to software development
• The Waterfall Model
• Incremental Development
• Integration and Configuration

9/4/2023 Dr. Najumudheen E S F, Software Engineering 17


Waterfall Model

 In this approach, the fundamental process activities of specification,


development, validation, and evolution are represented as separate
process phases such as requirements specification, software design,
implementation, and testing, and maintenance.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 18


Waterfall Model – Contd.

 Examples of software applications where waterfall model


is appropriate
 Embedded Systems
• It is not possible to delay decisions on the software’s functionality
until it is being implemented
 Critical Systems
• There is a need for extensive safety and security analysis of the
software specification and design.
• In such systems, the specification and design documents must be
complete so that this analysis is possible
 Large Software Systems
• Several companies are involved
• Complete specifications may be needed to allow for the
independent development of different subsystems
9/4/2023 Dr. Najumudheen E S F, Software Engineering 19
Incremental Development

 This approach interleaves the activities of specification,


development, and validation.
 The system is developed as a series of versions (increments),
with each version adding functionality to the previous version.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 20


Incremental Development (2)

 Advantages over the waterfall model


 Cost of implementing requirements changes is reduced
 It’s easier to get customer feedback on the development work
that has been done
 Early delivery and deployment of useful software to the customer
is possible

9/4/2023 Dr. Najumudheen E S F, Software Engineering 21


Incremental Development (3)

 Problems & Drawbacks


 The process is not visible. It’s not cost effective to produce
documents that reflect every version of the system
 System structure tends to degrade as new increments are added
 The problems become acute for large, complex, long-lifetime
systems, where different teams develop different parts of the
system.
• Large systems need a stable framework or architecture
• Responsibilities of the different teams working on parts of the
system need to be clearly defined with respect to that architecture.
• This has to be planned in advance rather than developed
incrementally

9/4/2023 Dr. Najumudheen E S F, Software Engineering 22


Integration and Configuration

 This approach relies on the availability of reusable


components or systems.
 The system development process focuses on configuring
these components for use in a new setting and
integrating them into a system.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 23


Integration and Configuration
- Reusable Software Components
 Three types of software components are frequently
reused
 Stand-alone application systems
• Configured for use in a particular environment
 Collections of objects
• Developed as a component or as a package to be integrated with a
component framework
 Web services
• Developed according to service standards

9/4/2023 Dr. Najumudheen E S F, Software Engineering 24


Reuse Oriented Software Engineering

 A general process model for reuse-based development,


based on integration and configuration.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 25


Reuse Oriented Software Engineering (2)

 Stages in Reuse Oriented Software Engineering


 Requirements Specification
• The initial requirements for the system are proposed
 Software Discovery and Evaluation
• Given an outline of the software requirements, a search is made for
components and systems that provide the functionality required.
• Candidate components and systems are evaluated to see if they
meet the essential requirements
 Requirements Refinement
• Requirements are refined using information about the reusable
components

9/4/2023 Dr. Najumudheen E S F, Software Engineering 26


Reuse Oriented Software Engineering (3)

 Stages in Reuse Oriented Software Engineering – Contd.


 Application System Configuration
• If an off-the-shelf application system is available, it may then be
configured for use to create the new system.
 Component Adaptation and Integration
• If there is no off-the-shelf system, individual reusable components
may be modified and new components developed.
• These are then integrated to create the system

9/4/2023 Dr. Najumudheen E S F, Software Engineering 27


Evolutionary Software Process Models

 Software, like all complex systems, evolves over a


period of time
 Business and product requirements often change as
development proceeds, making a straight-line path to an
end-product unrealistic
 Evolutionary models are iterative
 They are characterized in a manner that enables you to
develop increasingly more complete versions of the
software.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 28


Evolutionary Software Process Models (2)

 Two common evolutionary process models


 Prototype Software Development or Prototyping
 The Spiral Model

9/4/2023 Dr. Najumudheen E S F, Software Engineering 29


Prototype Development

 Prototype - An early version of a software system


 Used to demonstrate concepts, try out design options, and find
out more about the problem and its possible solutions.
 Rapid, iterative development of the prototype is essential so that
costs are controlled and system stakeholders can experiment
with the prototype early in the software process

9/4/2023 Dr. Najumudheen E S F, Software Engineering 30


Prototype Development (2)

 A software prototype can be used in a software


development process to help anticipate changes that
may be required -
 In the Requirements Engineering process
• Prototype can help with the elicitation and validation of system
requirements.
 In the System Design process
• Prototype can be used to explore software solutions and in the
development of a user interface for the system.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 31


Prototype Development (3)

 System prototypes
 Allow potential users to see how well the system supports their
work.
 They may get new ideas for requirements and find areas of
strength and weakness in the software.
 They may then propose new system requirements
 A system prototype
 May be used while the system is being designed to carry out
design experiments to check the feasibility of a proposed design.
 Example: A database design may be prototyped and tested to
check that it supports efficient data access for the most common
user queries

9/4/2023 Dr. Najumudheen E S F, Software Engineering 32


Prototype Development Process

 A process model for prototype development

9/4/2023 Dr. Najumudheen E S F, Software Engineering 33


Prototype Development Process (2)

 The objectives of prototyping should be made explicit


from the start of the process. These may be
 To develop the user interface
 To develop a system to validate functional system requirements
 To develop a system to demonstrate the application to managers

9/4/2023 Dr. Najumudheen E S F, Software Engineering 34


Prototype Development Process (3)

 The next stage in the process is to decide


 What to put into and, perhaps more importantly, what to leave
out of the prototype system.
 To reduce prototyping costs and accelerate the delivery
schedule, you may leave some functionality out of the prototype
• You may decide to relax non-functional requirements such as
response time and memory utilization.
• Error handling and management may be ignored unless the
objective of the prototype is to establish a user interface

9/4/2023 Dr. Najumudheen E S F, Software Engineering 35


Prototype Development Process (4)

 The final stage of the process is Prototype Evaluation


 Provision must be made during this stage for user training
 Prototype objectives should be used to derive a plan for
evaluation

9/4/2023 Dr. Najumudheen E S F, Software Engineering 36


Spiral Model

 Using the spiral model, software is developed in a series of


evolutionary releases
 During early iterations, the release might be a model or prototype
 During later iterations, increasingly more complete versions of the
engineered system are produced
9/4/2023 Dr. Najumudheen E S F, Software Engineering 37
Spiral Model (2)

 Each phase in this model is split into four sectors (or


quadrants).
 In the first quadrant, a few features of the software are
identified (based on its importance to the final product),
and taken up for immediate development
 With each iteration around the spiral (beginning at the
center and moving outwards), progressively more
complete versions of the software are developed
 Thus, implementation of the identified set of features
forms a phase

9/4/2023 Dr. Najumudheen E S F, Software Engineering 38


Spiral Model (3)

 A prominent feature of the spiral model is handling


unforeseen risks that can show up much after the project
has started

9/4/2023 Dr. Najumudheen E S F, Software Engineering 39


Spiral Model (4)

 Prototyping Vs Spiral
 While the prototyping model provides explicit support for risk
handling, the risks are assumed to have been identified
completely before the start of the project.
 This is required since the prototype is constructed only at the
start of the project.
 In contrast, in the spiral model, prototypes are built at the start of
every phase.
 Each phase of the model is represented as a loop
• In each loop, one or more features of the product are elaborated
and analyzed, and the risks at that point of time are identified and
are resolved through prototyping.
 Based on this, the identified features are implemented.

9/4/2023 Dr. Najumudheen E S F, Software Engineering 40


9/4/2023 Dr. Najumudheen E S F, Software Engineering 41

You might also like