This document provides an overview of software engineering concepts including different types of software, software classification, software attributes, and common software development process models. It describes system software and application software, and distinguishes between generic/off-the-shelf software and custom software. Popular process models covered include waterfall, prototyping, and rapid application development (RAD). The waterfall model and its stages are explained in detail.
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
Diploma in Software Engineering Module
1. Diploma in Software Engineering
Module I: Introduction to Software
Engineering
Rasan Samarasinghe
ESOFT Computer Studies (pvt) Ltd.
No 68/1, Main Street, Pallegama, Embilipitiya.
2. Contents
1. What is software?
2. Software classification
3. Generic Software vs Custom Software
4. Attributes of Software
5. What is Software Engineering?
6. Software Engineering Process Model
7. Waterfall Model
8. Waterfall Model Stages
9. Extended Waterfall Model
10. Prototype Model
11. Throw away prototype model
12. Evolutionary prototype model
13. Rapid application development model (RAD)
14. Stages in the RAD
3. What is software?
A software is a collection of instructions that
enables a user to interact with the computer
or have the computer perform special task for
them.
4. Software classification
• System Software
– Directly controlling the hardware resources and
supports the operation of application software.
• Application Software
– Serves the user requirements in a particular
application domain.
5. Software classification
• Generic Software (off the shelf)
– Available on open market to any customer who is
able to buy it.
• Custom Software (bespoke)
– Developed specially for a customer requirement.
6. Generic Software vs Custom Software
Less expensive
More reliable
Immediate installation
More user friendly
User requirements are
not completely satisfied
Cannot accommodate
future changes
More expensive
Less reliable
Delay due to high
development time
Less user friendly
Completely satisfied
Can easily
accommodate future
changes
Generic Software Custom Software
8. What is Software Engineering?
Software engineering is concerned with application
of theories, methods and tools to develop and
maintain software systems that behave reliably and
efficiently, are affordable to develop and maintain,
and satisfy all the requirements that customers
have defined for them.
9. Software Engineering Process ModelA software process model is a set of predicted
procedures or set of stages to be use to
develop a fully tested software system timely.
Software Process Model
10. • Waterfall model
• Prototyping model
• Rapid application development model
• Spiral model
• V-model
• Join application development model
• Incremental development model
Software Process Models
12. Waterfall Model
• A linear sequential development model.
• Because of the cascade form one stage to
another it is known as waterfall model.
• Divided project activities into isolated stages and
each stage should complete before next started.
• Concurrent activities are not possible.
• Need to wait until end of the life cycle to see the
outcome.
• Suitable for develop systems which has stable
requirements.
13. Waterfall Model Stages
Stage 1: Requirement Definition
• The system services, constraints and goals are
established by consulting with the system
users.
• They are define in a manner which is
understandable by both users and the
development staff.
14. Waterfall Model Stages
Stage 2: System and Software designing
• Partitions the requirements either hardware or
software.
• Involves representing the software system
functions in a form the may be transformed into
executable programs.
• Identifying and describing fundamental software
system abstraction and there relationships.
15. Waterfall Model Stages
Stage 3: Implementation and unit testing
• Implementation consists of converting the
physical designing into set of actual programs
and a set of database tables.
• The software is realized as a set of programs
or program units.
• Unit testing involves verifying that each unit
meets it’s requirements.
16. Waterfall Model Stages
Stage 4: integration and system testing
• Individual program units are integrated and
tested as a complete system.
• Ensure the software requirements have been
met.
• After testing the software system is delivered
to the customer.
17. Waterfall Model Stages
Stage 5: Operation and maintenance
• The system installed and put into practical use.
• Involved correcting errors which were not
discovered in earlier stages.
• Improving implementation as new requirements
are discovered.
• Normally this is the longest life cycle phase.
18. Extended Waterfall Model
• Due to the above discussed disadvantages, the
waterfall model was modified with the
concept of backtracking.
• As a result, the Extended Waterfall Model
introduced.
20. Prototype Model
Prototype is a working model of the actual
System
There are two types of prototype model.
1. Throw away prototype model
2. Evolutionary prototype model
22. Throw away prototype model
• Prototype is used to gather requirements and
there after it will be thrown away.
• Further designing, construction and
implementation will be done using the normal life
cycle stages.
• Requirements gathering can be exactly done by
using the prototype.
• Even to develop prototype consumes lot of time
and effort , therefore once a prototype is thrown
away it’s a waste of time and money.
24. Evolutionary prototype model
• Prototype is used to gather requirements and
it will become the final system.
• Both the prototyping process as well as the
development process will be combine
together.
• Prototype will not be thrown away and it is
not wasting effort and cost like throw away
prototype.
26. Rapid application development model (RAD)
• This is a software process model which uses to
develop applications rather quickly.
• The entire system is broken down into several
manageable stages and each stage analyzed,
designed, developed, tested and implemented
simultaneously
Rapid Application Development (RAD)
27. Stages in the RAD
1. Business modeling
• The information flow among business
functions is modeled.
• Find answers for the following questions:
What information drives the business process?
What information is generated?
Who generate it?
Where does information go?
Who process it?
28. Stages in the RAD
2. Data modeling
• The information flows are refined into set of
data objects.
• The attributes of each objects and
relationships between these objects defined.
29. Stages in the RAD
3. Process modeling
• The data objects are transformed to achieve
the information flow necessary to implement
the business function.
• Processes are created for adding, modifying,
deleting and retrieving data objects.
30. Stages in the RAD
4. Application generation
• Using fourth generation techniques rather
than using conventional third generation
programming languages.
• In possible cases automated tools/reusable
components are use to facilitate construction
of the software. (Ex: DB query tools, reports,
graphics manipulation, interface designs)
31. Stages in the RAD
5. Testing and turnover
• Since the RAD process use many reusable
components that have been tested, it reduces
the overall testing time.
• How ever the new components should be
tested.
Maintenability
Ability to evolve with the changing needs of the customer
Dependability
What it is depends on
Efficiency
Efficiency is the ability of the software to do the required processing on least amount of hardware.
Usability
Usability is the ability of a software to offer its interfaces in a user friendly and elegant way.
Security
Security is the ability of the software to remain protected from unauthorized access. This includes both change access and view access.
Reliability
High Reliability is the measure of how a product behaves in varying circumstances.
Robustness
Robustness is defined as the ability of a software product to cope with unusual situation.
Customizability
Customizability is the ability of a software to offer extensions to existing functionality to better suite the needs of a user.
Scalability Scalability is the ability of the software to cater for heavier processing loads as the needs arise.
Accessibility Accessibility is the ability of a software to be accessible from a multitude of devices and for a number of different types of users.
Extensibility (Data model) Extensibility is the ability of the software to be extended beyond the functionality of the original product.