Module 02-Task of Software Development-1
Module 02-Task of Software Development-1
4th Edition
Chapter 2
Tasks of Software Development
Lecturer :
Eng-Moha Ali
mysomville.info@gmail.com
Chapter Objectives
Identifies the activities within software
development
Explains the idea of a process model
Explains the term methodology
Explains the term hacking.
2
2.1. Introduction
In this chapter we identify the significant tasks
of software development. The bulk of this book
describes techniques for carrying out these
tasks. As part of the story, we clarify the nature
of two important activities that take place
throughout software development – validation
and verification.
If you have ever written a program, there a
number of activities that you know you are
going to have to carry out,
3
2.1. Introduction
for example, testing. The same is true of larger
developments, but for big programs and large
software systems, there are additional elements.
The activities are:
1.A feasibility study
2. Requirements engineering
3.User interface design
4.Architectural design
5.Detailed design
6. Programming 4
2.1. Introduction
7. System integration
8. Validation
9. Verification (testing)
10. Production( Implementation)
11. Documentation
12. Maintenance
13. Project management.
5
2.1. Introduction
A process model is a plan that makes
provision for all these required activities and
seeks to incorporate the stages in a
methodical way.
At the end of this chapter, we introduce the
idea of process model, which is an overall
strategy for accomplishing software
development.
However, while it may seem obvious that
they are carried out in a certain order, we
shall see that this is not always the best
strategy. For example, it may not be ideal to
carry out validation as the final step. 6
2.2. Tasks of software
development
2.2.1. Feasibility study - Before anything else is
: done, a feasibility study establishes whether or not
the project is to proceed. It may be that the
system is unnecessary, too expensive or too risky.
One approach to a feasibility study is to perform
cost-benefit analysis.
The cost of the proposed system is estimated,
which may involve new hardware as well as
software, and compared with the cost of likely
savings. This comparison then determines whether
the project goes ahead or not. 7
2.2. Tasks of software development
2.2.2. Requirements engineering (specification)
At the start of a project, the developer finds out
what the user (client or customer) wants the
software to do and records the requirements as
clearly as possible. The product of this stage is a
requirements specification.
2.2.3. User interface design- Most software has a
graphical user interface, which must be carefully
designed so that it is easy to use.
8
2.2. Tasks of Software Development
2.2.4. Architectural (large-scale) design-A software
system may be large and complex. It is
sometimes too large to be written as one single
program. The software must be constructed
from modules or components. Architectural, or
large-scale design breaks the overall system
down into a number of simpler modules. The
products of this activity are an architectural
design and module specifications.
9
2.2. Tasks of software development
2.2.5. Detailed design- The design of each module or component
is carried out. The products are detailed designs of each module.
2.2.6. Programming (coding)- The detailed designs are converted
into instructions written in the programming language. There
may be a choice of programming languages, from which one
must be selected. The product is the code.
2.2.7. System integration-The individual components of the
software are combined together, which is sometimes called the
build. The product is the complete system.
.
10
2.2. Tasks of Software Development
2.2.8. Verification- This seeks to ensure that the
software is reliable. According to Barry Boehm
(one of the all-time greats of software
engineering), verification answers the question:
Are we building the product right? A piece of
software that meets its specification is of limited
use if it crashes frequently. Verification is
concerned with the developer’s view – the
internal implementation of the system.
11
2.2. Tasks of Software Development
Two types of verification are unit testing and system
testing. In unit testing, each module of the software
is tested in isolation. The inputs to unit testing are:
1. the unit specification
2. the unit code
3. a list of expected test results.
.
12
2.2. tasks of software development
The products of unit testing are the test results. Unit testing
verifies that the behavior of the coding conforms to its unit
specification.
In system testing or integration testing, the modules are
linked together and the complete system tested.
The inputs to system testing are the system specification and
the code for the complete system. The outcome of system
testing is the completed, tested software, verifying that the
system meets its specification.
. 13
2.2. tasks of software development
2.2.9. Validation- This seeks to ensure that the
software meets its users’ needs. According to
Boehm, validation answers the question: Are we
building the right product? Validation is to do
with the client’s view of the system, the external
view of the system. It is no use creating a piece
of software that works perfectly (that is tested to
perfection) if it doesn’t do what its users want.
14
2.2. tasks of software development
An important example of a validation activity is
acceptance testing. This happens at the end of
the project when the software is deemed
complete, is demonstrated to its client and
accepted by them as satisfactory.
The inputs to acceptance testing are the client
and the apparently complete software. The
products are either a sign-off document and an
accepted system or a list of faults. The outcome
is that the system complies with the
requirements of the client or it does not. 15
2.2. Tasks of software development
2.2.10. Production-The system is put into use.
(This is sometimes, confusingly, termed
implementation.) The users may need training.
2.2.11. Maintenance- When the software is in use,
sooner or later it will almost certainly need fixing
or enhancing. Making these changes constitutes
maintenance. Software maintenance often goes
on for years after the software is first
constructed. The product of this activity is the
modified software.
16
2.2. Tasks of software development
2.2.12. Documentation is required for two types
of people – users and the developers.
1.Users need information about how to install the
software, how to de-install the software and
how to use it. Even in the computer age, paper
manuals are still welcome. For general purpose
software, such as a word processor, a help
system is often provided. User documentation
concentrates on the “what” (the external view)
of the software, not the “how” (the internal
workings). 17
2.2. Tasks of software development
2. Developers need documentation in order to
continue development and to carry out
maintenance. This typically comprises the
specification, the architectural design, the
detailed design, the code, annotation within the
code (termed comments), test schedules, test
results and the project plan.
The documentation is typically large and costly
(in people’s time) to produce. Also,because it is
additional to the product itself, there is a
tendency to ignore it or skimp on it. 18
2.2. Tasks of software development
2.2.13. Project management- Someone needs to
create and maintain plans, resolve problems,
allocate work to people and check that it has
been completed.
2.2.14.Database design- Many systems use a
database to store information. Designing the
database is a whole subject in its own right and
is not normally considered to be part of
software engineering. Consequently, we don’t
tackle this topic within this course.
19
2.3. Process models-
We have seen (Chapter 1) that software systems
are often large and complex. There is a clear need
to be organized when embarking on a
development. What do you need when you set
about a software project? You need:-
a. A set of methods and tools
b.An overall plan or strategy.
The plan of action is known as a process model. It
is a plan of what steps are going to be taken as
the development proceeds.
20
2.3. Process models-
This term is derived as follows: a process is a
step or a series of steps; a process model is a
model in the sense that it is a representation of
reality. Like any model, a model is only an
approximation of reality. A process model has
two distinct uses:
1.It can be used as a basis for the plan for a
project. Here the aim is to predict what will be
done.
2. It can be used to analyze what actually happens
during a project. 21
2.3. Process models-
Here the aim is to improve the process for the
current and for future projects. There are
several mainstream process models:
• Waterfall
• Prototyping
• Incremental
• Agile
• Rational
• Open source
• Seat of the pants, do it yourself or ad hoc. 22
2.4 Methodology
In common language, the word methodology
means the study of method. It answers such
questions as: What is the basis of method x?
How good is method y? However, in software
development, the term methodology has been
kidnapped and come to mean a complete
package of techniques, tools and notations.
Such a package is given a name, say the XYZ
methodology, and is often marketed by a
corporation, together with books, manuals and
training. 23
2.5 Hacking
There is one notorious approach to software
development, called hacking. There are actually
two types of hacker:
1. The malicious hacker who breaks into computer
systems, often using the internet, to commit
fraud, to cause damage or simply for fun.
2. The programmer hacker, who uses supreme
skills, but no obvious method, to develop
software. Additional meanings that hacking is
often disparaged in software development
circles because it appears to be out of control
24
Chapter Summary
• A process model is a model in the sense that it
is a representation of reality.
• A process model is a strategic plan for the
complete process. Different process models
offer alternative suggestions as to exactly how
and when tasks are carried out.
• The plan of action is known as a process
model used for steps to be taken as the
development proceeds
25
Chapter Summary
A methodology is a complete package of
methods, tools and notations.
Hacking is an approach to development that is
highly skilled but ill-disciplined.
The malicious hacker who breaks into
computer systems, often using the internet
technology , to commit fraud for damage
while The programmer hacker, who uses
supreme skills.
26
Chapter Summary
The documentation is typically large and
costly (in people’s time) to produce.
User documentation concentrates on the
“what” (the external view) of the software,
while developer documentation concentrates
on the “how” (the internal workings).
27
Chapter Summary
Verification is concerned with the developer’s
view – the internal implementation of the
system
In system testing or integration testing, the
modules are linked together for completing
system tested.
Project management is creation needs,
maintain plans, resolve problems, allocate
work to people and check that it has been
completed
28
Chapter Summary
• Programming (coding) is detailed designs
converted into instructions written in the
programming language.
• Designing the database is a whole subject in
its own right and is not normally considered to
be part of software engineering.
• Software maintenance often goes on for years
after the software is first constructed.
• Architectural (large-scale) design is a software
system may be large and complex to write as
one single program. 29
Chapter Summary
Requirements engineering or (specification)
is initial of starting a project where the
developer focus on the user’s needs.
Feasibility study is performance cost-benefit
analysis procedure.
User interface design is mostly software has a
graphical user interface, which carefully
designed for easy to use.
Architectural design breaks the overall system
down into a number of simpler modules.
30