You are on page 1of 47

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

You might also like