Diploma in
Software Engineering
Chapter 1
Introduction to Software
Engineering
Hiranthi Ranasinghe(MSc(AI),BSc(Hons))
A software is a system consists of a
number of separate programs
What is a configuration files which are used to set up the
SOFTWARE? programs
Systems and user documentation which
explains how to use the system
Individuals who develop software
Who is are software engineers
Software They are concerned with developing
Engineer?
software products to be sold to a
customer
Software
Categories
of Software
Generic (Over the Shelf) Bespoke (Customize)
products products
SOFTWARE
System Software Application Software AI software
Real time software
Operating System
Program Translators Business software
Utility Software Engineering and Scientific software
Embedded Software
Personal Computer software
Web based software
Software Development Process
- Set of Activities and associated
Software results which produce a software
Development product
Process
-In early days software development
activities were not distinct
It caused Software Crisis
Main reason for software Crisis
Existing software development methods were
not good enough to build large software systems.
Software Software costs were rising and over budgeted.
Crisis
Software release failed to meet deadlines.
Expected requirements ware not completely
fulfilled.
Software maintenance absorbed increasing
proportion of software effort.
Systematic approach to software development
Reasons to use software engineering
Hardware advances
Software
Engineering Programs rapidly change according to
demand
Widespread use of software operation
Ability to support and enhance existing
programs
Software engineering is an engineering
discipline which is concerned with all
Software aspects of software production from the
Engineering
early stages of system specification through
to maintaining the system after it has gone
in use
Engineering discipline :
Making things work by engineers
by applying theories, methods and tools which are
appropriate
Software to discover solutions for problems
Engineering
All aspect of software production:
Key Phrases
Technical process of software development
Software project management
Development of tools, methods & theories to support
software production
Software attributes
Reflect the quality of the software
Software Reflect the behaviour while executing
Attributes
Reflect the structure & organization of the
system
Depend on the software application
Are not directly concerned with what it does
Maintainability : Should meet changing needs
Should not cause physical or
Dependability : economic damage in a failure
Essential
Software
Attributes Should not make wasteful use of
Efficiency : system resources
Should have appropriate user
Usability : interfaces and adequate
documentation
A set of activities and associated results which
lead to the production of a software product
Fundamental activities are:
Software specification
Software
Process Software design and implementation
Software validation
Software evolution
An abstract representation of a software
process is a software development process
model
Represents a process from a particular
perspective – partial information
Software
Development Ex:
Process Waterfall model
Models
Evolutionary development
Reuse- oriented development
RAD model
The WATERFALL MODEL is a sequential
design process, used in software
development processes, in which progress
is seen as flowing steadily downwards
Waterfall
Model (like a waterfall) through the phases.
Waterfall development has distinct goals
for each phase of development.
Waterfall
Model
Requirements analysis and definition – System
services, constraints and goals are established by
consultation with system users in a system
specification
Waterfall
Model System and Software Design – Partitions the
STEPS
requirements to hardware & software system
Implementation & unit testing – The design is
developed as a set of programs and verify whether
each unit meets its requirements
Integration & System Testing - Individual programs
are integrated and tested. Then the complete
system is ensured for specified software
Waterfall
Model requirements
STEPS
Operation & Maintenance – The system is put into
practical use. Correcting errors & improving
implementation is done
Systems with clearly defined requirements.
Systems with less risk.
More Small scale systems.
appropriate Product definition is stable
when: Technology is understood
New version of an existing product
Porting an existing product to a new platform.
It allows for departmentalization and managerial
control.
It is simple and easy to understand and use.
It is easy to manage due to the rigidity of the model;
each phase has specific deliverables and a review
process.
Strengths
Phases are processed and completed one at a time.
Phases do not overlap.
Provides structure to inexperienced staff.
Milestones are well understood.
Sets requirements stability.
Good for management control (plan, staff, track).
Once an application is in the testing stage, it is very difficult
to go back and change something that was not well-thought
out in the concept stage.
No working software is produced until late during the life
cycle.
High amounts of risk and uncertainty.
Weaknesses Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a
moderate to high risk of changing.
It has rigid design and inflexible procedure
One phase must be completed before the next phase starts.
No phase can be repeated.
Large scale systems.
Least Risk is high.
Appropriate
When Experimental & scientific systems
Requirements are not clearly specified
System for a school
System for a super market
Examples
System for an online shopping web
application
Rad explains an iterative, incremental
development process leads to faster
delivery of more useful software
In RAD model the components or functions
Rapid
Application are developed in parallel as if they were
Development mini projects.
The developments are time boxed,
delivered and then assembled into a
working prototype.
Rapid
Application
Development
Business modeling: The information flow is identified
between various business functions.
Data modeling: Information gathered from business
modeling is used to define data objects that are needed
for the business.
Process modeling: Data objects defined in data
Phrases of modeling are converted to achieve the business
information flow to achieve some specific business
RAD
objective. Description are identified and created for
CRUD of data objects.
Application generation: Automated tools are used to
convert process models into code and the actual
system.
Testing and turnover: Test new components and all the
interfaces.
Reduced development time.
Increases reusability of components
Quick initial reviews occur
Strengths Encourages customer feedback
Integration from very beginning solves a
lot of integration issues.
Depends on strong team and individual
performances for identifying business
requirements.
Only system that can be modularized can be
built using RAD
Weaknesses
Requires highly skilled developers/designers.
High dependency on modeling skills
Inapplicable to cheaper projects as cost of
modeling and automated code generation is
very high.
RAD should be used when there is a need to
create a system that can be modularized in 2-3
months of time.
It should be used if there’s high availability of
Most designers for modeling and the budget is high
Appropriate enough to afford their cost along with the cost of
In automated code generating tools.
RAD SDLC model should be chosen only if
resources with high business knowledge are
available and there is a need to produce the
system in a short span of time (2-3 months).
Very large, infrastructure projects; particularly large,
distributed information systems such as corporate-wide
databases.
Real-time or safety-critical systems.
Computationally complex systems, where complex and
Least voluminous data must be analyzed, designed, and
Appropriate created within the scope of the project.
In
Project scope is broad and the business objectives are
obscure.
Applications in which the functional requirements have
to be fully specified before any programs are written..
When user resource and/or commitment is lacking.
The project team is large or there are multiple teams
whose work needs to be coordinated.
There is no project champion at the required level to
make things happen.
Many new technologies are to be introduced within
Least
Appropriate the scope of the project, or the technical architecture is
In unclear and much of the technology will be used for
the first time within the project.
Technical requirements (e.g., response times,
throughput, database sizes, etc.) are tight for the
equipment that is to be used.
Incomplete versions of the software
program being developed
Very good prototype in a structured
manner and constantly improve it
Prototype
Specification, development &
validation activities concurrently with
feedback
33
2 types of evolutionary
development prototyping models
Evolutionary
Prototyping Exploratory development
Model
Throw-away prototyping
Exploratory development
Development starts with the parts that the system has
understood
System develop, adding new features according
Evolutionary customer requirements
Prototyping Throw-away prototyping
Discarded prototype when final delivering.
Model A simple working model of the system is constructed to
visually show the users, what their requirements may
look like when they are implemented into a finished
system.
DiSE
8/9/20 DiTEC 35
Advantages
Reduced time and costs
Improved and increased user involvement
Disadvantages
Evolutionary Insufficient analysis
User confusion of prototype and finished
Prototyping
system
Model
Developer misunderstanding of user
objectives
Excessive development time of the prototype
Expense of implementing prototyping
36
Reuse is one of the most important
concepts of today's software engineering
since it can not only save a given amount
Re-use of work when existing components
Oriented providing a given functionality are reused
Development but existing components might have lots
of testing received so far so we can
possibly build more reliable systems
based on them.
Requirement Specification: Which is the activity of
translating the information gathered during the analysis
activity into a (formal or informal, depending on the
underlying process used) document that defines a set of
Re-use requirements. Two types of requirements may be included
in this document:
Oriented
•User requirements are abstract statements of the system
Development
requirements for the customer and end-user of the
system;
•System requirements are a more detailed description of
the functionality to be provided.
Component analysis. Based on the requirements specification,
components that implement (some part of) the specification are
looked for. In the most of the cases there is no exact match and
the components that may be used only provide some of the
Re-use functionality required.
Oriented
Requirements modification. During this stage, the
Development
requirements are analyzed using information about the
components that have been discovered. They are then modified
to reflect the available components. Where modifications are
impossible, the component analysis activity may be re-entered to
search for alternative solutions.
System design with reuse. During this phase, the
framework of the system is designed or an existing
framework is reused. The architects will perform the design
by taking into account the components that are reused and
they will organize the framework accordingly. New pieces of
software may have to be designed if reusable components
Re-use are not available.
Oriented
Development Development and integration. Software that cannot be
externally procured is developed, and the components and
commercial-off-the-shelf (COTS) systems are integrated to
create the new system. System integration, in this model,
may be part of the development process rather than a
separate activity.
System validation more generally, verification and validation
(V&V) is intended to show that a system both conforms to its specification
and that it meets the real needs of the customer or user of the application.
Testing, where the system is executed using simulated test data, is an
important validation technique but some checking processes, such like
Re-use inspections or reviews should also be applied during V&V processes.
Oriented
Testing has three main stages
Development
Development testing. The components that compose the system are
tested by the people developing the system. Each component is tested
independently, without other system components. Components may be
simple entities such as functions or object classes, or may be coherent
groupings of these entities. Test automation tools, such as JUnit are
commonly used.
System testing. System components are integrated to create a
complete system. This process is concerned with finding errors that
result from unanticipated interactions between components and
component interface problems. It is also concerned with showing
that the system meets its functional and non-functional
Re-use requirements, and testing the emergent system properties.
Oriented
Development
Acceptance testing. This is the final stage in the testing process
before the system is accepted for operational use. The system is
tested with data supplied by the system customer rather than with
simulated test data. Acceptance testing may reveal errors and
omissions in the system requirements definition, because the real
data exercise the system in different ways from the test data.
Web services that are developed according to well-known
service standards and which will become available for
remote invocation.
Most Collections of objects that are developed as a package to
Appropriate
be integrated with a component framework such like .NET
In
or Java EE.
Standalone software systems that are configured for use
in a particular environment.
reduced amount of software to be developed
reduced cost and risks
lead to faster delivery
Benefits
compromises must be achieved on requirements which
might lead to a system that does not meet the real needs
of users
control over the system evolution might also be lost as
Limitations
new versions of the reusable components are not under
the control of the organization using them