0% found this document useful (0 votes)
103 views19 pages

UNIT-1 Software "Software Is A Collection of Instructions That Enable by User To Interact

The document provides an introduction to software engineering. It defines software as a collection of instructions that enable users to interact with computers. It describes characteristics of good quality software like being efficient and preventing unauthorized access. Software engineering is defined as the process of analyzing user needs and designing, constructing, and testing applications. The document then discusses different layers and paradigms in software engineering like the classic waterfall life cycle model and combining different paradigms.

Uploaded by

Sumanth Sahoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views19 pages

UNIT-1 Software "Software Is A Collection of Instructions That Enable by User To Interact

The document provides an introduction to software engineering. It defines software as a collection of instructions that enable users to interact with computers. It describes characteristics of good quality software like being efficient and preventing unauthorized access. Software engineering is defined as the process of analyzing user needs and designing, constructing, and testing applications. The document then discusses different layers and paradigms in software engineering like the classic waterfall life cycle model and combining different paradigms.

Uploaded by

Sumanth Sahoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 19

UNIT-1

INTRODUCTION

SOFTWARE

“Software is a collection of instructions that enable by user to interact


with a computer.”

CHARACTERISTICS OF A SOFTWARE

 Software should be achieve a good quality in design and need all the
specifications of the customer.
 Software does not wear out i.e., it does not use the material.
 Software should be inherently complex.
 Software should be efficient i.e., the ability of the software to use
system resources in an effective and efficient manner.
 Software must be integral i.e., it must prevent from un-authorised
access to the software or data.

SOFTWARE ENGINEERING

“Software engineering is the process of analysing user needs and


designing, constructing and testing end-user applications.”

Object oriented software engineering is developed by “Ivar Jacobson”


in the year 1992. OOSE is the first object oriented programming language.

SOFTWARE ENGINEERING LAYERED TECHNOLOGY

Software engineering is a fully layered technology. To develop a software, we


need to go from one layer to another layer.

All these layers are related to each other and each layer demands the fulfilment
of the previous layer.
The layered technology consists of:

Quality focus: The characteristics of good quality software are:

a).Correctness of the functions required to be performed by the software.

b).Maintainability of the software.

c).Integrity i.e., providing security so that the un-authorised user cannot


access information or data.

d).Usability i.e., the efforts required to use or operate the software.

Process:

a).It is the base layer or foundation layer for the software engineering.

b).The software process is the key to keep all levels together.

c).It defines frame work that includes different activities and tasks.

d).In short, it covers all activities, actions and tasks required to be carried
out for software development.

Methods:

a).The method provides the answers of all “How to” that are asked during
the process.

b).It provides the technical way to implement the software.

c).It includes the collection of tasks starting from communication,


requirement analysis, analysis and design modelling, program
construction, testing and support.
Tools:

a).The software engineering tool is an automated support for the software


development.

b).The tools integrated i.e., the information created by one tool can be
used by the other tool.

c).For example, the Microsoft publisher can be used as a web-designing


tool.

SOFTWARE ENGINEERING PROCESS PARADIGMS

Software engineering:

“Software engineering is the process of analysing user needs and


designing, constructing and testing end-user applications.”

Software engineering process paradigms are:


1. Classic life cycle
2. Prototyping
3. The spiral model
4. Fourth generation language
5. Combined paradigms
CLASSIC LIFE CYCLE:

It is sometimes called as waterfall model, the life cycle paradigm


demands a systematic, sequential approach to software development that begins
at the system level and progresses through analysis, designing, coding, testing
and maintenance.

Fig: Water fall model

The life cycle paradigm contains following activities.

1).System engineering

2).Analysis

3).Designing

4).Coding

5) Testing

6) Maintenance

1).System engineering and analysis:

Software is always a part of a large system, work begins by establishing


requirements for all system elements and then allocating some subset of these
requirements to software.

System engineering and analysis covers the requirements gathering at the


system level with a small amount of top level design and analysis.
2). Software requirement analysis:

