Software Engineering by DrNAT - 23
Software Engineering by DrNAT - 23
Subject Code:BCASP501
What is Software?
➢ Software = Program+Documentation+Operating
Procedures.
Software Characteristics:
➢ Software is a logical rather than a physical system element.
Therefore, software has characteristics that are considerably
different than those of hardware:
Benefits:
➢ Increased reliability( components already exercised in
working systems)
➢ Accelerated development
➢ Speed up delivering
➢ Reduced cost
Software Applications
The following software areas indicate the breadth
of potential applications:
➢ System software.
System software is a collection of programs written to
service other programs e.g. compilers.
➢ Business software.
Business information processing is the largest single
software application area. Discrete "systems" (e.g., payroll,
accounts receivable/payable, inventory)have evolved into
management information system (MIS) software that
accesses one or more large databases containing business
information.
➢ Personal computer software.
The personal computer software market has increased
rapidly over the past two decades. Word processing,
spreadsheets, computer graphics, multimedia,
entertainment, database management, personal and
business financial applications and database access are only
a few of hundreds of applications.
➢ Embedded software.
Embedded software resides in ROM and is used to control
products and systems for the consumer and industrial
markets. Embedded software can perform very limited
functions (e.g., keypad control for a microwave oven) or
provide significant function and control capability (e.g.,
digital functions in an automobile such as fuel control,
dashboard displays, and braking systems).
➢ Artificial Intelligence software.
Expert systems, also called knowledgebase systems, pattern
recognition (image and voice), artificial neural networks are
representative of applications within this category.
Software Process
➢ When you build a product or system, it’s important to go
through a series of predictable steps—a road map that helps
you create a timely, high-quality result. The road map that
you follow is called a software process.
➢ A framework for the tasks that are required to build high-
quality software.
➢ Methods of developing software.
SOFTWARE PROCESS MODELS
The purpose of the coding and unit testing phase (sometimes called
the implementation phase) of software development is to translate
the software design into source code. Each component of the design
is implemented as a program module. The end-product of this phase
is a set of program modules that have been individually tested.
During this phase, each module is unit tested to determine the
correct working of all the individual modules. It involves testing
each module in isolation as this is the most efficient way to debug
the errors identified at this stage.
Activities undertaken during integration and
system testing:
Integration of different modules is undertaken once they have
been coded and unit tested. During the integration and system
testing phase, the modules are integrated in a planned manner
Size Staffing
Estimation Estimation
Duration
Estimation Scheduling
Metrics for software project size estimation
➢ Accurate estimation of the problem size is fundamental to
satisfactory estimation of effort, time duration and cost of a
software project. In order to be able to accurately estimate the
project size, some important metrics should be defined in
terms of which the project size can be expressed. The size of a
problem is obviously not the number of bytes that the source
code occupies. It is neither the byte size of the executable
code. The project size is a measure of the problem complexity
in terms of the effort and time required to develop the product.
➢ Currently two metrics are popularly being used widely to
estimate size:
Lines of code (LOC) and
Function Point (FP).
➢ The usage of each of these metrics in project size estimation
has its own advantages and disadvantages.
Lines of Code (LOC)
➢ LOC is the simplest among all metrics available to estimate project
size.
➢ This metric is very popular because it is the simplest to use. Using
this metric, the project size is estimated by counting the number of
source instructions in the developed program.
➢ Lines used for commenting the code and the header lines should be
ignored.
➢ Accurate estimation of the LOC count at the beginning of a project
is very difficult. In order to estimate the LOC count at the
beginning of a project, project managers usually divide the
problem into modules, and each module into sub modules and so
on, until the sizes of the different leaf-level modules can be
approximately predicted.
➢ Past experience in developing similar products is helpful. By using
the estimation of the lowest level modules, project managers arrive
at the total size estimation.
Shortcomings of LOC
➢ LOC gives a numerical value of problem size that can vary
widely with individual coding style – different programmers
lay out their code in different ways.
For example,
One programmer might write several source instructions on a
single line whereas, another might split a single instruction
across several lines.
This problem can be easily overcome by counting the
language tokens in the program rather than the lines of code.
For the same problem, different programmers might come up
with programs having different LOC counts.
This situation does not improve even if language tokens are
counted instead of lines of code.
Shortcomings of LOC (contd..)
➢ A good problem size measure should consider the overall
complexity of the problem and the effort needed to solve it.
➢ That is, it should consider the local effort needed to specify,
design, code, test, etc. and not just the coding effort.
➢ Coding is only a small part of the overall software
development activities.
➢ It is also wrong to argue that the overall product development
effort is proportional to the effort required in writing the
program code.
➢ This is because even though the design might be very
complex, the code might be straightforward and vice versa. In
such cases, code size is a grossly improper indicator of the
problem size.
Shortcomings of LOC (contd..)
➢ LOC measure correlates poorly with the quality and
efficiency of the code.
➢ Larger code size does not necessarily imply better quality or
higher efficiency.
➢ Some programmers produce lengthy and complicated code as
they do not make effective use of the available instruction set.
➢ In fact, it is very likely that a poor and sloppily written piece
of code might have larger number of source instructions than
a piece that is neat and efficient.
Shortcomings of LOC (contd..)
➢ It is very difficult to accurately estimate LOC in the final
product from the problem specification.
➢ The LOC count can be accurately computed only after the
code has been fully developed.
➢ Therefore, the LOC metric is little use to the project
managers during project planning.
➢ Since project planning is carried out even before any
development activity has started.
➢ This possibly is the biggest shortcoming of the LOC metric
from the project manager’s perspective.
Function point (FP)
Function point metric was proposed by Albrecht [1983]. This
metric overcomes many of the shortcomings of the LOC
metric.
One of the important advantages of using the function point
metric is that it can be used to easily estimate the size of a
software product directly from the problem specification.
This is in contrast to the LOC metric, where the size can be
accurately determined only after the product has fully been
developed.
Function point (FP)
The conceptual idea behind the function point metric is that the size
of a software product is directly dependent on the number of
different functions or features it supports.
A software product supporting many features would certainly be of
larger size than a product with less number of features. Each
function when invoked reads some input data and transforms it to
the corresponding output data.
For example, the issue book feature (as shown in fig.) of a Library
Automation Software takes the name of the book as input and
displays its location and the number of copies available. Thus, a
computation of the number of input and the output data values to a
system gives some indication of the number of functions supported
by the system. Albrecht postulated that in addition to the number of
basic functions that a software performs, the size is also dependent
on the number of files and the number of interfaces.
Function point is computed in two steps. The first step is to
compute the Unadjusted Function Point (UFP).
UFP = (Number of inputs)*4 + (Number of outputs)*5 +(Number
of inquiries)*4 + (Number of files)*10 + (Number of
interfaces)*10