Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
31 views

Chapter 1 - Introduction To Software Engineering

The document discusses the need for software engineering due to increasing complexity of software projects. It notes that 31% of projects are cancelled, 53% exceed cost estimates by 189% on average, and there are 94 restarts for every 100 projects. Factors contributing to this "software crisis" include larger problems, lack of training, increasing skill shortage, and low productivity improvements. Several high-profile software failures are described, such as the Ariane 5 rocket explosion and Patriot missile failure. The document outlines fundamental software engineering activities like specification, development, validation, and evolution. It also compares software engineering to computer science and system engineering.

Uploaded by

hamious.9293
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views

Chapter 1 - Introduction To Software Engineering

The document discusses the need for software engineering due to increasing complexity of software projects. It notes that 31% of projects are cancelled, 53% exceed cost estimates by 189% on average, and there are 94 restarts for every 100 projects. Factors contributing to this "software crisis" include larger problems, lack of training, increasing skill shortage, and low productivity improvements. Several high-profile software failures are described, such as the Ariane 5 rocket explosion and Patriot missile failure. The document outlines fundamental software engineering activities like specification, development, validation, and evolution. It also compares software engineering to computer science and system engineering.

Uploaded by

hamious.9293
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

Introduction to Software

Engineering
Chapter 1
Why Software Engineering?

Change in nature & complexity of software


Concept of one “guru” is over
We all want improvement (Ready for change)
Software industry is in Crisis!
The Evolving Role of Software

As per the IBM report, “31%of the project


get cancelled before they are completed,
53% overrun their cost estimates by an
average of 189% and for every 100
projects, there are 94 restarts”.
The Evolving Role of Software cont…

Managers and Technical Persons are asked:


Why does it take so long to get the program finished?
Why are costs so high?
Why can not we find all errors before release?
Why do we have difficulty in measuring progress of
software development?
Factors Contributing to the Software Crisis

Larger problems,
Lack of adequate training in software engineering,
Increasing skill shortage,
Low productivity improvements.
Some Software failures

Ariane 5. It took the European Space Agency 10 years


and $7 billion to produce Ariane 5, a giant rocket
capable of hurling a pair of three- ton satellites into
orbit with each launch and intended to give Europe
overwhelming supremacy in the commercial space
business.
The rocket was destroyed after 39 seconds of its launch,
at an altitude of two and a half miles along with its
payload of four expensive and uninsured scientific
satellites.
Some Software failures cont…

Y2K problem: It was simply the ignorance about the


adequacy or otherwise of using only last two digits
of the year. The 4-digit date format, like 1964, was
shortened to 2- digit format, like 64.
Some Software failures cont…

The Patriot Missile


First time used in Gulf war
Used as a defense from Iraqi Scud missiles
Failed several times including one that killed 28 US soldiers in
Dhahran, Saudi Arabia
A small timing error in the system’s clock accumulated to the
point that after 14 hours, the tracking system was no longer
accurate. In the Dhahran attack, the system had been operating
for more than 100 hours.
Some Software failures cont…

The Space Shuttle


Part of an abort scenario for the Shuttle requires fuel dumps
to lighten the spacecraft. It was during the second of these
dumps that a (software) crash occurred.
...the fuel management module, which had performed one
dump and successfully exited, restarted when recalled for
the second fuel dump...
A simple fix took care of the problem…but the programmers
decided to see if they could come up with a systematic way
to eliminate these generic sorts of bugs in the future. A
random group of programmers applied this system to the
fuel dump module and other modules. Seventeen
additional, previously unknown problems surfaced!
Some Software failures cont…

Financial Software. Many companies have experienced failures in


their accounting system due to faults in the software itself. The
failures range from producing the wrong information to the whole
system crashing
Windows XP. Microsoft released Windows XP on October 25,
2001. On the same day company posted 18 MB of compatibility
patches on the website for bug fixes, compatibility updates, and
enhancements Two patches fixed important security holes.
Some Software failures cont…

The blame for software bugs belongs to:


Software companies
Software developers
Legal system
Universities
What is software?

Computer programs and associated documentation


Software=Program + Documentation + Operating Procedures
List of documentation manuals
Analysis / Specification
Formal Specification
Context Diagram
Data Flow Diagrams
Design
Flow Charts
Entity Relationship Diagram
Implementation
Source Code Listings
Cross – Reference Listing
Testing
Test Data
Test Results
List of operating procedure manuals

User Manuals
System Overview
Beginner’s Guide Tutorial
Reference Guide
Operational Manuals
Installation Guide
System Administration Guide
Frequently asked questions about software engineering
Question Answer
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good Good software should deliver the required functionality
software? and performance to the user and should be
maintainable, dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is


concerned with all aspects of software production.

What are the fundamental Software specification, software development, software


software engineering validation and software evolution.
activities?
What is the difference between Computer science focuses on theory and fundamentals;
software engineering and software engineering is concerned with the
computer science? practicalities of developing and delivering useful
software.
What is the difference between System engineering is concerned with all aspects of
software engineering and computer-based systems development including
system engineering? hardware, software and process engineering. Software
engineering is part of this more general process.
Frequently asked questions about software engineering
Question Answer

What are the key challenges Coping with increasing diversity, demands for reduced
facing software engineering? delivery times and developing trustworthy software.

What are the costs of Roughly 60% of software costs are development costs,
software engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.