The requirements gathering process is effected and focussed specifically


on software. Requirements for both the system and the software are documented
and reviewed with the customer.

3).Design:

Software designing is actually a multi-step process that focuses on four


distinct attributes of the program i.e., data structure, software architecture,
procedural details and interface characterisation.

Like requirements, the design is documented and becomes part of the


software configuration.

4).Coding:

The design must be translated into a machine readable form. The coding step
performs this task.

5).Testing:

Once the code has been generated, program testing begins. The testing process
focuses on the logical internals of the software ensuring that all statements have
been tested.

6).Maintenance:

Software maintenance is the modification of software product after delivery to


correct faults, to improve performance or other attributes.

PROTOTYPING

Prototyping is a process that enables the developer to create a model of the


software that must be built. The model can take the following forms.

i. A paper prototype or PC based model that explains human machine


interaction in a form that enables the user to understand how such
interaction will occur.
ii. A working prototype that implements some subset of the functions
required of the desired software.
iii. An existing program that performs part or all of the functions
desired but other features that will be improved upon in the new
development effort.

THE SPIRAL MODEL:

The spiral model for the software engineering has been developed to include
the best features of both the classic life cycle and prototyping, while at the same
time adding a new element i.e., risk analysis that is missing in those paradigms.

i).Planning-Determination of objectives, alternatives and constraints.

ii).Risk analysis-Analysis of alternatives and identification/resolutions of


risks.

iii).Engineering-Development of the next level product.

iv).Customer evolution-Assessment of the results of engineering.

The spiral model paradigm for software engineering currently the most
realistic approach to the development for large scale systems and software.
It uses prototyping as a risk reduction mechanism but more importantly
enables the developer to apply the prototyping approach at any stage in the
evaluation of the product.

The spiral model demands a direct consideration of technical risks at all


stages of the project and its property applied should reduced risks before they
became problematic.

FOURTH GENERETION TECHNIQUES :

Currently a software development environment that supports the 4GT paradigm


includes some or all of the following tools.

 Non-procedural languages for database query.


 Report generation.
 Data manipulation.
 Screen interaction and definition.
 Code generation.
 High level graphics capability.
 Spread sheet capability.

Each of these tools does exist, but only for every specific application domains.

For small applications, it may be possible to move directly from the


requirements gathering step to implementation using a non-procedural ourth
generation language (4GL).
To transform a 4GT implementation into a product, the developer must
conduct through testing, develop meaningful documentation and perform all
other transition activities that are also required in other software engineering
paradigms.

COMBINED PARADIGMS:

How software engineering paradigms can be combined during a single


software development. In all cases work begins with a determination of
objectives, alternatives and constraints, a step that is sometimes called
preliminary requirements gathering.

If requirements are un-curtained the prototype can be used to define


requirements more fully. Using the prototype as a guide the developer can then
return to the steps of the classic life cycle.

THE PROJECT MANAGEMENT PROCESS:

Software project management is the first layer of the software


engineering process. It is also called as layer.

To develop a successful software project we must understand the scope of


the work to be done, the risks to be occurred and the resources to be required.
Software project management is important to the success of a project. All
projects leaders understand how to do it and all engineers understand how to
work within the bounce established by it.
The project management process contains the following activities.

a).Beginning a software project

b).Measures and metrics

c).Estimation

d).Risk analysis

e)Scheduling

f).Tracking and control

a).Beginning a software project: Before a project can be planned, objectives


and scope should be established, alternative solutions should be considered, and
technical and management constraints should be identified.

The software developer and customer must meet to define project


objectives and scope.

b).Measures and metrics: Measurement and metrics helps us to understand the


technical process that is used to develop a product and itself. The process is
measured in an effort to improve it. The product is measured in an effort to
increase its quality.

c).Estimation: One of the important activities in the software project


management process is planning. When a software project is planned,
estimation is required for human effort, project duration and cost must be
derived.

