Software Engineering
Software Engineering
Software Engineering
- Software engineering is concerned with software systems, which are built by teams
rather than individual programmers, uses engineering principles in the development
of these systems, and is made up of both technical and non-technical aspects.
There are 4 fundamental process activities which are common to all software process:
(1) Software specification - The functionality of the software and constraints on its
operation must be defined.
(2) Software development - The software to meet the specification must be produced.
(3) Software validation - The software must be validated to ensure that it does
what the user wants.
(4) Software evolution - The software must evolve to meet changing customer
needs.
1
(1) Waterfall Approach (Life-cycle Model)
- The system’s services, constraints, and goals are established by consultation with
system users and define them in an understandable manner.
- During this stage, the software design is realized as a set of programs or program
units that are written in some executable programming language.
- Unit testing involves verifying that each unit meets its specification.
- The individual program unit or programs are integrated and tested as a complete
system to ensure that the software requirements have been met.
- The activities of verification and validation (V & V activities) pervade the earlier
lifecycle stages.
- Verification checks, if the product which is under-construction , meets the
requirement definition.
- Validation checks, if the product functions are what the customer really wants.
- After testing, the software system is delivered to the customer.
- During the final lifecycle phase, information is fed back to all previous development
phases.
- This final phase is an operational phase where the software is put into use.
- During this use, errors and omissions in the original software requirements are
discovered, program and design errors come to light and the need for new software
functionality is identified.
- This software modification activity is called ‘software maintenance’.
- The development stages overlap and feed information to each other.
- Thus the software development process is not a simple linear model and it may
involve a sequence of iterations of the development activities.
2
Requirement
Design
Implementation
Testing
Maintenance
(1) Existing software management structures are set up to deal with a software
process model which results in regular deliverables. In EP, it is not cost-
effective to produce a great deal of system documentation as the system is
subject to regular change.
(2) EP tends to result in systems whose structure is not well-defined. The reason
for this is that continual change corrupts the initial software structure. This
means that maintenance of such system is difficult and costly in large systems
where the system maintainers may not be the original developers.
- Another potential problem is that most users of this approach have been highly
qualified and skilled.
3
Develop Outline Build Software Use Software
Specification System System
No
System
adequate
Yes
Deliver Software
System
Software Evolution
(2 )Increasing complexity
- As an evolving program changes, its structure become complex unless active effort
are made to avoid this phenomenon.
4
(5) Conservation of familiarity
- Over the lifetime of a system, the incremental system change in each release is
approximately constant.
Software Reliability
A requirement specification - is a statement in a more formal notation which sets out the
system services in more detail. This document (also called a
functional specification) should be precise to be a contract
between the system procurer and software developer and it is
reasonable to assume some understanding of the software
engineering process on the part of the procurer.
5
The software requirement document
Introduction
- showing the relationships between the system components and the system and its
environment graphically.
Functional requirements
Non-functional requirements
Hardware
- special hardware
- its interfaces
6
Database requirements
Maintenance information
- hardware evolution
- changing user needs
Glossary
Index
System Model
Viewpoint Analysis
- When formulating a system model, an engineer must realize that the sources of
information about that system do not normally think about in a top-down manner.
- There are different ways of looking at the system to contribute to make system
understanding.
- A viewpoint is any angle from which a system might be considered, so possible
viewpoints might be human users, sensors associated with the system, or other
computer systems connected to the system being analyzed.
E.g. – Automated Teller Machines (ATM), there are 3 major viewpoints to be considered.
7
- Within each viewpoint, there may be sub-viewpoints.
- There are 3 rules to perform a viewpoint analysis :
V0
Auto-Teller System
V011 V012
Home bank user Foreign bank user
(3) Prototyping
- Prototyping is a process that enables the developer to create a model of the software
to be built.
- The model can take one of the three forms:
3. “an existing program” – that performs part or all of the functions desired but has
other features to be improved upon in the new development effort.
8
- A process of iteration occurs as the prototype is “tuned” to satisfy the needs of the
customer and also enabling the developer to understand better what needs to be done.
- The prototype serves as a mechanism for identifying software requirements.
- If a working prototype is built, the developer attempts to use existing program
fragments to be able to generate quickly.
- The prototype can serve as “the first system”.
- It is then to be discarded and the actual software engineer toward quality and
maintainability.
Requirement
gathering
Quick design
Built
prototype
Engineer
products
Benefits of using a prototype
Other uses
(1) User training - A prototype system can be used for training users before the final
system has been delivered.
(2) System testing - Prototypes can run “back to back test”. This reduces the need for tedious
manual checking of test runs. The same test cases are submitted to both
the prototype and the system under test. If both systems give the same
result, the test case has not detected a fault. If the results are different,
the tester should look in more detail at the reasons for the difference.
- one way to view prototyping is as a technique of risk reduction that prototyping reduces
the number of problems with the requirements specification and the overall development
cost may be lower if a prototype is developed.
9
(4) Formal Transformation
Mathematical Notation
Development System
& integration validation
10