What are the best software While all software projects have to be professionally
engineering techniques and managed and developed, different techniques are
methods? appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems
require a complete and analyzable specification to be
developed. You can’t, therefore, say that one method is
better than another.

What differences has the web The web has led to the availability of software services
made to software and the possibility of developing highly distributed
engineering? service-based systems. Web-based systems development
has led to important advances in programming languages
and software reuse.
Software Product
Software products may be developed for a particular customer or
may be developed for a general market
Software products may be:
–Generic - developed to be sold to a range of different customers
–Bespoke (custom) - developed for a single customer according to their
specification
Software product is a product designated for delivery to the user
Essential attributes of good software
Product Description
characteristic
Maintainability Software should be written in such a way so that it can evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.

Dependability and Software dependability includes a range of characteristics


security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.

Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is


designed. This means that it must be understandable, usable and
compatible with other systems that they use.
What is software engineering?

Software Engineering is an engineering discipline which is


concerned with all aspects of software production.
Software Engineers should:
adopt a systematic and organized approach to their work
use appropriate tools and techniques depending on the problem to
be solved and the development constraints
use the resources available
Software Process

The software process is the way


in which we produce software.
Why is it difficult to improve
software process ?
Not enough time
Lack of knowledge
Wrong motivations
Insufficient commitment
Software Characteristics
Software does not wear out.
Software is not manufactured
Reusability of components
Software is flexible
Software Characteristics cont…
Comparison of Constructing a Bridge vs. Writing a Program
Constructing a Bridge Writing a Program
The problem is well understood Only some part of the problem are
understood, others are not.
There are many existing bridges Every program is different and
designed for special applications
The requirement for a bridge typically do Requirements typically change during all
not change much during construction phases of development.
The strength and stability of a bridge can Not possible to calculate correctness
be calculated with reasonable precision of a program with existing methods
When a bridge collapse, there is a When a program fails, the reasons are
detailed investigation and report often unavailable or even deliberately
concealed.
Engineers have been constructing bridges Developers have been writing programs
for thousand of years for 50 years or so.
Materials (wood, stone, iron and steel) Hardware and software changes rapidly
and techniques change slowly
The Changing Nature of Software

Trend has emerged to provide source code to the


customer and organizations.
Software where source codes are are
available known as open source software.
Examples
Opensource software: LINUX, MySQL, PHP, Open office, Apache
webserver etc.
Software Myths
Management Perspective
Management may be confident about good standards and
clear procedures of the company

Company has latest computers and state-of-the-art software tools,


so we shouldn’t worry about the quality of the product
Addition of more software specialists, those with higher skills and
longer experience may bring the schedule back on the track!
Software is easy to change
Computers provide greater reliability than the devices they replace
Software Myths cont…

Customer Perspective
A general statement of objectives is sufficient to get started
with the development of software. Missing/vague
requirements can easily be incorporated/detailed out as
they get concretized.
Software with more features is better Software
Software can work right the first time
Software Myths cont…

Developer Perspectives
Once the software is demonstrated, the job is done
Software quality can not be assessed before testing
The only deliverable for a software development project is
the tested code
Aim is to develop working programs
Software Engineering Terminologies
Deliverables and Milestones
▪ Different deliverables are generated during software development.
The examples are source code, user manuals, operating procedure
manuals etc.
▪ The milestones are the events that are used to ascertain the status of
the project. Finalization of specification is a milestone. Completion of
design documentation is another milestone. The milestones are
essential for project planning and management.
Product and Process
▪ Product: What is delivered to the customer, is called a product. It may
include source code, specification document, manuals,
documentation etc. Basically, it is nothing but a set of deliverables
only.
▪ Process: Process is the way in which we produce software. It is the
collection of activities that leads to (a part of) a product. An efficient
process is required to produce good quality products.
▪ If the process is weak, the end product will undoubtedly suffer, but an
obsessive over reliance on process is also dangerous.
Software Engineering Terminologies cont…

Measures, Metrics and Measurement


▪ A measure provides a quantitative indication of the extent,
dimension, size, capacity, efficiency, productivity or 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,
component or process possesses a given attribute.
Software Process and Product Metrics
▪ Process metrics quantify the attributes of software development
process and environment; whereas product metrics are measures
for the software product.
▪ Examples
➢ Process metrics: Productivity, Quality, Efficiency etc.
➢ Product metrics: Size, Reliability, Complexity etc.
Software engineering ethics

❖Software engineering involves wider responsibilities than simply the


application of technical skills.
❖Software engineers must behave in an honest and ethically responsible way
if they are to be respected as professionals.
❖Ethical behaviour is more than simply upholding the law but involves
following a set of principles that are morally correct.
Issues of professional responsibility
❖Confidentiality
❖Engineers should normally respect the confidentiality of their employers
or clients irrespective of whether or not a formal confidentiality
agreement has been signed.
❖Competence
❖Engineers should not misrepresent their level of competence. They
should not knowingly accept work which is outwith their competence.
❖ Intellectual property rights
❖ Engineers should be aware of local laws governing the use of intellectual
property such as patents, copyright, etc. They should be careful to
ensure that the intellectual property of employers and clients is
protected.
❖ Computer misuse
Software engineers should not use their technical skills to misuse other
people’s computers. Computer misuse ranges from relatively trivial (game
playing on an employer’s machine, say) to extremely serious (dissemination
of viruses).
The End!!!

You might also like