Top Banner
An Introduction to Software Engineering
43

An Introduction to Software Engineering

Feb 25, 2016

Download

Documents

emmett

An Introduction to Software Engineering. Objectives. Introduce software engineering and to explain its importance Set out the answers to key questions about software engineering. FAQs about software engineering. What is software engineering? - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: An Introduction to Software Engineering

An Introduction to Software Engineering

Page 2: An Introduction to Software Engineering

Objectives Introduce software engineering and to explain its

importance Set out the answers to key questions about

software engineering

Page 3: An Introduction to Software Engineering

FAQs about software engineering What is software engineering? What is the difference between software engineering,

computer science, and systems engineering? What is the software crisis? What are the costs of software engineering? What is software and what are the attributes of good

software? What is a software process and a software process model? What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the key challenges facing software engineering?

Page 4: An Introduction to Software Engineering

What is software engineering?

“The establishment and use of sound engineering principles in order to obtain economically built software that is reliable and works efficiently on real machines.”

“Software Engineering: (1) The application of a systematic, disciplines, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering to software. (2) The study of approaches as in (1).”

IEEE Definition (1993)

Classic Definition (1969)

From Wikipedia“Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.’’

Page 5: An Introduction to Software Engineering

Software Engineering vs. Computer Science

Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

Computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike e.g. physics and electrical engineering).

Page 6: An Introduction to Software Engineering

Software Engineering vs. Computer Science

COMPUTER SCIENCE CUSTOMER

SOFTWAREENGINEERING

Theories ComputerFunctions

Problem

Tools and Techniques toSolve Problem

Page 7: An Introduction to Software Engineering

Software vs. Hardware You can’t see, touch, or feel software Software is only engineered, not manufactured Software doesn’t wear out Software is complex Software is a differentiator Software can behave like an aging factory

Page 8: An Introduction to Software Engineering

Communication is a critical element.

Page 9: An Introduction to Software Engineering
Page 10: An Introduction to Software Engineering

Software Engineering vs. System Engineering System engineering is concerned with all aspects

of computer-based systems development including hardware, software and process engineering.

Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system.

System engineers are involved in system specification, architectural design, integration and deployment.

Page 11: An Introduction to Software Engineering

What to Study in Software Engineering?

Products produced

Processes used to produce the products

The final products are software components. They may be fully executables components, programs, modules, systems, or simply methods. There are many software deliverables between the specification of the products and the actual products.

The software development life cycle describes the development process for producing software products. However there are many other items within the process. We will investigate the full process of software engineering.

Page 12: An Introduction to Software Engineering

Some core questions What is the software product? Who does software engineering of the product? Why is software important? What are the steps in software engineering? What is the work product of the engineering

process? How do we ensure products are built correctly

and that the correct product is built?

Page 13: An Introduction to Software Engineering

Problems Behind the “Software Crisis”

Increased size and complexity of systems

Cost overruns Design bugs after implementation Maintenance ripple effect Requirements and design needed

development tools, not just in the programming tools

Page 14: An Introduction to Software Engineering

Software Crisis Research from Standish Group Data on 9236 development projects

completed in 2004.

Page 15: An Introduction to Software Engineering

Abandoned or Cancelled Projects

http://articles.directorym.net/An_Introduction_to_Catastrophe_Disentanglement_Lynchburg_VA-r923574-Lynchburg_VA.html

Page 16: An Introduction to Software Engineering

Software Crisis 2002 survey of information technology

organizations by Cutter Consortium Data 78% have been involved in disputes ending

in litigationo In 67% of the disputes, the functionality of the information system as delivered did not meet up to the claims of the developers

o In 56% of the disputes, the promised delivery date slipped several times

o In 45% of the disputes, the defects were so severe that the information system was unusable

Page 17: An Introduction to Software Engineering

New Aspects of Crisis (In)security - we have allowed ourselves to become too

dependent on software (and hardware) that was never designed to be robust or secure

Over complexity - competition for more features, ease of use, and integration are making products too large to comprehend and maintain

Internationalization – this is a problem for the US, which has been presumptuously complacent about its leadership

Software patents - these legal "land mines" are beginning to choke the software industry

Rapid changes – tower of Babel, multicore, etc.

Page 18: An Introduction to Software Engineering

Weapons Against Software Crisis

Improving software engineering methodologies

High-level languages and tools that encourage and enforce these principles

Page 19: An Introduction to Software Engineering

Software Engineering Definition

The software crisis yielded yet another definition of software engineering:

Discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the client’s needs.

Page 20: An Introduction to Software Engineering

Costs of Software Engineering Software costs dominate computer systems

costs. Roughly 60% of costs are development costs, 40%

are testing costs. For custom software, evolution costs often exceed development costs.

Software maintenance costs are more than software development costs. For systems with a long life the maintenance may

be several times the development costs. And often even bad software has a long life.

Page 21: An Introduction to Software Engineering

Costs of Software Engineering

Costs vary depending on the type of system being developed. The costs depend of the requirements of system

attributes such as performance and system reliability as well as the complexity of the type of system being developed.

Distribution of costs depends on the development model that is used.

Page 22: An Introduction to Software Engineering

Activity cost distribution

Page 23: An Introduction to Software Engineering

Product development costs

Page 24: An Introduction to Software Engineering

Maintenance Costs

