Software Engineering
Software Engineering
Classification of Software
System Software – Set of programs to control and
Software manage the operations of computer hardware.
Example: Operating Systems, device drivers (printers)
etc.
System S/w Application S/w
Application Software – It is created to perform specific
tasks for a user. Example: MS Word, Photoshop etc
Operating Systems Communication S/w
Characteristics of Software
Definition by IEEE (Institute of Electrical and Electronics Engineers): The application of systematic,
disciplined, quantifiable approach to the development, operation, maintenance of software that is the
application of engineering to the software.
i. The legacy challenge: The challenging method of maintaining and updating the software in such a way
that high costs are avoided and essential business services continue to be delivered.
ii. The Heterogeneity challenge: Systems are required to operate as distributed systems across networks.
The challenge of developing techniques to build dependable software which is flexible to cope with is
called heterogeneity.
iii. The delivery challenge: A challenge of shortening delivery time for large and complex systems without
Software Product
Software products are software systems that are delivered to a customer with documentation which describes
how to install and use this system.
These products are developed in organizations and These products are developed for a single customer
sold in the open market to any customer who is able according to their specification.
to
buy them.
These are stand alone systems; the target is generally These are customized products
how many copies are being sold.
These products are developed for anonymous These products are designed as per customer’s
customers requirement by software contractor.
Example: Operating Systems, Word Example : Payroll system, Inventory system, Air
Processors, drawing packages traffic control system etc
etc
Software Process
The process involves translating user needs into software requirements, transforming software requirements
into design, implementing design in code, testing the code and installing then checking out the software for
operations.
Software Specification
There are 4 fundamental process activities
--Software Specification: Functions of the software and its constraints will
defined. Software Development
--Software development: The software to meet the specification must be
produced.
--Software validation: The software must be validated to ensure what Software Validation
customer wants.
--Software Evolution: The software must evolve to meet changing customer
needs. Software Evolution
Requirement Analysis
System Design
Development
Testing
Deployment
Maintenance
3. System Design: Software architecture is derived from SRS document. A new system is
designed according to the needs of the user.
4. Development: This is the actual phase where the system is developed. The whole design is built
and implemented.
5. Testing: During implementation phase each module of the design is coded and each module is unit
tested individually. This is to check if each individual module works correctly. This is the most
critical phase.
6. Deployment: The developed system is handed over to the client. The old system is dispensed and
the new system is put to operations and used.
7. Software Maintenance: In this phase adding enhancements, improvements and updates to the
new versions are done.
Different types of SDLC Models are: 1) Waterfall Model, 2) Prototype model, 3) Prototype model, 4)
Iterative enhancement model
……………………………………………………………………………………………………………………
Waterfall Model
……………………………………………………………………………………………………………………
This model is a software life cycle where the stages are depicted as cascading from one to
another. It was described by W.W. Royce in 1970. As the figure implies one development stage
should be completed before the next begins.
Requirement Analysis
System Design
Coding
Unit/System Testing
Deployment
Maintenance
[Follow the same theory notes as given for SDLC]
Advantages of Waterfall Model
i. Easy to explain to the user.
ii. Stages and activities are well defined
iii. Verification at each stage ensures early detection of errors
iv. Widely used to identify and meet the milestones
v. Establishes communication between customer and developer to meet the specifications.
……………………………………………………………………………………………………………………
Boehmia’s Spiral Model
……………………………………………………………………………………………………………………
• Spiral model was proposed by Boehm in 1988.
• Each loop in the spiral represents a phase of the software process.
• Innermost loop is concerned with system feasibility, next loop system requirement, followed by
system design and so on
……………………………………………………………………………………………………………………
Prototype Model
……………………………………………………………………………………………………………………
Prototype is a partially developed product /dummy model that allow customers and developers to analyze if
the proposed system is suitable for the finished product.
➢ A prototype is a toy implementation which is built before starting actual development.
➢ The reason for developing a prototype is it is impossible to “get it right” the first time; we must plan
to throw away the first product in order to develop a good product.
➢ The developed prototype is submitted to the customer/user for evaluation, based on the customer
feedback the model is modified/refined. The cycle continues until the customer approves the
prototype.
Requir
ement
Gathering
Quick Design
Design
Implementation
Test
Maintenance
Advantages of Prototype Model
i. Modification in prototype is faster.
ii. Helps determine feasibility of the system.
iii. Software Developers commitment is higher.
……………………………………………………………………………………………………………………
Risk Management
……………………………………………………………………………………………………………………
What is a Risk?
“Risk is the potential future harm that may arise from some present action”.
Risk management plays an important role in software development. There are several types of risks:
1) Project risks –Affects project resources/schedule.
2) Product risks- Affects quality or performance of software being developed.
3) Business risks- Affects organization development.
4) Generic risks- Affects overall project. Example: Loss of team members, loss of funding.
Important Questions
1. Explain different phases of SDLC with a neat diagram.
2. Explain Waterfall model with Spiral model with its advantages and disadvantages.
3. What is Software Process? What are the activities involved in software process?
4. What are the key challenges facing Software Engineering?
5. Write short notes on Risk management.
Chapter 2
System Engineering
Definition: System – A System is a collection of inter related components that work together to
achieve some objective.
A system may include software, mechanical, electrical and electronic hardware and be operated
by people. Example – Security Camera.
Emergent properties
Properties of the system as a whole rather than properties that can be derived from the properties
of components of a system. Some examples of emergent properties are:
The overall weight of the system
• This is an example of an emergent property that can be computed from individual
component properties.
The reliability of the system
• This depends on the reliability of system components and the relationships between the
components.
The usability of a system
• This is a complex property which is not simply dependent on the system hardware and
software but also depends on the system operators and the environment where it is used.
1. Partition Requirements: Analyze the requirements and organize them into related groups.
2. Identify sub-systems: Identify sub-systems that can individually or collectively meet the
requirements.
3. Assign Requirements to subsystem: Assign the requirements to each identified sub-system.
4. Specify sub-system functionality: Relationship between the sub-systems should be identified at this
stage which can collectively meet the system requirements.
5. Define sub-system interface: Once defining the sub-system interface have been agreed, parallel
development of the sub-system becomes possible.
Sub-system development
System Integration
The process of putting hardware, software and people together to make a system.
Integration can be done in 2 ways:
1. Big Bang Method- All the sub-systems are integrated in the same way.
2. Incremental Integration- Sub-systems are integrated one at a time; it reduces the cost of
Error location.
Once the components have been integrated, System Testing takes place.
System Installation
It is the activity of installing the system in the environment in which it is intended to operate.
Some of the problems that can arise during installations are:
• Environmental assumptions may be incorrect.
• May be human resistance to the introduction of a new system.
• System may have to coexist with alternative systems for some time.
• May be physical installation problems (e.g. cabling problems).
• Operator training has to be identified.
System Evolution
• Large systems have a long lifetime. They must evolve to meet changing
requirements Evolution is inherently costly for the following reasons:
• Changes must be analyzed from a technical and business perspective
• Sub-systems interact so unanticipated problems can arise
• System structure is corrupted as changes are made to it, hence its cost changes.
• Existing systems which must be maintained are sometimes called legacy systems.
System Decommissioning
• System Decommissioning means taking the system out of service after the end of its
useful operational lifetime.
• Example : For hardware systems this may involve de-assembling and recycling materials.
• May require data to be restructured and converted so that it can be used in some other system.
System Procurement
Definition: Acquiring a system for an organization to meet some need/requirement is called System
Procurement.
Some System specification and architectural design is usually necessary before procurement
• You need a specification to let a contract for system development
• The specification may allow you to buy a commercial off-the-shelf (COTS) system, always cheaper
than developing a system from scratch.
Procurement issues
• Requirements may have to be modified to match the capabilities of off-the-shelf components.
• There is usually a contract negotiation period to agree changes after the contractor to build
a system has been selected
Human Factors
Human Factors
Process changes: In a organization a change in the process can result in job loss of the workers, as they
lack training in the new system which becomes difficult for them to cope.
Job changes: As new and faster systems are introduced, the workers may have to change the way they
work.
Organizational changes: If a organization is dependent on a complex system, those who know how to
operate the system have a great deal of power in the organization.
…………………………………………………………………………………………………………….
Definition: Software Requirement Specification – A structured document setting out detailed descriptions of
the system services written as a contract between client and contractor.
Functional Requirements:
*Statements of services the system should provide how the system should react to particular inputs and how the
system should behave in particular situations.
*The Functional requirements of the system describe what the system should do.
*It depends on the type of software, expected users and the type of system where the software is used.
*Functional user requirements may be high-level statements of what the system should do but it should describe
the system services in detail.
Product requirements
• Requirements which specify that the delivered product must behave in a particular way e.g.
execution speed, reliability etc.
Organizational requirements
• Requirements which are a consequence of organizational policies and procedures e.g. process
standards used, implementation requirements etc.
Software Requirement Specification
Outline Structure of Software Requirement Specification
Definition: SRS is a formal document, which acts as a representation of software that enables the users to review whether
it (SRS) is according to their requirements.
A structured document setting out detailed descriptions of the system services written as a contract between
client and contractor.
Characteristics of SRS
1. Correct: Correctness ensures that all specified requirements are performed correctly to meet the software.
2. Unambiguous: SRS is unambiguous when every stated requirement has only one interpretation. This implies that each
requirement is uniquely interpreted.
3. Complete: SRS is complete when the requirements clearly define what the software is required to do. This includes all the
requirements related to performance, design and functionality.
Components of SRS
Functionality
Environment and System Objectives
System Delivery and Installation
Design constraints
External interface requirements
Conceptually, any SRS should have these components. Now we will discuss them one by one.
1. Functionality:
• Procedures for starring up and closing down the system.
• Operations on Normal condition.
• Operations on abnormal conditions.
2. Environment and System Objectives
• Physical Attributes of the environment : size, shape and locality
• Safety/Security/Hazards
3. System Delivery and Installation
• Examples of these requirements are: Deadlines/ Quality assurance/ document
structure/ standards/training/manuals/ support and maintenance.
4. Design Constraints
• Hardware/Software standards, particular libraries, operating systems to be used and compatibility issues.
5. Functional Constraints
• Properties are: Performance, efficiency, response times, safety, security, reliability, quality and dependability.
The process of establishing the services that the customer requires from a system and the constraints under
which it operates is called Requirement Engineering process.
1. Feasibility study: The study determines whether or not a system is financially worthwhile and technically
feasible.
It is the study that checks A) If the system contributes to organizational objectives. B) If the system can be engineered
using current technology and within budget. C) Based on information assessment (what is required), information collected
a brief report is written.
A feasibility study is conducted to answer many questions like
• What are current process problems?
• How will the proposed system help?
• What will be the integration problems?
• Is new technology needed? What skills?
• What facilities must be supported by the proposed system?
1.
Requirement
Discovery
[Link] [Link]
nt
s Specification
Classification
&
organization
[Link]
Prioritization
and
Negotiation
2. Requirement Elicitation and Analysis:
Activities involved in Elicitation and Analysis are
➢ Requirement Discovery
➢ Requirement classification and organization
➢ Requirement prioritization and negotiation
➢ Requirement Specification
The process involves technical staff working with
customers to find out about the application domain,
the services that the system should provide and the
system’s operational constraints.
It may involve end-users, managers, engineers
involved in maintenance, domain experts, trade
unions, etc. These are called stakeholders.
1. Interactive View points : Represents people or other systems that interact directly with the system. EX : In a
bank ATM , the banks customer and banks account database.
2. Indirect view points : Represents stakeholders who do not use the system directly but influence the system in
some way. EX : Management of the bank and bank security staff.
3. Domain view points : Represents domain characteristics and constraints that influence system requirements. EX:
Standards that have been developed for inter banking communication like ATM.
The example used here is an auto-teller system which provides some automated banking services. Services include cash
withdrawal, message passing (send a message to request a service), ordering a statement and transferring funds.
Auto- teller Viewpoints
Bank customers
Representatives of other banks
Hardware and software maintenance engineers
Marketing department
Bank managers and counter staff
Database administrators and security staff
Communications engineers
Personnel department
2. Scenarios
Scenarios are descriptions of how a system is used in practice.
They are helpful in requirements elicitation as people can relate to these more readily than abstract statement of what they
require from a system.
Scenarios are particularly useful for adding detail to an outline requirements description.
Scenario Descriptions
▪ System state at the beginning of the scenario
▪ Normal flow of events in the scenario
▪ What can go wrong and how this is handled
▪ Other concurrent activities
▪ System state on completion of the scenario
3. Ethnography
Definition: “Ethnography is an observational technique that is used to understand social and organizational requirement.”
Ethnographic studies have shown that work is usually richer and more complex than suggested by simple system models.
These are the Requirements that are derived from the way that people actually work.
Ethnographic requirements are derived from cooperation and awareness of other people’s activities.
Mathematical specifications These are notations based on mathematical concepts such as finite-state machines or
sets.
Requirement Validation
Requirement Validation is concerned with demonstrating the requirements that define the system which customer really
wants. Requirements error costs are high so validation is very important i.e. fixing a requirements error after delivery may
cost up to 100 times the cost of fixing an implementation error.
Requirements reviews
▪ Systematic manual analysis of the requirements
▪ Reviews here can also check for a)Verifiability, b)Comprehensibility, c)Traceability and d)Adaptability
Prototyping
▪ Using an executable model of the system to check requirements.
Test-case generation
▪ Developing tests for requirements to check testability, if a test is difficult or impossible to design that means
requirements are unrealistic.
Enduring requirements- Stable requirements derived from the core activity of the customer organization. E.g. a
hospital will always have doctors, nurses, etc. May be derived from domain models.
Volatile requirements - Requirements which change during development or when the system is in use. In a
hospital, requirements derived from health-care policy etc
•Common coding errors found here are typing mistakes, statement omission,
wrong logical operator.
•Pre-defined strategy (top-down/bottom-up) are used.
Final phase : Software use or operation and maintenance.
•Innermost loop is concerned with System feasibility, next loop system requirement, next
loop system design and so on
Ex: A prototype system (Toy like implementation with limited functional capabilities and
low reliability just for the purpose of examining)
3. Development and Validation – Choosing the most appropriate development model.
4. Planning – Project is reviewed and decisions are made whether to continue with
further loop of the spiral.
Advantages and disadvantages (text)
Identifying risks and drawing up plans to minimize their effect on the project is called
Risk management.
Categories of risk can be defined as follows :
3. Risk planning : Addresses the risk either by avoiding it or minimizing its effects.
4. Risk monitoring : Risk is constantly assessed and information about the risk
becomes available.
Risk Identification
•This may be carried out as a brainstorming approach or may simply be based on
a manager’s experience. They include :
1. Technology risks : Risks which derive from the software or hardware technologies.
Risk Analysis
low (10-25%)
moderate (25-50%)
high(50-75%)
Software is not just the programs but also all associated documentation and
configuration data which is needed to operate programs correctly.
Software products may be developed for a particular customer or may be developed
for a general market.
Software products may be
Sold on the open market to any customer who is able to buy them.
Examples : product include database, word processors, drawing packages etc
• Bespoke (customized) -Software contractor develops for customer.
-Developed for a single customer according to their specification.
❖ Heterogeneity challenge
Delivery challenge
Software systems which are intended to provide automated support for software
process activities.
CASE systems are often used for method
support Upper-CASE
• Tools to support the early process activities of requirements and
design Lower-CASE
• Tools to support later activities such as programming
b) Dependability
c) Efficiency
Software engineers must behave in an honest and ethically responsible way if they are to
be respected as professionals.
Ethical behavior is more than simply upholding the law.
[Link] : Engineers should normally respect the confidentiality of their employers
or clients irrespective of whether or not a formal confidentiality agreement has been
signed.
3. Intellectual property rights : Engineers should be aware of local laws governing the use
of intellectual property such as patents, copyright, etc. They should be careful to ensure
that the intellectual property of employers and clients is protected.
[Link] misuse : Software engineers should not use their technical skills to misuse
other people’s computers. Computer misuse ranges from relatively trivial (game playing on
an employer’s machine, say) to extremely serious (dissemination of viruses).
System Engineering
Definition System: A System is a collection of inter related components that work together
to achieve some objective.
A system may include software, mechanical, electrical and electronic hardware and be
operated by people. Example – Security Camera
Definition: System Engineering – The activity of designing, implementing, validating,
installing and maintaining systems as a whole is known as System Engineering.
* Systems are not independent but exist in an environment
• Sensor components
• Actuator components
• Computation components
• Communication components
• Co-ordination components
• Interface components
System components
Sensor components
Sensor
Actuator
• Siren
Communication
• Telephone caller
Coordination
• Alarm controller
Interface
• Voice synthesizer
System requirements definition
Three types of requirement defined at this stage
• System properties. Non-functional requirements for the system in general are defined
System objectives
Functional objectives
• To provide a fire and intruder alarm system for the building which will provide internal
and external warning of fire or unauthorized intrusion.
Organizational objectives
• To ensure that the normal functioning of work carried out in the building is not
seriously disrupted by events such as fire and unauthorized intrusion.
•Identify sub-systems
•Identify a set of sub-systems which collectively can meet the
• system requirements
Assign requirements to sub-systems
Sub-system development
Bureaucratic and slow mechanism for proposing system changes means that the
development schedule may be extended because of the need for rework.
System integration
System operation
Users may use the system in a way which is not anticipated by system designers.
May reveal problems in the interaction with other systems.
• Physical problems of incompatibility
• Large systems have a long lifetime. They must evolve to meet changing
requirements Evolution is inherently costly.
• Changes must be analyzed from a technical and business perspective
• System structure is corrupted as changes are made to it, hence its cost
changes. Existing systems which must be maintained are sometimes called
legacy systems.
System Decommissioning
May require removal of materials (e.g. dangerous chemicals) which pollute the
environment.
• Should be planned for in the system design by encapsulation.
May require data to be restructured and converted to be used in some other system.
IEEE Standards suggests the following structure for SRS document
1. Introduction
1.1 Purpose of the requirement’s document.
1.2 Scope of the product.
1.3 Definitions, acronyms and abbreviations.
1.4 References
1.5 Overview of remainder of the document.
2. General Description
2.1 Product perspective.
2.2 Product functions.
2.3 User characteristics.
2.4 General constraints.
2.5 Assumptions and dependencies.
3. Specific Requirements
3.1 Functional requirements
3.2 Non Functional requirements
3.3 Interface requirements
4. Appendices
5. Index
The process of establishing the services that the customer requires from a system and the
Constraints under which it operates is called Requirement Engineering process.
Domain Understanding : The analyst must understand the Background Knowledge of the
application.
Requirement Collection : Gathering the requirement by involving the users and stakeholders.
Requirement conflicts : Involves stakeholders and engineers to solve the problems that contradict
the organization and business rules.
2. Indirect view points : Represents stakeholders who do not use the system directly but
influence the system in some way. EX : Management of the bank and bank security
staff.
• Enduring Requirements
• Volatile Requirements
CLASSIFICATION OF VOLATILE
REQUIREMENT
SYSTEM MODELS
Definition : “
System models are graphical representation that describes
business processes, the problem to be solved and the system that is
to be developed.”
CHAPTER 4
SOFTWARE PROTOTYPING
PROTOTYPE DEFINITION :
A prototype is an enact able mock-up , toy like implementation
and dummy model that enables evaluation of features or functions
through user and developer interaction with operational scenario.
PROTOTYPE CHARACTERISTICS
➢ It is an incomplete model.
[Link]
[Link]
[Link]
[Link]
1. Cohesion : Measures the semantic strength of
[Link] Cohesion
[Link] Cohesion
[Link] Cohesion
[Link] Cohesion
[Link] Cohesion
6. Sequential Cohesion
[Link] Cohesion
1. Coupling : Measures the strength of all
1. Tight Coupling
2. Loose Coupling
Classification of failures
[Link] Failure
5. Corrupting Failure
Definition :
6. AVAIL - Availability