SEE ChapterOne SoftwareProcessAndRequirement
SEE ChapterOne SoftwareProcessAndRequirement
Institute of Engineering
Pulchowk Campus
Department of Electronics and Computer Engineering
Software Engineering
[Subject Code: CT 601]
by
Santosh Giri
Lecturer, IOE, Pulchowk Campus.
1
Overall Course Outline:
SOFTWARE ENGINEERING
CT 601
Lecture : 3 Year : III
Tutorial : 1 Part : I
Practical : 1.5
Course Objectives:
This course provides a systematic approach towards planning,
development, implementation and maintenance of system, also
help developing software projects.
2
1. Software Process and requirements (12 hr, 20 mrk)
1.1. Software crisis
1.2. Software characteristics
1.3. Software quality attributes
1.4. Software process model
1.5. Process iteration
1.6. process activities
1.7. Computer‐aided software engineering
1.8. Functional and non –functional requirements
1.9. User requirements
1.10. System requirement
1.11. Interface specification
1.12. The software requirements documents
1.13. Feasibility study
3
1.14. Requirements elicitation and analysis
1.15. Requirements validation and management
4
3.6. Multiprocessor architecture
3.7. Client –server architectures
3.8. Distributed object architectures
3.9. Inter‐organizational distributed computing
5
5. Software Reuse (3 hrs, 5 mrks)
5.1. The reuse landscape
5.2. Design patterns
5.3. Generator –based reuse
5.4. Application frameworks
5.5. Application system reuse
6
7. Verification and validation (3 hrs, 5 mrks)
7.1. Planning verification and validation
7.2. Software inspections
7.3. Verification and formal methods
7.4. Critical System verification and validation
8
9.9. Matrices for analysis and design model
9.10. ISO standards
9.11. CMMI
9.12. SQA plan
9.13. Software certification
9
Practical
The laboratory exercises shall include projects on
requirements, analysis and designing of software system.
Choice of project depend upon teacher and student, case
studies shall be included too. Guest lecture from software
industry in the practical session.
References:
Ian Sommerville, Software Engineering
Roger S. Pressman, Software Engineering –A Practitioner’s
Approach
Pankaj Jalote, Software Engineering‐A precise approach
Rajib Mall, Fundamental of Software Engineering
10
Evaluation Scheme
The questions will cover all the chapters in syllabus. The evaluation scheme will
be as indicated in the table below:
11
Tribhuvan University
Institute of Engineering
Pulchowk Campus
Department of Electronics and Computer Engineering
Software Engineering
Chapter One
Software Process and requirements
by
Santosh Giri
Lecturer, IOE, Pulchowk Campus.
12
Chapter One: Software Process and requirements
Course Outline: 12 hours, 20
Marks
1.1. Software crisis
1.2. Software characteristics
1.3. Software quality attributes
1.4. Software process model
1.5. Process iteration
1.6. process activities
1.7. Computer‐aided software engineering
1.8. Functional and non –functional requirements
1.9. User requirements
1.10. System requirement
1.11. Interface specification
1.12. The software requirements documents
1.13. Feasibility study
1.14. Requirements elicitation and analysis
1.15. Requirements validation and management
13
Software and its types
Computer software is a collection of programs or computer
instructions that tell the computer how to work- Wikipedia
It is the product that software professionals build and then
support over the long term.
14
1. Application Software
It can be divided into Generic and Specific
a. Generic (or Packaged) Software
The application software which is designed to fulfill the
needs of large group of users is known as generic or
packaged software.
Example: MS-Word, Adobe Reader, MS-Excel.
b. Tailored (or Specific) Software
The application software which is designed to fulfill the
needs of a particular user/company/organization is known
as tailored or specific software.
Example: Software used in department stores, hospitals,
schools etc.
15
2. System Software:-
The software which can directly control the hardware of the
computer are known as system software.
Example: Video driver, audio driver.
3. Utility Software:-
Small software that usually performs some useful tasks is
known as utility software.
Example: Win Zip, JPEG Compressor, PDF Merger, PDF to
Word Converter etc.
16
Software Characteristics
17
(H/W failure)
cumulative affects
of dust, vibration,
abuse, temperature
extremes etc.
18
Figure 1 depicts failure rate vs time for hardware called bath tub
curve
The relationship, often called the ―bathtub curve―
It indicates that hardware exhibits relatively high failure
rates early in its life (failures due to design /manufacturing
defects);
defects are corrected and the failure rate drops to a steady-
state level (ideally, quite low) for some period of time.
As time passes, the failure rate rises again as hardware
components suffer from the cumulative affects of dust,
vibration, abuse, temperature extremes, and many other
environmental maladies.
19
high failure rates in the
beginning due to
Undiscovered defects.
outdated and
no longer
used.
Undergo changes
20
Software is not susceptible to environmental maladies
In theory, s/w should take the form of ―idealized curve‖
However, Undiscovered defects in the beginning will cause
high failure rates
These are corrected (ideally, without introducing other
errors) and the curve flattens as shown
During the life time it undergo changes, it is likely that
some new defects will be introduced, causing the failure rate
curve to spike as shown before the curve can return to the
original steady-state failure rate, another change is
requested, causing the curve to spike again
Slowly, the minimum failure rate level begins to rise- due to
change.
21
Another aspect of wear illustrates the difference between hardware
and software.
When a hardware component wears out, it is replaced by a spare
part.
There are no software spare parts.
Every software failure indicates an error in design or in the process
through which design was translated into machine executable code.
Therefore, software maintenance involves considerably more
complexity than hardware maintenance.
22
2. Software is developed or engineered, not
manufactured in the classical sense
Although some similarities exists between software
development and hardware manufacturing, the two activities
are fundamentally different.
Similarities
High quality needs to be achieved
Both depend on people & Requires construction of product
Software is a design of strategies, instruction which finally
perform the designed, instructed tasks. And a design can
only be developed, not manufactured.
Software is virtual. That is, software can be used using
proper hardware. we can only use it, but we cannot touch
and see hardware. Thus software never gets manufactured,
they are developed.
23
3. Software is custom-built, rather than being assembled
from existing components
Consider the manner in which the control hardware for a
computer-based product is designed and built.
The design engineer draws a simple schematic of the digital
circuitry, does some fundamental analysis to assure that
proper function will be achieved, and then goes to the shelf
where catalogs of digital components exist.
Each integrated circuit (called an IC or a chip) has a part
number, a defined and validated function, a well-defined
interface, and a standard set of integration guidelines.
After each component is selected, it can be ordered off the
shelf.
24
Standard screws and off-the-shelf integrated circuits are
only two of thousands of standard components that are used
by mechanical and electrical engineers as they design new
systems.
In the hardware world, component assemble and reuse is a
natural part of the engineering process.
In the software world, it is something that has only begun
to be achieved on a broad scale.
25
1.3. Software quality attributes
Functionality
All the features & their functionality should works as
expected.
There should not be any deviation in the actual result and
expected result.
Reliability
An s/w is said to be reliable if it delivers all features without
any failure & that it is error free.
e.g.:
an application of saving student records without any error
and should not fail after entering 100 records.
26
Correctness:
A software product is correct, if different requirements as
specified in the software requirements specification(SRS)
document have been correctly implemented.
Usability
An s/w product is said to be usable of it is easy to use
without any specific training.
An s/w must be user friendly (i.e. easy to use).
Reusability
An s/w product has good reusability if different modules of
the product can be reused to develop new product.
27
Efficiency
A product should not waste resource.
Portability
An s/w product is said to be portable if it can be easily made
to work in different operating system.
Maintainability
An s/w product is said to be maintainable if
Errors can be corrected easily.
New functions can be added easily.
Functionality can be modified easily
Durable
An s/w product is said to be durable if it can be in use for
long period of time.
28
Software Crisis (assignment 1)
The difficulty of writing the code for a computer program
which is correct and understandable is referred to as software
crisis.
Software crisis is also referred to as inability to hire enough
qualified programmers.
29
Software market today has a turnover of more than millions of
rupees.
30
History has seen many such failures. Some of these are listed
below:
1) 1991 during Gulf War:
31
3) Dollar 924 lakhs:
In 1996, US bank credit accounts of nearly 800 customer with
dollar 924 lakhs. This problem was due to main programming
bug in the banking system.
4) The North East blackout in 2003:
It has been major power system failures in the history of north
which involves 100 power plants, 50 million customer faced
problem, $ 6 million dollar financial loss.
5) In June 1980, the North American Aerospace Defense
Command (NORAD) reported that the US was under missile
attack. The report was traced to a faulty computer circuit that
generated incorrect signals. If the developers of the software
responsible for processing these signals had taken into account
the possibility that the circuit could fail, the false alert might
not have occurred.
32
1.3. Software Process Model
Since the prime objective of software engineering is to
develop methods for large systems, which produce high
quality software at low cost and in reasonable time.
So it is essential to perform software development in phases.
This phased development of software is often referred to as
software development life cycle (SDLC) or software life cycle.
And the models used to achieve these goals are termed as
Software Process Models.
33
Fig 1 software development process
34
In fig 1,
These phases work in top to bottom approach.
The phases take inputs from the previous phases, add features,
and then produce outputs.
35
b. Time:
determines the time needed to complete a project.
Time is an important issue as cost increases with an increase in the
time period of a project.
c. Budget:
This evaluation looks at the financial aspect of the project.
determines whether the investment needed to implement the system
will be recovered at later stages or not.
36
3. Software Design:
Most crucial phase in the development of a system. The
SDLC process continues to move from the what questions
of the analysis phase to the how.
Logical design is turned into a physical design.
Based on the user requirements and the detailed analysis
the system must be designed.
Input, output, databases, forms, processing specifications
etc. are drawn up in detail.
Tools and techniques used for describing the system
design are: Flowchart, ERD, Data flow diagram (DFD),
UML diagrams like Use case, Activity, Sequence etc.
37
4. Software Coding:
Physical design into software code.
38
5. Software Testing:
Software testing is performed to ensure that software
produces the correct outputs i.e. free from errors. This
implies that outputs produced should be according to user
requirements.
39
6. Software Maintenance:
This phase comprises of a set of software engineering
activities that occur after software is delivered to the user.
40
Class Work
41
Software
Process Model
(Continue…)
42
What is Software process?
When you work to build a product or system, it‘s important to
go through a series of predictable steps—a road map that helps
you to create a timely, high-quality result. The road map that
you follow is called a ―software process.‖
Why is it important?
Because it provides path, stability, control over your project.
43
What are the steps?
At a detailed level, the process that you adopt depends on the
software that you‘re building. One process might be
appropriate for creating software for an aircraft avionics
system, while an entirely different process would be indicated
for the creation of a website.
44
Waterfall Model
45
a. Waterfall model
i. Feasibility study
√ Technical
√ Financial
√ Time etc.
46
iii. Design
Determines the detailed process of developing software after
the requirements are analyzed. It utilizes software
requirements defined by the user and translates them into a
software representation. In this phase, the emphasis is on
finding a solution to the problems defined in the requirement
analysis phase. The software engineer, in this phase is mainly
concerned with the data structure, algorithmic detail, and
interface representations.
iv. Coding
Emphasizes on translation of design into a programming
language using the coding style and guidelines. The programs
created should be easy to read and understand. All the
programs written are documented according to the
specification.
47
v. Testing:
Ensures that the product is developed according to the
requirements of the user. Testing is performed to verify that
the product is functioning efficiently with minimum errors. It
focuses on the internal logics and external functions of the
software
vi. Implementation and maintenance
Delivers fully functioning operational software to the user.
Once the software is accepted and deployed at the user‘s end,
various changes occur due to changes in external environment
(these include upgrading new operating system or addition of
a new peripheral device). The changes also occur due to
changing requirements of the user and the changes occurring
in the field of technology. This phase focuses on modifying
software, correcting errors, and improving the performance of
the software.
48
Waterfall model (Summary)
49
Waterfall model
50
b. prototype model
The prototyping model is applied when there is an absence of
detailed information regarding input and output requirements
in the software.
51
Prototype model
52
i. Requirements gathering and analysis
Prototyping model begins with requirements analysis, and
the requirements of the system are defined in detail. The user
is interviewed to know the requirements of the system.
53
iii. Build prototype
Information gathered from quick design is modified to form
a prototype. The first prototype of the required system is
developed from quick design. It represents a ‗rough‘ design
of the required system.
54
v. Prototype refinement
Once the user evaluates the prototype, it is refined according
to the requirements. The developer revises the prototype to
make it more effective and efficient according to the user
requirement. If the user is not satisfied with the developed
prototype, a new prototype is developed with the additional
information provided by the user. The new prototype is
evaluated in the same manner as the previous prototype,
process continues until all the requirements specified by the
user are met. Once the user is satisfied a final system is
developed.
55
vi. Engineer product
Once the requirements are completely known, user accepts
the final prototype. The final system is thoroughly evaluated
and tested followed by routine maintenance on continuing
basis to prevent large-scale failures and to minimize
downtime.
56
57
C. Spiral Model
58
C. Spiral Model
59
1. Each cycle of the first quadrant commences with
identifying the goals for that cycle. In addition, it determines
other alternatives, which are possible in accomplishing those
goals.
60
3. The development of the software depends on remaining risks.
The third quadrant develops the final software while
considering the risks that can occur. Risk management
considers the time and effort to be devoted to each project
activity, such as planning, configuration management, quality
assurance, verification, and testing.
4. The last quadrant plans the next step, and includes planning
for the next prototype and thus,comprises of requirements
plan, development plan, integration plan, and test plan
61
62
d. Evolutionary model
An Evolutionary model breaks up an overall solution into
increments of functionality and develops each increment
individually.
63
64
65
RAD model
66
V model
67
Software
Requirements
68
What is requirement?
69
What is software requirement?
70
Guidelines for Expressing Requirements
71
Types of Requirements
72
A functional requirement describes what a software system
should do, while non-functional requirements place constraints
on how the system will do so.
73
Functional requirement
A banking system must send perform requested transaction,
whenever a certain condition is met (i.e. account no, password,
etc).
Non-functional requirement
Those transaction should be completed with a latency of no
greater than 6 hours from such an activity.
74
Requirements Engineering Process
75
What is software requirement?
77
Types of feasibility study
Technical
technical skills and capabilities of development team.
78
Economic feasibility/ Budget
whether the required software is capable of generating
financial gains for an organization or not.
cost incurred on software development team
estimated cost of hardware and software.
cost of performing feasibility study.
Time
Whether the project will be completed on pre-specified time
or not.
79
Feasibility Study Process
1.Information assessment:
verifies that the system can be implemented using new
technology and within the budget.
2. Information collection:
Specifies the sources from where information about software
can be obtained.
Sources:
users (who will operate the software)
organization (where the software will be used).
software development team (who understands user requirements and
knows how to fulfill them in software).
80
3. Report writing:
Information about changes in software scope, budget,
schedule, and suggestion of any requirements in the system.
81
Step 2: Requirements Elicitation
Process of collecting information about software requirements
from different stakeholders (users, developer, project manager
etc.)
Issues in Requirement Elicitation
1. Problems of understanding
Users are not certain about their requirements and thus are unable to
express what they require in software and which requirements are
feasible.
This problem also arises when users have no or little knowledge of the
problem domain and are unable to understand the limitations of
computing environment of software.
2. Problems of volatility
This problem arises when requirements change over time.
82
Elicitation Techniques
The commonly followed elicitation techniques are listed below:
1.Interviews:
Ways for eliciting requirements, it helps software engineer,
users, & development team to understand the problem and
suggest solution for the problem.
An effective interview should have characteristics listed
below:
Individuals involved in interviews should be able to accept new ideas,
focus on listening to the views of stakeholders & avoid biased views. ƒ
Interviews should be conducted in defined context to requirements rather
than in general terms. E.g. a set of a questions or a requirements
proposal.
83
2.Scenarios:
Helps to determine possible future outcome before implementation.
In Generally, a scenario comprises of:
Description of what users expect when scenario starts.
Description of how to handle the situation when software is not
operating correctly.
Description of the state of software when scenario ends.
3.Prototypes:
helps to clarify unclear requirements.
helps users to understand the information they need to provide to
software development team.
84
Step 3: Requirement Analysis
It is the process of studying and refining requirements
85
Step 4: Requirements Specification
Characteristics of SRS
1. Correct:
SRS is correct when
all user requirements are stated in the requirements document.
The stated requirements should be according to the desired system.
2. Unambiguous:
SRS is unambiguous when every stated requirement has only one
interpretation i.e. each requirement is uniquely interpreted.
86
3. Complete:
SRS is complete when the requirements clearly define what the software is
required to do.
4. Modifiable:
The requirements of the user can change, hence, requirements document
should be created in such a manner where those changes can be modified
easily.
6. Verifiable:
SRS is verifiable when the specified requirements can be verified with a
cost-effective process to check whether the final software meets those
requirements or not.
87
7. Consistent:
SRS is consistent when the individual requirements defined does not conflict
with each other.
e.g., a requirement states that an event ‗a‘ is to occur before another event
‗b‘. But then another set of requirements states that event ‗b‘ should occur
before event ‗a‘.
8. Traceable:
SRS is traceable when the source of each requirement is clear and it
facilitates the reference of each requirement in future.
88
Fig : SRS Document template
89
Step 5 : Requirements Validation
Why Validation ?
Errors present in the SRS will adversely affect the cost if they are
detected later in the development process or when the software is
delivered to the user.
90
Step 6: Requirements Management
Why ??
To understand and control changes to system requirements.
92
U dependency
R weaker Relationship
93
Requirements change management
94
Thank You!!!
95