If a new project is quite similar in size to a past project, it is likely that the
new project will require approximately the same amount of effort, time and
cost.

d).Risk analysis : Risk analysis is actually a series of risk management steps


i.e., risk identification, risk assessment, risk prioritisation, risk management
strategies, risk solution and monitoring.

e).Scheduling: The project scheduling is the tool that communicates what work
needs to be performed, which resources of the organisation need to be
performed.
f).Tracking and control: Once the development schedule has been established,
tracking and control activity started. Each track was noted in the schedule is
tracked by the project manager.

PROJECT METRICS: A metrics are measurement of the degree that any


attribute belongs to a system, product or process.

For example, the number of errors per a person hours would be a


metrics.
Project metrics are two types.
1. Size oriented metrics
2. Function oriented metrics

1. Size oriented metrics: Size oriented metrics are direct measurement of


software and the process by which it is developed.

2. Function oriented metrics: Function oriented software metrics are indirect


measures of software and the process by which it is developed.

Rather than counting LOC (lines of code), function oriented metrics focuses on
functionality or utility. It contains the following properties.

 Number of user inputs.


 Number of user outputs.
 Number of user enquiries.
 Number of files.
 Number of external interfaces.

SOFTWARE ESTIMATION: Software is the most expensive element in


many computer based system.

Software costs and effort estimation will never be an exact. Too many
variables-human, technical, environmental, political can affect the ultimate cost
of software and effort applied to develop it.

To achieve reliable cost and effort estimates a number of options arise.

i).Delay estimation until late in the project. (obviously, we can achieve


100% accurate estimates after the project is complete).
ii).Use relatively simple decomposition techniques to generate project
cost and effort estimates.

iii).Develop empirical model for software cost and effort.

iv).Acquire one or more automated estimation tools.

Decomposition techniques take a “dividing” approach to software


estimation. By decomposing a project into a major functions and related
software engineering tasks, cost and effort estimation can be performed in a step
wise manner.

EMPIRICAL ESTIMATION MODELS :

An empirical estimation model for computer software uses empirically derived


formulas to predict data that are required part of the software project planning
step.

The empirical data that support most models are derived from a limited
sample of projects.

There are four classes of resource models. Static single variable models,
static multi-variable model, dynamic multi-variable model and theoretical
model.

The static single variable model takes the form:


Resource=c1*(estimated characteristic) c2

Where resource could be effort, project duration, staff size . The constants c 1
and c2 are derived from data collected from previous projects.

The basic version of the constructive cost model or (COCOMO) is an example


of a static single variable model.

Static multi-variable models, like the single variable model, make use of
historical data to derive empirical relationships, this model takes the form as:

Resource=c11e1+c21e2+......

A dynamic multi variable model projects resource requirements as a


function of time.
COCOMO MODEL:

COCOMO means constructive cost model, this method is used for


evaluating or estimating the cost of a software development. COCOMO model
is developed by “Barry Boehm”. There are three levels in the COCOMO
model.

MODEL-1: BASIC COCOMO: Basic COCOMO is a static single valued


model that computes software development effort and cost as a function of a
program size expressed in estimated lines of code(LOC).

MODEL -2: INTERMEDIATE COCOMO: It is an extension of the basic


model that computes software development effort by adding a set of cost drivers
that will determine the effort and duration of the project such as hardware
components.

MODEL-3: ADVANCED COCOMO: It is an extension of the intermediate


model that adds effort multi-players for each phase of the project of number of
persons.

COCOMO may be applied to three classes of software project. They are:

i.Organic mode

ii.Semi-detached mode

iii.Embedded mode

The basic COCOMO equation is as follows:

E= ab(LOC)exp(bb)

D=cb(E)exp(db)

Where ‘E’ is the effort applied in person months, ‘D’ is the development
time in serial months, ‘LOC’ is the estimated number of lines of code, a b, bb, cb,
db are coefficients.

The basic model contains the following attributes that are grouped into
four major categories.

i).Product attributes

a).Required software reliability


