SEBook
SEBook
net/publication/330994015
CITATIONS READS
2 19,536
1 author:
Dr H Shaheen
University of West London
49 PUBLICATIONS 62 CITATIONS
SEE PROFILE
All content following this page was uploaded by Dr H Shaheen on 28 October 2019.
ISBN-13: 978-93-87610-28-6
FIRST EDITION, NOVEMBER 2018, INDIA
All rights reserved. No part of this publication may be reproduced, stored in a retrieval
system or transmitted, in any form or by any means, electronic, mechanical, photo-
copying, recording or otherwise, without the prior permission of the Publishers & Author.
REGISTERED OFFICE
154, Tezabmill Campus, Anwarganj, KANPUR – 208003 (UP) (IN)
Mb: 9899936803, Web: www.vsrdpublishing.com, Email: vsrdpublishing@gmail.com
MARKETING OFFICE
340, FF, Adarsh Nagar, Oshiwara, Andheri(W), MUMBAI–400053 (MH)(IN)
Mb: 9956127040, Web: www.vsrdpublishing.com, Email: vsrdpublishing@gmail.com
PREFACE
Author(s)
ACKNOWLEDGEMENT
Author(s)
CONTENTS
Definition of software
Software is a set of items or objects that form a “configuration” that
includes
Programs
Documents
Data
Software’s Dual Role
Software is a product
o Delivers computing potential
o Produces, manages, acquires, modifies, displays, or
transmits information
Software is a vehicle for delivering a product
o Supports or directly provides system functionality
o Controls other programs (e.g., an operating system)
o Effects communications (e.g., networking software)
o Helps build other software (e.g., software tools)
Software Characteristics
Software is developed or engineered; it is not manufactured in the
classical sense.
Although some similarities exist between software development &
hardware manufacturing both the activities are different. In both
2/ Introduction to Software Engineering
Management Myths:
Myth (1)
Already we have a book of standards and procedures for building
software wont that provide my people with everything they need to
know?
Reality: The book of standards may very well exist but is it used?
Are software practitioners aware of its existence? Is it complete? Is it
adaptable?
Myth (2)
If we get behind schedule we can add more programmers and can
catch up.
Reality: As new people are added, people who were working must
spend time educating the newcomers, thereby reducing amount of
time spent on productive development effort.
Myth (3)
Outsourcing the software project to third party, we can relax and let
that party build it.
Reality: If an organization doesn’t understand how to manage and
control software projects internally, will face struggle when it
outsources projects.
Customer Myths:
Myth (1)
General statement of objective is enough to begin writing programs,
the details can be filled in later.
Reality: Unambiguous requirements can be developed only through
efficient and continuous communication between developer and
customer.
Myth (2)
Software requirements continually change but change can be easily
accommodated because software is flexible.
Reality: When requirement changes are requested early cost impact
is relatively small. However as time passes cost impact grows rapidly.
Practitioner Myths:
Myth (1)
6/ Introduction to Software Engineering
Umbrella activities
Software project tracking and control: asses progress against
project plan and take necessary action to maintain schedule.
Formal technical reviews: Assesses software engineering work
products in an effort to uncover or remove errors before they
are propagated to next action.
Software quality assurance: defines and conducts activities
required to ensure quality
Software configuration management; manages change
throughout the process.
Work product preparation and production: encompasses
activities required to create work products such as documents,
forms, logs reports etc.
Reusability management: Defines criteria for work product reuse
and establishes mechanisms to achieve reusable components.
Measurement: Defines and collects process, project and product
measures that assist team in delivering software that meets
customer needs
Risk management: assesses risks that may affect outcome of
project and quality
Capability Maturity Model Integration (CMMI)
Developed by SEI(Software Engineering institute)
Assess the process model followed by an organization and rate
the organization with different levels
A set of software engineering capabilities should be present as
organizations reach different levels of process capability and
maturity.
CMMI process Meta model can be represented in different ways
A continuous model
A staged model
Continuous model:
Levels are called capability levels.
Describes a process in 2 dimensions
Introduction / 11
Each process area is assessed against specific goals and practices and
is rated according to the following capability levels.
Six levels of CMMI
Level 0:Incomplete
Level 1:Performed
Level 2:Managed
Level 3:Defined
Level 4:Quantitatively managed
Level 5:Optimized
INCOMPLETE
Process is adhoc. Objective and goal of process areas are not
known
Performed
All the specific goals and practices process area have been satisfied
but performance may not be stable they do not meet some specific
objectives such as quality, cost and schedule
Managed
Activities are monitored, reviewed, evaluated and controlled to
achieve a given purpose and cost, schedule, quality are maintained.
These companies have some planned processes within teams and
teams are made to represent them for projects handled by them.
However processes are not standardized across organization.
Defined
12 / Introduction to Software Engineering
All level2 criteria have been satisfied and in addition process is well
defined and is followed throughout the organization
Quantitatively Managed
Metrics and indicators are available to measure the process and
quality
Optimized (Perfect & Complete)
Continuous process improvement based on quantitative feedback
from the user
Use of innovative ideas and techniques, statistical quality control
and other methods for process improvement.
In addition to specific goals and practices for each process area 5
generic goals correspond to capability levels. In order to achieve a
particular capability level the generic goal for that level and generic
practices correspond to the goal must be achieved.
Staged model
This model is used if you have no clue of how to improve the
process for quality software.
It gives a suggestion of what things other organizations have
found helpful to work first
Levels are called maturity levels
Introduction / 13
Process Patterns
The software process can be defined as a collection of patterns
that define a set of activities, actions, work tasks, work products
and/or related behaviors.
A process pattern provides us with a template. A consistent
method for describing an important characteristic of s/w process.
Patterns can be defined at any level of abstraction. In some cases
it is used to define complete process (e.g. prototyping).In other
situations patterns can be used to describe an important
framework activity(e.g. planning) or a task within a framework
activity(e.g. project-estimating).
Pattern Template
Pattern Name: The pattern given a meaningful name that
describes its function within the software process. (e.g.
requirements unclear)
Intent: The objective of pattern is described briefly. For ex the
objective of pattern is to build a model that can be assessed
iteratively by stakeholders.
Type: pattern type is specified. Suggests 3 types
Task pattern: defines a software engineering action or work task
that is part o process (e.g. requirements gathering)
Stage pattern: defines a framework activity for the process (e.g.
communication)
Phase Pattern: defines sequence of framework activities that
occur with the process (ex spiral model or prototyping)
Initial Context: The condition under which pattern applies are
described. Prior to initiation of pattern the following conditions
must be met
For ex:1) stakeholders have been identified 2) mode of
communication between software team and stakeholder has been
established. 3) Problem to be solved has been identified by
stakeholders.4) an initial understanding of requirements has been
developed
Problem: The problem to be solved by pattern is described.
14 / Introduction to Software Engineering
PROCESS ASSESSMENT
Software Process
Software Process
Assessment
and tracked.
High level design review: Formal verification methods are applied to
uncover errors in the design. Metrics are maintained for all
important tasks and work results.
Development: The component level design is refined and reviewed.
Code is generated, reviewed, compiled, and tested. Metrics are
maintained for all important task and work results.
Postmortem: Using the measures and metrics collected the
effectiveness of the process is determined. Measures and metrics
should provide guidance for modifying the process to improve its
effectiveness.PSP stresses the need for each software engineer to
identify errors early and, as important, to understand the types of
errors that he is likely to make.
PSP represents a disciplined, metrics-based approach to software
engineering.
Team software process (TSP): The goal of TSP is to build a “self-
directed project team that organizes itself to produce high-quality
software. The following are the objectives for TSP:
Build self-directed teams that plan and track their work, establish
goals, and own their processes and plans. These can be pure
software teams or integrated product teams (IPT) of 3 to about
20 engineers.
Show managers how to coach and motivate their teams and how
to help them sustain peak performance.
Accelerate software process improvement by making CMM level
5 behaviors normal and expected.
Provide improvement guidance to high-maturity organizations.
Facilitate university teaching of industrial-grade team skills.
A self-directed team defines:
Roles and responsibilities for each team member.
Tracks quantitative project data.
Identifies a team process that is appropriate for the project.
A strategy for implementing the process.
Introduction / 17
Disadvantages:
Real projects rarely follow the sequential flow since they are
always iterative
The model requires requirements to be explicitly spelled out in
the beginning, which is often difficult
A working model is not available until late in the project time
span
THE INCREMENTAL PROCESS MODEL
Linear sequential model is not suited for projects which are
iterative in nature
Incremental model suits such projects
Used when initial requirements are reasonably well-defined and
compelling need to provide limited functionality to users quickly
and then refine and expand on that functionality in later releases
It combines elements of waterfall model in an iterative fashion.
The incremental model applies linear sequences in a staggered
fashion as calendar time progresses. Each linear sequence provides
deliverable increments of software. For ex word processing software
developed sing incremental paradigm might deliver basic file
management, editing and document production functions in 1st
increment ;more sophisticated editing and document production
capabilities in 2nd increment, spelling and grammar checking in 3rd
increment; etc
Introduction / 19
Construction
Team # 2 Component reuse
automatic code
generation
Communication Modeling testing
Business modeling
Data modeling
Process modeling
Construction
Planning Team # 1 Component reuse
automatic code
generation
testing
Modeling
Business modeling Deployment
Data modeling integration
Process modeling delivery
feedback
Construction
Component reuse
automatic code
generation
testing
12
Introduction / 21
20
24 / Introduction to Software Engineering
CHAPTER 2
Software Requirements
KEY CONCEPTS
2.1. TYPES OF REQUIREMENT................................................. 27
2.2. FUNCTIONAL AND NON-FUNCTIONAL REQUIREMENTS 28
2.3. FUNCTIONAL REQUIREMENTS ........................................ 28
2.4. NON-FUNCTIONAL REQUIREMENTS ............................... 29
2.5. NON-FUNCTIONAL CLASSIFICATIONS ........................... 29
2.6. DOMAIN REQUIREMENTS ............................................... 32
2.7. USER REQUIREMENTS...................................................... 34
2.8. SYSTEM REQUIREMENTS ................................................. 35
2.9. INTERFACE SPECIFICATION ............................................. 40
2.10. THE SOFTWARE REQUIREMENTS DOCUMENT................. 41
2.11. REQUIREMENTS ENGINEERING PROCESS ........................ 45
2.12. REQUIREMENTS ELICITATION AND ANALYSIS ............... 46
2.13. REQUIREMENTS DISCOVERY ........................................... 48
2.14. ETHNOGRAPHY ............................................................... 53
2.15. SYSTEM MODELS ............................................................. 58
2.16. CONTEXT MODELS .......................................................... 59
2.17. BEHAVIORAL MODELS .................................................... 61
2.18. STRUCTURED METHODS.................................................. 74
P
2.1.
documenting
the requirements is called requirements engineering
TYPES OF REQUIREMENT
User requirements
Statements in natural language plus diagrams of the services the
system provides and its operational constraints. Written for
customers.
System requirements
A structured document setting out detailed descriptions of the
28 / Introduction to Software Engineering
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.
Non-functional requirements
Constraints on the services or functions offered by the system
such as timing constraints, constraints on the development
process, standards, etc.
Domain requirements
Requirements that come from the application domain of the
system and that reflect characteristics of that domain
the developers of the system, and they may therefore implement the
requirement in the wrong way.
implemented
Natural language is often used to write system requirements
specifications as well as user requirements. However, because system
requirements are more detailed than user requirements, natural
language specifications can be confusing and hard to understand:
Natural language understanding relies on the specification
readers and writers using the same words for the same concept.
This leads to misunderstandings because of the ambiguity of
natural language ex shoes must be worn and dogs must be
carried.
A natural language requirements specification is over flexible.
You can say the same thing in completely different ways. It is up
to the reader to find out when requirements are the same and
when they are distinct
There is no easy way to modularize natural language
requirements. It may be difficult to find all related requirements.
Because of these problems, requirements specifications written in
natural language are prone to misunderstandings. These are often not
discovered until later phases of the software process and may then
be very expensive to resolve.
Software Requirements / 37
Graphical models are most useful when you need to show how state
changes or where you need to describe a sequence of actions.
Sequence diagrams
These show the sequence of events that take place during some
user interaction with a system.
You read them from top to bottom to see the order of the
actions that take place.
Cash withdrawal from an ATM
o Validate card,
o Handle request,
o Complete transaction.
40 / Introduction to Software Engineering
Almost all software systems must operate with existing systems that
have already been implemented and installed in an environment. If
the new system and the existing systems must work together, the:
interfaces of existing systems have to be precisely specified.
There are three types of interface: that may have to be defined:
1. Procedural interfaces where existing programs or sub-systems offer
a range of services that are accessed by calling interface procedures.
These interfaces are sometimes called Application Programming
Interfaces (APl).
Software Requirements / 41
Feasibility studies
For all new systems, the requirements engineering process should
start with a feasibility study. The input to the feasibility study is a
set of preliminary business requirements, an outline description
of the system and how the system is intended to support business
processes.
The results of the feasibility study should be a report that
recommends whether or not it is worth carrying on with the
requirements engineering and system development process
Technical feasibility: It is carried out to determine whether the
company has the capability in terms of software, hardware &
personnel expertise to handle completion of project.
Economic feasibility: I f benefits outweigh costs then decision is
made to implement.
Operational feasibility: How well a proposed system solves
problems?
In a feasibility study, you may consult information sources such
as the managers of the departments where the system will be
used, software engineers who are familiar with the type of system
that is proposed, technology experts and end-users of the
system. Normally, you should try to complete a feasibility study
in two or three weeks.
Interviewing
Interviews may be of two types:
Closed interviews where the stakeholder answers a predefined set
of questions.
Open interviews where there is no predefined agenda. The
requirements engineering team explores a range of issues with
system stakeholders and hence develops a better understanding
of their needs.
However, interviews are not so good for understanding the
requirements from the application domain.
It is hard to elicit domain knowledge during interviews for two
reasons:
All application specialists use terminology and jargon that is
specific to a domain. It is impossible for them to discuss domain
requirements without using this terminology. They normally use
terminology in a precise and subtle way that is easy for
requirements engineers to misunderstand.
Some domain knowledge is so familiar to stakeholders that either
they find it difficult to explain or they think it is so fundamental
that it is not worth mentioning. For example, for a librarian, it is
understood that all acquisitions are catalogued before they are
added to the library. However, this may not be obvious to the
interviewer so it is not taken into account in the requirements.
Effective interviewers have two characteristics:
They are open-minded, avoid preconceived ideas about the
requirements and are willing to listen to stakeholders. If the
stakeholder comes up with surprising requirements, they are
willing to change their mind about the system.
They prompt the interviewee to start discussions with a question.
Scenarios
Scenarios can be particularly useful for adding detail to an
outline requirements description. They are descriptions of
example interaction sessions. Each scenario covers one or more
possible interactions.
Software Requirements / 51
finishes.
Scenarios may be written as text, supplemented by diagrams,
screen shots, and so on.
Simple text scenario, consider how a user of the LIBSYS library
system may use the system. This scenario is shown in Figure 6.
Use-Cases
Use-cases are a scenario-based technique for requirements
elicitation which were first introduced in the objectory method
Use-case identifies the type of interaction and the actors
involved.
Use-cases identify the individual interactions with the system.
Actors in the process are represented as stick figures, and each
class of interaction is represented as a named ellipse. The set of
use-cases represents all of the possible interactions to be
represented in the system requirements.
2.14. ETHNOGRAPHY
requirements covered.
Test-case generation Developing tests for requirements to check
testability.
Requirements reviews
Regular reviews should be held while the requirements definition
is being formulated.
Both client and contractor staff should be involved in reviews.
Requirements reviews can be informal or formal.
Informal reviews simply involve contractors discussing
requirements with as many system stakeholders as possible.
In a formal requirements review, the development team should
'walk' the client through the system requirements, explaining the
implications of each requirement.
Reviewers may also check for:
o Verifiability. Is the requirement realistically testable?
o Comprehensibility. Is the requirement properly
understood?
o Traceability. Is the origin of the requirement clearly
stated?
o Adaptability. Can the requirement be changed without a
large impact on other requirements?
Requirements Management
The requirements for large software systems are always changing.
Requirements management is the process of understanding and
controlling changes to system requirements. You need to keep
track of individual requirements
Requirements are inevitably incomplete and inconsistent
o New requirements emerge during the process as business
needs change and a better understanding of the system is
developed;
o Different viewpoints have different requirements and
these are often contradictory.
Software Requirements / 55
with customers.
Different models present the system from different perspectives
o External perspective showing the system’s context or
environment;
o Behavioral perspective showing the behaviour of the
system;
o Structural perspective showing the system or data
architecture.
A system model is an abstraction of the system being studied
Examples of the types of system models that you might create
during the analysis process are:
o A data- flow model Data-flow models show how data is
processed at different Stages in the system.
o A composition model A composition or aggregation
model shows how entities in the system are composed of
other entities.
o An architectural model Architectural models show the
principal sub-systems that make up a system.
o A classification model Object class/inheritance diagrams
show how entities have common characteristics.
o A stimulus-response model a stimulus-response model,
or state transition diagram, shows how the system reacts
to internal and external events.
The problem with the state machine approach is that the number
of possible states increases rapidly. For large system models,
therefore, some structuring of these state models is necessary.
One way to do this is by using the notion of a super state that
encapsulates a number of separate states. This super state looks
like a single state on a high-level model but is then expanded in
more detail on a separate diagram. To illustrate this concept,
66 / Introduction to Software Engineering
Like all graphical models, data models lack detail, and you
should maintain more detailed descriptions of the entities,
relationships and attributes that are included in the model. We
may collect these more detailed descriptions in a repository or
68 / Introduction to Software Engineering
data dictionary.
Data dictionaries are generally useful when developing system
models
They may be used to manage all information from all types of
system models.
A data dictionary is simplistically, an alphabetic list of the names
included in the system models. As well as the name, the
dictionary should include an associated description of the named
entity and, if the name represents a composite object, a
description of the composition. Other information such as the
date of creation. The creator and the representation of the entity
may also be included depending on the type of model being
developed.
The advantages of using a data dictionary are:
It is a mechanism for name management. Many people may have
to invent names for entities and relationships when developing a
large system model. These names should be used consistently
and should not clash. The data dictionary software can check for
same uniqueness where necessary and warn requirements analysts
of name duplications.
It serves as a store of organizational information. As the system
is developed, information that can link analysis, design,
implementation and evolution is added to the data dictionary, so
that all information about an entity is in one place.
Software Requirements / 69
Object models
Object models describe the system in terms of object classes and
their associations.
An object class is an abstraction over a set of objects with
common attributes and the services (operations) provided by
each object.
Objects are executable entities with the attributes and services of
the object class. Objects are instantiations of the object class, and
many objects may be created from a class.
In object-oriented requirements analysis, we should model real-
world entities
Using object classes.
Various object models may be produced
o Inheritance models;
o Aggregation models;
o Interaction models.
An object class in UML, as illustrated in the examples in Figure
8.10, is represented as a vertically oriented rectangle with three
70 / Introduction to Software Engineering
sections:
o The name of the object class is in the top section.
o The class attributes are in the middle section.
o The operations associated with the object class are in the
lower section of the rectangle.
Object class identification is recognized as a difficult process
requiring a deep understanding of the application domain
Inheritance Models
Object-oriented modeling involves identifying the classes of object
that are important in the domain being studied. These are then
organized into taxonomy. Taxonomy is a classification scheme that
shows how all object class is related to other classes through
common attributes and services.
The classes are organized into an inheritance hierarchy with the most
general object classes at the top of the hierarchy. More specialized
objects inherit their attributes and services. These specialized objects
may have their own attributes and services.
Figure 8.7 illustrates part of a simplified class hierarchy for a
model of a library.
This hierarchy gives information about the items held in the
library. The library holds various items, such as books, music,
recordings of films, magazines and newspapers. In Figure 8.10,
the most general item is at the top of the tree and has a set of
attributes and services that are common to all library items.
These are inherited by the classes Published item and Recorded
item, which add their own attributes that are then inherited by
lower-level items.
Software Requirements / 71
models and rules and guidelines that should apply to the models.
CASE tools support system modelling as part of a structured
method.
Structured methods have been applied successfully in many large
projects. However, structured methods suffer from a number of
weaknesses:
o They do not model non-functional system requirements.
o They do not usually include information about whether a
method is appropriate for a given problem.
o They may produce too much documentation.
o The system models are sometimes too detailed and
difficult for users to understand
A coherent set of tools that is designed to support related
software process activities such as analysis, design or testing.
CHAPTER 3
Design Engineering
KEY CONCEPTS
3.1. DESIGN PROCESS AND DESIGN QUALITY ........................ 77
3.2. DESIGN MODELS .............................................................. 82
3.3. SEVERE SYSTEM FAILURE -- 14A ...................................... 97
Quality Attributes
Hewlett-Packard developed a set of software quality attributes that
has been given the acronym FURPS-functionality, usability,
reliability, performance and supportability.
Functionality: It is assessed by evaluating the capabilities of the
program generality of the functions that are delivered, and the
security of the overall system.
Usability: Assessed by considering human factors, consistency
&aesthetics (appearance).
Reliability: Evaluated by frequency &severity of errors, Mean
Time to Failure & ability to recover from failure.
Performance: Measured by processing speed, response time,
resource consumption, throughput & efficiency
Supportability: Combines ability to extend the program,
adaptability & the ease with which the system can be installed.
Design Concepts:
Abstractions
Architecture
Patterns
Modularity
Information Hiding
Functional Independence
Refinement
Re-factoring
Design Classes
Abstraction:
Many levels of abstraction
Highest level of abstraction : Solution is slated in broad terms
using the language of the problem environment
Lower levels of abstraction : More detailed description of the
solution is provided
Procedural abstraction: Refers to a sequence of instructions that
has a specific and limited function. Ex The word open of a door
80 / Introduction to Software Engineering
built.
o Specific analysis model elements such as Data Flow
Diagram or analysis classes.
o Availability of architectural styles and patterns.
Interface Design Elements
The interface design for software is equivalent to set of detailed
drawings for doors, windows and external utilities of a
house.They tell us how information flow into and out of house
and within rooms that are part of house.
The interface design elements for software tell how information
flows into and out of the system and how it is communicated
among components defined as part of architecture.
There are three important elements of interface design
o The user interface
o External interfaces to other systems, devices, networks,
or other consumers of information
o Internal interfaces between design components
The design of UI incorporates
o Aesthetic elements(layout, color, graphics, interaction
mechanisms)
o Ergonomic elements (information layout and placement,
metaphors)
o Technical elements (UI patterns, reusable components)
The design of external interfaces requires definitive information
about the entity to which information is sent or received.
The design of internal interfaces is closely aligned with
component-level design
UML defines an interface in the following manner: An interface
is a specifier for the externally visible [public] operations of a
class.
o For ex Safe Home Security function makes use of control
panel that allows homeowner to control certain aspects
of security function. Control panel functions may be
84 / Introduction to Software Engineering
based PC, Safe home control panel and a server housed at CPI
corp.
Interface analysis
Understanding the user who interacts with the system based on
their skill levels.
The task the user performs to accomplish the goals of the system
are identified, described and elaborated.
Design Engineering / 91
Interface design
In interface design, all interface objects and actions that enable a
user to perform all desired task are defined
Implementation
A prototype is initially constructed and then later user interface
development tools may be used to complete the construction of
the interface.
Validation
The correctness of the system is validated against the user
requirement
Interface Analysis
Interface analysis means understanding
o the people (end-users) who will interact with the system
through the interface;
o the tasks that end-users must perform to do their work,
o the content that is presented as part of the interface
o The environment in which these tasks will be conducted.
User Analysis
The ways to learn what the users want from UI?
User Interviews: Interviews involve representatives from software
team who meet with end-users to better understand their needs
Sales Input: Sales people meet with customers and users on
regular basis and gather information that will help software team
to categorize users.
Support Input : Support staff talk with users on daily basis
o The following set of questions will help interface
designers better understand the users of a system. Are
users trained professionals, technician, clerical, or
manufacturing workers?
o What level of formal education does the average user
have?
o Are the users capable of learning from written materials
or have they expressed a desire for classroom training?
92 / Introduction to Software Engineering
The ellipsis (...) indicates that there are more attributes associated
with the class than are shown.
Object communication
Conceptually, objects communicate by message passing.
Messages
The name of the service requested by the calling object;
Copies of the information required to execute the service and
the name of a holder for the result of the service.
Message examples
// Call a method associated with a buffer
object that returns the next value in the
buffer
v = circularBuffer.Get ();
// Call the method associated with a
thermostat object that sets the temperature
to be maintained
thermostat.setTemp (20) ;
Design Engineering / 103
Concurrent Objects
In practice, most object-oriented programming languages have as
their default a serial execution model where requests for object
services are implemented in the same way as function calls.
Therefore, when an object called the List is created from a normal
object class, you write in Java:
theList.append (17)
This calls the append method associated with the List object to add
the element 17 to the List, and execution of the calling object is
suspended until the append operation has been completed.
However, Java includes a very simple mechanism (threads) that lets
you create objects that execute concurrently. Threads are created in
Java by using the built-in Thread class as a parent class in a class
declaration. Threads must include a method called run, which is
started by the Java run-time system when objects that are defined as
threads are created. It is therefore easy to take an object-oriented
design and produce an implementation where the objects are
concurrent processes.
There are two kinds of concurrent object implementation:
1. Servers where the object is realized as a parallel process with
methods corresponding to the defined object operations. Methods
start up in response to an external message and may execute in
parallel with methods associated with other objects. When they have
completed their operation, the object suspends itself and waits for
Design Engineering / 105
The use-case model for the weather station is shown in Figure. This
shows that weather station interacts with external entities for startup
and shutdown, for reporting the weather data that has been
collected, and for instrument testing and calibration.
Each of these use-cases can be described in structured natural
language. The use-case description helps to identify objects and
operations in the system.
110 / Introduction to Software Engineering
Architectural Design
Once interactions between the system and its environment have
been understood, you use this information for designing the system
architecture.
A layered architecture is appropriate for the weather station
Interface layer for handling communications;
Data collection layer for managing collection of data from
instruments and summarizing weather data before transmission to
mapping system;
Instruments layer encapsulation of all instruments used to collect
raw data.
Good rule of thumb is that there should normally be no more than 7
entities in an architectural model.
Object Identification
Identifying objects (or object classes) is the most difficult part of
object oriented design.
There is no 'magic formula' for object identification. It relies on
the skill, experience
and domain knowledge of system designers.
Object identification is an iterative process. You are unlikely to
Design Engineering / 111
Sequence Models:
Sequence models show the sequence of object interactions that take
place
Objects are arranged horizontally across the top;
Time is represented vertically so models are read top to bottom;
Interactions are represented by labeled arrows, Different styles of
arrow represent different types of interaction;
A thin rectangle in an object lifeline represents the time when
the object is the controlling object in the system.
Design Engineering / 115
State charts
The UML uses state charts, initially invented by Harel to describe
state machine models.
Figure is a state chart for the Weather Station object that shows how
it responds to requests for various services.
You can read this diagram as follows:
If the object state is Shutdown then it can only respond to a
startup ( ) message. It then moves into a state where it is waiting
for further messages. The unlabeled arrow with the black blob
indicates that the Shutdown state is the initial state.
In the Waiting state, the system expects further messages. If a
shutdown ( ) message is received, the object returns to the
shutdown state.
If a reportWeather ( ) message is received, the system moves to
the Summarizing state. When the summary is complete, the
system moves to a Transmitting state where the information is
transmitted through the Comms Controller. It then returns to
the Waiting state.
If a calibrate ( ) message is received, the system moves to the
116 / Introduction to Software Engineering
The Java description can show that some methods can take different
numbers of parameters. Therefore, the shutdown method can be
applied either to the station as a whole if it has no parameters or to a
single instrument.
Design Evolution
Hiding information inside objects means that changes made to an
object do not affect other objects in an unpredictable way.
Assume pollution-monitoring facilities are to be added to
weather stations. These sample the air and compute the amount
of different pollutants in the atmosphere. Pollution readings are
transmitted with weather data.
Changes required
Add an object class called Air quality as part of Weather Station.
Add an operation reportAirQuality to WeatherStation. Modify
the control software to collect pollution readings.
Add objects representing pollution monitoring instruments.
118 / Introduction to Software Engineering
CHAPTER 4
Testing Strategies
KEY CONCEPTS
4.1. A STRATEGIC APPROACH TO SOFTWARE TESTING ...... 119
4.2. TEST STRATEGIES FOR CONVENTIONAL SOFTWARE .... 123
4.3. WHITE-BOX TESTING ..................................................... 130
4.4. GRAPH MATRICES ......................................................... 135
4.5. BLACK-BOX TESTING ..................................................... 139
4.6. THE ART OF DEBUGGING .............................................. 146
4.7. PRODUCT METRICS ....................................................... 148
4.8. ISO 9126 QUALITY FACTORS ....................................... 150
4.9. A FRAMEWORK FOR PRODUCT METRICS ...................... 151
4.10. METRICS FOR ANALYSIS MODEL ................................... 154
4.11. METRICS FOR DESIGN MODEL ....................................... 157
4.12. CLASS-ORIENTED METRICS: THE MOOD METRICS SUITE161
4.13. METRICS FOR PROCESS AND PRODUCTS ....................... 164
4.14. SOFTWARE MEASUREMENT .......................................... 165
Unit Testing
Using the above PDL let us describe how derive the test cases
The following steps are used to derive the set of test cases
1. Using the design or code as a foundation, draw a corresponding
flow graph
Path 5: 1-2-3-4-5-6-8-9-2-. . .
Path 6: 1-2-3-4-5-6-7-8-9-2-. . .
The ellipsis (. . .) following paths 4, 5, and 6 indicates that any path
through the remainder of the control structure is acceptable.
It is often worthwhile to identify predicate nodes as an aid in the
derivation of test cases. In this case, nodes 2, 3, 5, 6, and 10 are
predicate nodes
4. Prepare test cases that will force execution of each path in the
basis set.
Each test case is executed and compared to expected results. Once
all test cases have been completed, the tester can be sure that all
statements in the program have been executed at least once.
Validation Testing
Validation succeeds when software functions in a manner that can be
reasonably expected by the customer
Validation Test Criteria
Software validation is achieved through a series of black-box tests
that demonstrate conformity with requirements.
Both the plan and procedure are designed to ensure that all
functional requirements are satisfied, all behavioral characteristics are
achieved, all performance requirements are attained, documentation
is correct and human-engineered and other requirements are met.
After each validation test case has been conducted, one of two
possible conditions exists:
The function or performance characteristics conform to
specification and are accepted
A deviation from specification is uncovered and a deficiency list
is created.
Configuration Review
An important element of the validation process is a configuration
review. The intent of the review is to ensure that all elements of the
software configuration have been properly developed, are cataloged,
and have the necessary detail to bolster the support phase of the
software life cycle. The configuration review, sometimes called an
audit.
Alpha and Beta Testing
A customer conducts the alpha test at the developer’s site.
The beta test is conducted at one or more customer sites by the end-
user of the software. Unlike alpha testing, the developer is generally
not present
System Testing
Software is incorporated with other system elements (e.g., hardware,
people, information), and a series of system integration and
validation tests are conducted. These tests fall outside the scope of
the software process and are not conducted solely by software
146 / Introduction to Software Engineering
SOFTWARE QUALITY
Software quality is defined as the conformance to explicitly stated
functional and performance requirements, explicitly documented
development standards, and implicit characteristics that are expected
of all professionally developed software
McCall’s Quality Factors
Factors that affect software quality can be categorized in two broad
groups:
Factors that can be directly measured (e.g. defects uncovered
during testing)
Factors that can be measured only indirectly (e.g. usability or
maintainability)
Testing Strategies / 149
Coupling factor:
162 / Introduction to Software Engineering
Operation-Oriented Metrics
average operation size
operation complexity
average number of parameters per operation
Interface Design Metrics
Layout appropriateness: a function of layout entities, the geographic
position and the “cost” of making transitions among entities. This is
a worthwhile design metric for interface design.
Metrics for source code
HSS(Halstead Software science)
Primitive measure that may be derived after the code is
generated or estimated once design is complete
n1 = the number of distinct operators that appear in a program
n2 = the number of distinct operands that appear in a program
N1 = the total number of operator occurrences.
N2 = the total number of operand occurrence.
Length N = n1 log2 n1 + n2 log2 n2
Program volume V = N log2 (n1 + n2)
Volume ratio L=2/n1 * n2/N2
Metrics for Testing
Program Level and Effort
PL = 1/[(n1 / 2) x (N2 / n2 l)]
e = V/PL
Metrics for maintenance
IEEE standard suggests a software maturity index that provides
indication of stability of software product.
Mt = the number of modules in the current release
Fc = the number of modules in the current release that have
been changed
Fa = the number of modules in the current release that have
been added.
164 / Introduction to Software Engineering
Process metrics are collected across all projects and over long periods
of time. Their aim is to provide set of process indicators that lead to
long term software process improvement
Project Metrics enable a software project manager to
Assess status of an ongoing project
Track potential risks
Uncover problem areas before they go critical
Adjust work flow
Evaluate project teams ability to control quality
Fig 17: Project Metrics for Product, Process, People and Technology
Testing Strategies / 165
repelled
Usability the degree to which a program is easy to use
Defect Removal Efficiency
A quality metric that provides benefit at both the project and
process level is defect removal efficiency (DRE)
DRE is defined in the following manner:
DRE = E/ (E + D)
E is the number of errors found before delivery of the software to
the end-user
D is the number of defects found after delivery
Ideal value of DRE is 1, which is no defect found in software.
As E increases (for a given value of D), the overall value of DRE
begins to approach 1. In fact, as E increases, it is likely that the final
value of D will decrease (errors are filtered out before they become
defects).
DRE can also be used within the project to assess a team’s ability to
find errors before they are passed to the next framework activity or
software engineering task.
When used in this context, we redefine DRE as
DREi= Ei/ (Ei+ Ei+1)
Where Ei is the number of errors found during software engineering
activity i
Ei+1 are the number of errors found during software engineering
activity i+1 that is traceable to errors that were not discovered in
software engineering activity i.
CHAPTER 5
Risk Management
KEY CONCEPTS
5.1. REACTIVE VS PROACTIVE RISK STRATEGIES ................. 169
5.2. SOFTWARE RISKS........................................................... 170
5.3. RISK IDENTIFICATION ................................................... 170
5.4. ASSESSING PROJECT RISK .............................................. 171
5.5. RISK COMPONENTS AND DRIVERS ................................ 172
5.6. RISK PROJECTION.......................................................... 172
5.7. RISK MITIGATION MONITORING AND MANAGEMENT
(RMMM) .................................................................... 176
5.8. RMMM PLAN ................................................................. 178
5.9. QUALITY MANAGEMENT ............................................. 179
5.10. SOFTWARE QUALITY ASSURANCE ................................ 181
5.11. SOFTWARE REVIEWS ..................................................... 182
5.12. SOFTWARE RELIABILITY ................................................ 187
5.13. ISO 9000 QUALITY STANDARDS ................................... 188
Reactive Risks: project team reacts to risks when they occur. The
team flies into action in an attempt to correct the problem rapidly.
This is often called a fire fighting mode. When this fails, “crisis
management” takes over and the project is in real jeopardy.
Proactive Risks: Potential risks are identified, their probability and
impact are assessed, and they are ranked by importance.
The software team establishes a plan for managing risk. The primary
170 / Introduction to Software Engineering
objective is to avoid risk, but because not all risks can be avoided,
the team works to develop a contingency plan that will enable it to
respond in a controlled and effective manner.
be implemented?
Is the number of people on the project team adequate to do the
job?
Do all customer/user constituencies agree on the importance of
the project and on the requirements for the system/product to
be built?
estimate the impact of the risk on the project and the product,
note the overall accuracy of the risk projection so that there will
be no misunderstandings
Developing a Risk Table
A risk table provides a project manager with a simple technique for
risk projection
Impact values
Catastrophic-1 Critical-2 Marginal-3 Negligible-4
Quality Concepts
Variation control is the heart of quality control
Form one project to another; we want to minimize the difference
between the predicted resources needed to complete a project and
the actual resources used, including staff, equipment, and calendar
time
Quality
The American Heritage Dictionary defines quality as “a characteristic
or attribute of something.” As an attribute of an item, quality refers
180 / Introduction to Software Engineering
Cost of Quality
The cost of quality includes all costs incurred in the pursuit of quality
or in performing quality-related activities.
Quality costs may be divided into costs associated with prevention,
appraisal, and failure.
Prevention costs include quality planning, formal technical reviews,
test equipment, training
Appraisal costs include activities to gain insight into product
condition the “first time through” each process. Examples of
appraisal costs include in-process and inter process inspection,
equipment calibration and maintenance and testing
Failure costs are those that would disappear if no defects appeared
before shipping a product to customers. Failure costs may be
subdivided into internal failure costs and external failure costs.
Internal failure costs are incurred when we detect a defect in our
product prior to shipment. Internal failure costs include rework,
repair & failure mode analysis
External failure costs are associated with defects found after the
product has been shipped to the customer. Examples of external
failure costs are complaint resolution, product return and
replacement, help line support and warranty work
SQA Activities
Prepares an SQA plan for a project. The plan identifies
evaluations to be performed
audits and reviews to be performed
standards that are applicable to the project
procedures for error reporting and tracking
documents to be produced by the SQA group
amount of feedback provided to the software project team
Participates in the development of the project’s software process
description.
The SQA group reviews the process description for compliance with
organizational policy, internal software standards, externally imposed
standards (e.g., ISO-9001), and other parts of the software project
plan.
Reviews software engineering activities to verify compliance with the
defined software process.
Identifies, documents, and tracks deviations from the process and
verifies that corrections have been made.
Audits designated software work products to verify compliance with
those defined as part of the software process.
Reviews selected work products; identifies, documents, and tracks
deviations; verifies that corrections have been made and periodically
reports the results of its work to the project manager.
Ensures that deviations in software work and work products are
documented and handled according to a documented procedure.
Deviations may be encountered in project plan, process description,
and applicable standards
Records any noncompliance and reports to senior management.
Noncompliance items are tracked until they are resolved.
offered
IS0 9001:200 is the quality assurance standard that applies to
software engineering. The standard contains 20 requirements that
must be present for an effective quality assurance system. Because
the ISO 9001:2000 standard is applicable to all engineering
disciplines a special set of ISO guidelines have been developed.
The requirements delineated by ISO 9001:2000 address topics
such as management responsibility, quality system, contract review,
design control, document and data control, product identification
and traceability, process control, inspection and testing, corrective
and preventive action, control of quality standards, internal quality
audits, training, servicing and statistical techniques. For a software
organization to become registered to IS0 9001:200, it must
establish policies and procedures to address each of the requirements
noted and then able to demonstrate that these policies and
procedures are being followed.
CHAPTER 6
Question Bank, Tutorial Questions
and Syllabus
KEY CONCEPTS
6.1. QUESTION BANK .......................................................... 190
6.2. TUTORIAL QUESTIONS ................................................. 196
6.3. SYLLABUS ...................................................................... 200
UNIT ONE
1 Mark Questions
1. Define Software Engineering?
2. Define the term software.
3. What is specific Goal?
4. What do you mean by process pattern?
5. Define Process Assessment?
6. What do you mean by specific practices?
7. What do you mean by Intent and Pattern?
8. Give the applications of Software Engineering.
9. What is phase pattern?
10. What do you mean by CMMI?
5 Mark Questions
1. Explain the characteristics of Software.
2. Give the evolving nature of Software.
Question Bank & Tutorial Questions / 191
15 Mark Questions
1. What are different evolutionary process models? Explain in
brief with a neat sketch.
2. Explain in brief about specialized process model.
3. Briefly explain the umbrella activities with neat diagram.
4. Briefly explain the umbrella activities with a neat diagram.
5. What is a myth? Explain different types of Software myths.
6. With a neat sketch, explain RAD model.
UNIT TWO
1 Mark Questions
1. What is requirement engineering?
2. Define completeness.
3. Define consistency.
4. What is feasibility study?
5. Define open interview.
6. What is a view point?
192 / Introduction to Software Engineering
5 Mark Questions
1. What do you mean by requirement? Explain the different
types of requirements.
2. Explain about functional requirements with an example.
3. Explain about requirement validation.
4. Explain about context model with example.
5. With different notations, explain data flow model.
6. Explain state chart model.
7. Explain in brief about user requirements.
8. Briefly, with a neat diagram, explain structured methods.
9. Explain about system requirements.
10. Illustrate system requirements document.
15 Mark Questions
1. Briefly classify and explain the non –functional requirements.
2. Briefly with a neat diagram, explain requirement engineering
process.
3. With an example, explain data models.
4. Explain object models with examples.
5. Explain about requirement management.
Question Bank & Tutorial Questions / 193
UNIT THREE
1 Mark Questions
1. What is user interface design?
2. What is design engineering?
3. Define architecture?
4. Define object and a class?
5. What do you mean by interface?
6. What is meant by component?
7. Define design process?
8. Define design quality?
9. Define data design?
10. Name the three golden rules?
5 Marks Questions
1. Briefly explain design concepts?
2. With a neat diagram explain design evaluation?
3. Explain object constraint language?
4. Convert mapping data flow into software architecture?
5. Explain briefly about architectural design?
6. Explain the concept of designing conventional components?
7. Explain about interface analysis?
8. Briefly explain about architectural styles and patterns?
9. Explain about class based components?
10. Briefly explain interface design steps?
194 / Introduction to Software Engineering
15 Marks Questions
1. What is user interface design? Briefly explain about golden
rules?
2. Explain in detail about modeling component level design.
3. Explain in detail about Design engineering.
4. Explain in detail about interface design steps.
5. Briefly explain the concept of creating architectural design
UNIT FOUR
1 Mark Questions
1. What is testing?
2. What is a bug?
3. What is Software Quality?
4. What do you mean by process?
5. Define verification.
6. Define validation.
7. What is debugging?
8. Define metrics.
9. What do you mean by strategy in software testing?
10. Define product metrics.
5 Mark Questions
1. Explain the art of debugging with a neat diagram.
2. Explain black box testing.
3. Explain Unit testing with a diagram.
4. Explain about smoke testing with a diagram.
5. Explain the metrics of software quality.
Question Bank & Tutorial Questions / 195
15 Mark Questions
1. Explain the different types of testing strategies for
conventional software.
2. Explain in detail about product metrics.
3. Explain in detail about metrics for process and products.
4. Explain the strategic approach for software testing.
5. Explain in detail about system testing and regression testing
with neat diagrams.
UNIT FIVE
1 Mark Questions
1. What is Risk?
2. Define RMMM?
3. Abbreviate ISO.
4. Define reliability.
5. What do you mean by review?
6. What do you mean by SQA?
7. What do you mean by refinement of risk?
8. What do you mean by projection of risk?
9. What is software risk?
10. How many types of reviews are present in quality
196 / Introduction to Software Engineering
management?
5 Mark Questions
1. Explain with an example of reactive risk.
2. Explain in detail about risk identification.
3. Explain in detail about statistical SQA?
4. Briefly explain FTR.
5. Explain briefly risk refinement.
6. Explain in detail about proactive risk strategies.
7. Explain software quality assurance in detail.
8. Explain the different types of software reviews.
9. Explain risk projection in detail.
10. Explain the different quality concepts
15 Mark Questions
1. Briefly explain ISO 9000 quality standards.
2. With a neat diagram, explain RMMM plan.
3. Explain reactive vs proactive risk strategies in detail.
4. Explain quality management in detail.
5. Explain about risk management in detail.
UNIT ONE
1. Explain the characteristics of Software.
2. Give the evolving nature of Software.
3. Explain the 5 frame work activities involved in SDLC?
4. Explain CMMI.
Question Bank & Tutorial Questions / 197
UNIT TWO
1. Define requirement? Explain the different types of
requirements.
2. Explain about functional requirements with an example.
3. Explain about requirement validation.
4. Explain about context model with example.
5. With different notations, explain data flow model.
6. Explain state chart model.
7. Explain in brief about user requirements.
8. Briefly, with a neat diagram, explain structured methods.
9. Explain about system requirements.
10. Illustrate system requirements document.
198 / Introduction to Software Engineering
UNIT THREE
1. With a neat diagram explain design evaluation?
2. Explain object constraint language?
3. Convert mapping data flow into software architecture?
4. Explain briefly about architectural design?
5. Explain the concept of designing conventional components?
6. Explain about interface analysis?
7. Briefly explain about architectural styles and patterns?
8. Explain about class based components?
9. Briefly explain interface design steps?
10. Define user interface design? Briefly explain about golden
rules?
11. Explain in detail about modeling component level design.
12. Explain in detail about Design engineering.
13. Explain in detail about interface design steps.
14. Briefly explain the concept of creating architectural design.
15. Briefly explain design concepts.
UNIT FOUR
1. Explain the art of debugging with a neat diagram.
Question Bank & Tutorial Questions / 199
UNIT FIVE
1. Explain with an example of reactive risk.
2. Explain in detail about risk identification.
3. Explain in detail about statistical SQA?
4. Briefly explain FTR.
5. Explain briefly risk refinement.
6. Explain in detail about proactive risk strategies.
7. Explain software quality assurance in detail.
8. Explain the different types of software reviews.
9. Explain risk projection in detail.
200 / Introduction to Software Engineering
6.3. SYLLABUS
UNIT-V
Risk Management:
Reactive Vs Proactive Risk Strategies, Software risks, Risk
Identification, Risk Projection, Risk refinement, RMMM, RMMM
Plan.
Quality Management:
Quality concepts, Software quality assurance, software reviews,
Formal technical reviews, Statistical Software quality assurance,
Software reliability, The ISO 9000 quality standards.
Text Books:
[1] Software Engineering, A practitioner’s Approach, Roger S
Pressman, sixth edition, McGraw-Hill International Edition.
[2] Software Engineering, Ian Sommerville, seventh edition, Pearson
education.
Reference Books:
[1] Software Engineering, A precise Approach, Pankaj Jalote, Wiley
India, 2010.
[2] Software Engineering: A primer, Warman S Jawadekar, tata
McGrawHill, 2008
[3] Fundamentals of Software Engineering, Rajib Mall, PHI, 2005
[4] Software Engineering, Principles and Practices, deepak jain,
Oxford University Press
[5] Software Enginnering1: Abstraction and Modeling, Diner
Bjorner, Springer International edition, 2006
[6] Software Engineering2: Specialization of systems and languages,
Diner Bjorner, Springer International edition,2006
[7] Software Engineering foundations, Yingxu wang, Auerbach
publications, 2008.
[8] Software Engineering principles and practice, Hans van Vliet,3rd
edition, Jhon Wiley&sons Ltd.
[9] Software Engineering3: Domains, Requirements and Software
Design, Diner Bjorner, Springer International edition.
[10] Introduction to software engineering, R.J.Leach, CRC Press.
View publication stats