23
SOFTWARE RELATED CONCEPTS UNIT I

Software concepts

Embed Size (px)

Citation preview

SOFTWARE RELATED CONCEPTS

UNIT I

WHAT IS SOFTWARE??

The product that software professionals build and then support over the long term.

Software encompasses: (1) instructions (computer programs) that when

executed provide desired features, function, and performance;

(2) data structures that enable the programs to adequately store and manipulate information, and

(3) documentation that describes the operation and use of the programs.

SOFTWARE PRODUCTS

Generic products Stand-alone systems that are marketed and sold

to any customer who wishes to buy them. Examples – PC software such as editing, graphics

programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists.

Customized products Software that is commissioned by a specific

customer to meet their own needs. Examples – embedded control systems, air traffic

control software, traffic monitoring systems.

WHY IS SOFTWARE IMPORTANT?

The economies of ALL developed nations are dependent on software.

More and more systems are software controlled (transportation, medical, telecommunications, military, industrial, entertainment, etc.)

Software engineering is concerned with theories, methods and tools for professional software development.

Expenditure on software represents a significant fraction of GNP in all developed countries. (i.e., the market value of all products & services produced in one year)

SOFTWARE COSTS

Software costs often dominate computer system costs.

The costs of software on a PC are often greater than the hardware cost.

Software costs more to maintain than it does to develop.

For systems with a long life, maintenance costs may be several times development costs.

Software engineering is concerned with cost-effective software development.

CHARACTERISTICS OF SOFTWARE Software does not wear out:

There is a well known “bath-tub curve” in reliability studies of hardware products

The shape of the curve is like bath tub, so it is known as bath tub curve.

Burn-in phase

Useful life phase

Time

Failu

re Inte

nsi

ty

Wear-out

phase

CHARACTERISTICS OF SOFTWARE As the bath tub curve shows:

There are three phases in the life of a hardware product.

Initial phase is burn-in phase, where failure intensity is high.

Due to testing and fixing faults, failure intensity comes down initially and may stabilise after a certain time.

The second phase is the useful life phase where failure intensity is approximately constant & is called useful life of a product.

After few years failure intensity again increase due to wearing out of components, this phase is called as the wear-out phase.

CHARACTERISTICS OF SOFTWARE We do not have this last phase for software

products as it does not wear out. The curve for software is as follows:

Time

Failu

re Inte

nsi

ty

Software becomes reliable over time instead of wearing out.

It become obsolete if the environment for which it was developed, changes.

Hence software may be retired due to changes, new requirements, etc.

CHARACTERISTICS OF SOFTWARE

Software is not manufactured: The life of a software is from concept exploration

to the retirement of the software product. It is one time development effort and continuous

maintenance effort to keep it operational. However making 1000 copies of a software is not

an issue, it does not involve any cost. In case of hardware product, every product costs

us separately due to raw material and other processing expenses.

We do not have any assembly line in s/w development, hence it is not manufactured in the classical sense.

CHARACTERISTICS OF SOFTWARE Reusability of Components:

In software, every project is a new project. We start from scratch & design every unit of the s/w product.

Huge effort is required to develop a software which further increases the cost of the product.

However effort has been made to design standard components that may be used in new projects.

Software reusability has introduced anther area known as component based software engineering.

In hardware world, component reuse is a natural part of the engineering process. For example, a Television manufacturer would use the same components in all television sets.

But in software, it is just a beginning like graphical user interfaces are built using reusable components that enable the creation of graphics windows, pull down menus, etc.

CHARACTERISTICS OF SOFTWARE Software is Flexible:

A program can be developed to do almost anything, that is why a software is said to be flexible.

This characteristic may be the best sometimes, and may help us to accommodate any kind of change.

But most of the times, this characteristic has made the software development difficult to plan, monitor and control.

THE CHANGING NATURE OF SOFTWARE

System Software

Real-time

Software

Embedded

Software

Business Software

Personal Compute

r Software

Artificial Intelligence Software

Web Based

Software

Engineering & Scientific Software