(a) Between 1976 and 1981(b) Between 1992 and 1998

Page 25: An Introduction to Software Engineering

Changing View of Maintenance Postdelivery maintenance

Development-then-maintenance model Temporal definition

Modern maintenance Occurs whenever a fault is fixed or the

requirements change, irrespective of whether it takes place before or after installation of the product

Page 26: An Introduction to Software Engineering

Slide 1.15

© The McGraw-Hill Companies, 2002

Cost to Detect and Correct a Fault

Page 27: An Introduction to Software Engineering

Why So Costly? To correct a fault early in the life cycle

Usually just a document needs to be changed To correct a fault late in the life cycle

Change the code and the documentation Test the change itself Perform regression testing Reinstall the product on the client’s

computer(s)

Page 28: An Introduction to Software Engineering

Wear vs. Deterioration

idealized curve

change

actual curve

Failurerate

Time

increased failurerate due to side effects

Roger S. Pressman, Software Engineering: A Practitioner's Approach, Fourth Edition 1997

Page 29: An Introduction to Software Engineering

The Cost of Change

Definition Development After release

1x

1.5-6x

60-100x

Roger S. Pressman, Chapter 1 Page 19, Software Engineering: A Practitioner's Approach, Fourth Edition 1997

Page 30: An Introduction to Software Engineering

What is a Software Product? A set of items or objects called a configuration. It

includes things like: Multiple separate programs Configuration files which are used to set up these

programs System documentation which describes the structure of

the system Developer and User documentation which explains how

to use the system Data for the system Web sites for users to download recent product

information

Page 31: An Introduction to Software Engineering

What is software? Computer programs and associated

documentation such as requirements, design models and user manuals.

Software products may be developed for a particular customer or may be developed for a general market.

New software can be created by developing new programs, configuring generic software systems or reusing existing software.

Page 32: An Introduction to Software Engineering

What is software?Software products may be

GENERIC developed to be sold to a range of different

customers e.g. PC software such as Excel or Word. referred to as commercial off-the-shelf (COTS)

software or clickware supplied by a vendor

BESPOKE (custom) - developed for a single customer according to their specification.Product specification controlled by the product developer

Page 33: An Introduction to Software Engineering

Software Terminology Open-source software

Developed and maintained by a team of volunteers

May be downloaded and used free of charge

Examples:o Linux operating systemo Firefox web browsero Apache web server

Page 34: An Introduction to Software Engineering

Software Typeso system softwareo real-time softwareo business softwareo engineering/scientific softwareo embedded softwareo PC softwareo AI softwareo WebApps (Web applications)

Page 35: An Introduction to Software Engineering

What are the attributes of good software? The software should deliver the required functionality

and performance to the user and should be maintainable, dependable and acceptable.

Maintainability Software must evolve to meet changing needs;

Dependability Software must be trustworthy;

Efficiency Software should not make wasteful use of system resources;

Acceptability Software must accepted by the users for which it was designed.

This means it must be understandable, usable and compatible with other systems.

Page 36: An Introduction to Software Engineering

What are the attributes of good software? From the Users Perspective

Correctness Reliability Efficiency Maintainability Usability Robustness

From the Developers Perspective Consistency Understandability Testability Compactness Compatibility Integrity

Page 37: An Introduction to Software Engineering

Software Process A set of activities and associated results

which produce a software product Incorporates a software life-cycle model,

techniques, the tools used, and the software developers

Page 38: An Introduction to Software Engineering

What is a software process model? A simplified representation of a software process,

presented from a specific perspective. Examples of process perspectives are

Workflow perspective - sequence of activities; Data-flow perspective - information flow; Role/action perspective - who does what.

Generic process models Waterfall; Iterative development; Component-based software engineering.

Page 39: An Introduction to Software Engineering

Software Life-cycle Models

Specifies the various phases of the software process and the order in which they are to be carried out.

Covered in Chapter 1 Dennis

Page 40: An Introduction to Software Engineering

What are software engineering methods? Structured approaches to software development which

include system models, notations, rules, design advice and process guidance.

Model descriptions Descriptions of graphical models which should be produced;

Rules Constraints applied to system models;

Recommendations Advice on good design practice;

Process guidance What activities to follow.

Page 41: An Introduction to Software Engineering

What is CASE? Computer-Aided Software Engineering Software systems that are intended to provide

automated support for software process activities. CASE systems are often used for method support. Upper-CASE

Tools to support the early process activities of requirements and design;

Lower-CASE Tools to support later activities such as programming, debugging

and testing.

Page 42: An Introduction to Software Engineering

What are the key challenges facing software engineering?

Heterogeneity - platforms and execution environments Delivery – faster time to market Trust –includes reliability, security Shifts in economics of computing

Lower hardware costs and greater development and maintenance costs.

Shifts in technology Extensive networking Availability and adoption of OO technology Graphical user interfaces

Budgets and costs Maintaining quality

Page 43: An Introduction to Software Engineering

Key points SWE is an engineering discipline that is concerned with

all aspects of software production. Software products consist of developed programs and

associated documentation. Essential product attributes are maintainability, dependability, efficiency and usability.

The software process consists of activities that are involved in developing software products. Basic activities are software specification, development, validation and evolution.

CASE tools are software systems which are designed to support routine activities in the software process such as editing design diagrams, checking diagram consistency and keeping track of program tests which have been run.