b).Size of application database

ii).Hardware attributes

a).Run time performance constraints

b).Memory constraints

c).Required turnaround

iii).Personal attributes

a).Software engineering reliability

b).Programming language capability

c).Applications experience

iv).Project attributes

a).Use of software tools

b).Application of software engineering methods

SOFTWARE PROJECT ab bb cb db
Organic 2.4 1.05 2.5 0.38
Semi detached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32

The intermediate COCOMO equation takes the form,

E=ai(LOC)exp(bi)*EAF

Where ‘E’ is the effort applied in person months and ‘LOC’ is the
estimated lines of code and ai, bi are coefficients.
INTERMEDIATE COCOMO

Software ai bi
Project
Organic 3.2 1.05
Semi-detached 3.0 1.12
Embedded 2.8 1.20

Here we use the semi-detached mode to get

E=3.0(LOC)exp(1.12)
=3.0(33.3)1.12
=152 person-months

For project duration

D=2.5(E)exp(0.35)
=2.5(152)0.35
=14.5 months

To determine number of people involved in project N=E/D

=152/14.5
=11 people

PUTNAM ESTIMATION MODEL :

The Putnam estimation model is dynamic multi-variable model. That assumes a


specific distribution of effort over the life of a software development project.
The model has been derived from labour distributions encountered on large
projects.

The Rayleigh norden curve may be used to derive a software equation


that relates the number of delivered lines of code to effort and development
time.
L=Ck K1/3 td4/3

Where ‘Ck’ is a state of technology constant and reflects through put constraints
that restricts the progress of the programmer. The values might be C k=2000 for
a poor software development environment.
Ck=8000 for a good software development environment.

Ck=11000 for an excellent environment.

The ‘Ck’ can be derived for local conditions using historical data collected
from past development efforts.

Where ‘K’ is the effort expanded over the entire life cycle for software.

Where ‘td’ is the development time in years.


INCREMENTAL PROCESS MODEL:

The incremental model combines the elements of water fall model and they are
applied in an iterative person.

The first increment in this model is generally a core product. Each increment
builds the product and submits it to the customer, for any suggested
modifications.

The next increment implements on the customers suggestions and add


additional requirements in the previous increment. This process is repeated until
the product is finished.

For example, the word processing software is developed using the incremental
model.

Advantages of incremental model:


 This model is flexible because the cost of development is low and initial
product delivery is faster.
 It is easier to test and debug during the smaller iteration.
 The customers can respond to its functionalities after every increments.

Disadvantages of incremental model:

 The cost of the final product may cross the cost estimated initially.
 This model requires a very clear and complete planning.
 The planning of the design is required before the whole system is broken
into small increments.
 The demands of customer for the increment causes problem during the
software architecture.

RAD MODEL:

RAD is a rapid application development model. Using the RAD model,


software product is developed in a short period of time.

The initial activity starts with the communication between customer and
developer. Planning depends upon the initial requirements and then the
requirements are divided into groups.

Planning is more important to work together on different modules.

The RAD model consists of following phases.

a). Business modelling

b).Data modelling

c).Process modelling

d).Application modelling

e).Testing and turnover


Business model :

 Business modelling model consists of the flow of information


between various functions in the project.
 For example, what type of information is produced by every
function and which are the functions to handle that information.

Data modelling:

 The information gathered in the business modelling phase is


reviewed and analysed to form objects and it is essential for the
business.
 The attributes of each object are identified and defined the
relationship between objects.

Process modelling:

 The data objects defined in the data modelling phase are changed
to fulfil the information flow to implement the business model.
 The process description is created for adding, modifying, deleting
or retrieving a data object.

Application Generation:

 In the application generation phase, the actual system is built.


 To construct the software, the automated tools are used.

Testing and Turnover :

 The prototypes are independently tested after each iteration. So that


the overall testing time is reduced.
 The data flow and the inter phases between all the components are
fully tested. Hence most of the programming components are
already tested.

You might also like