Upload
amit-udhwani
View
70
Download
2
Embed Size (px)
Citation preview
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.