THE CHANGING NATURE OF SOFTWARE Software has become an integral part of almost all

fields of human life. Its use exists in all the fields. Software applications are grouped under eight major

areas as follows:Area Description

System Software

• Collection of programs that provide service to other programs.

• Like compilers, operating systems, editors, drivers, etc.

Real Time Software

• Software used to monitor, control, and analyze real world events as they occur.

• Like weather forecasting software.

THE CHANGING NATURE OF SOFTWARE

Embedded Software

• Controls various functions of the product.

• Handles hardware components and is also called as Intelligent Software.

• The product could be an aircraft, security system, etc.

Business Software

• Software designed to process business applications.

• Like payroll, file monitoring system, employee management, etc.

Personal Computer Software

• Used in PCs.• Like word processors,

graphics, multimedia, DBMS, etc.

THE CHANGING NATURE OF SOFTWARE

Artificial Intelligence Software

• Makes use of non numerical algorithms to solve complex problems.

• Like expert systems, artificial neural network, signal processing software, etc.

Web Based Software

• Software related to web applications.

• Like, HTML, Java, DHTML, etc.

Engineering & Scientific Software

• Software for engineering & research purposes.

• Involve huge computing.• Like, CAD/CAM, SPSS,

MATLAB, etc.

SOFTWARE MYTHS

Software is easy to change: It is easy to edit the source code file. But making changes without introducing errors is

extremely difficult. Every change requires that complete system be

re-verified. Computers provide greater reliability

than the devices they replace: It is true that s/w does not fail in the traditional

sense. But still the general ledgers are still not perfectly

accurate. In days of manual accounting, human error was a

fact of life, now we have s/w error as well.

SOFTWARE MYTHS

Testing the S/W can remove all the errors: Testing can only show the presence of errors. It cannot show absence of errors.

Reusing S/W increases safety: Code reuse can make dramatic improvement in

the development efficiency. But it still requires analysis and testing to

determine its suitability and working. S/W can work right the first time:

Software needs proper analysis and testing so that it can work right.

We cannot assume that the software, when implemented for the first time, will work perfectly.

SOFTWARE MYTHS

Software with more features is a better software: The best & most enduring programs are those

which do one thing well.

SOME IMPORTANT TERMINOLOGIES

Deliverables & Milestones Deliverables are the different things generated

during S/W development. Like source code, user manuals, operating

procedure manuals, etc. Milestones are the events that are used to

determine the status of the project. For example, Finalization of specifications is a

milestone.

SOME IMPORTANT TERMINOLOGIES

Product & Process Product is what is delivered to the customer.

It may include source code, specification document, manuals, documentation, etc.

Basically a product is a set of deliverables. Process is the way in which we produce the

software. It is the collection of activities that lead to a

product. An efficient process is required to produce good

quality products.

SOME IMPORTANT TERMINOLOGIES

Measures, Metrics & Measurement A Measure provides a quantitative indication of

the: Dimension Size Capacity Efficiency Productivity, and Reliability

Of some attributes of a product or process Measurement is the act of evaluating a measure. A Metric is a quantitative measure of the degree

to which a system processes a given attribute. It works like a formula

SOME IMPORTANT TERMINOLOGIES

Software, Process, & Product Metrics Process Metrics quantify the attributes of

software development process. For example, productivity, quality, failure rate,

efficiency, etc. Product Metrics are the measures of the s/w

product. For example, size, complexity, reliability,

functionality, etc. Software Metrics are used to quantitatively

characterize different aspects of s/w process or s/w product.

SOME IMPORTANT TERMINOLOGIES

Productivity & Effort Productivity is defined as the rate of output per

unit of effort. That means the output achieved with regard to the

time taken but irrespective of the cost incurred. There are two issues for deciding the unit of

measure: Quantity of output Period of time

In software, one of the measure for quantity of output is Lines of code (LOC) produced.

Hence most appropriate unit of effort is Person Months (PM), meaning, number of persons involved for specified months.

So productivity may be measured as LOC/PM.