An Introduction to Software Engineering - PowerPoint PPT Presentation

About This Presentation
Title:

An Introduction to Software Engineering

Description:

An Introduction to Software Engineering Time of Post delivery Maintenance Remember time is money in business The figure on the left (a) shows costs from 1976 1981 ... – PowerPoint PPT presentation

Number of Views:165
Avg rating:3.0/5.0
Slides: 44
Provided by: Ted9215
Learn more at: http://www.cs.fsu.edu
Category:

less

Transcript and Presenter's Notes

Title: An Introduction to Software Engineering


1
  • An Introduction to Software Engineering

2
Objectives
  • Introduce software engineering and to explain its
    importance
  • Set out the answers to key questions about
    software engineering

3
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?

4
What is software engineering?
From Wikipedia
Software engineering is the application of a
systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software.
Classic Definition (1969)
The establishment and use of sound engineering
principles in order to obtain economically built
software that is reliable and works efficiently
on real machines.
IEEE Definition (1993)
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).
5
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).

6
Software Engineering vs. Computer Science
COMPUTER SCIENCE
CUSTOMER
Problem
Theories
Computer Functions
SOFTWARE ENGINEERING
Tools and Techniques to Solve Problem
7
Software vs. Hardware
  • You cant see, touch, or feel software
  • Software is only engineered, not manufactured
  • Software doesnt wear out
  • Software is complex
  • Software is a differentiator
  • Software can behave like an aging factory

8
Communication is a critical element.
9
(No Transcript)
10
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.

11
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.
12
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?

13
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

14
Software Crisis
  • Research from Standish Group Data on 9236
    development projects completed in 2004.

15
Abandoned or Cancelled Projects
http//articles.directorym.net/An_Introduction_to_
Catastrophe_Disentanglement_Lynchburg_VA-r923574-L
ynchburg_VA.html
16
Software Crisis
  • 2002 survey of information technology
    organizations by Cutter Consortium Data
  • 78 have been involved in disputes ending in
    litigation
  • In 67 of the disputes, the functionality of the
    information system as delivered did not meet up
    to the claims of the developers
  • In 56 of the disputes, the promised delivery
    date slipped several times
  • In 45 of the disputes, the defects were so
    severe that the information system was unusable

17
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.

18
Weapons Against Software Crisis
  • Improving software engineering methodologies
  • High-level languages and tools that encourage and
    enforce these principles

19
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 clients needs.

20
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.

21
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.

22
Activity cost distribution
23
Product development costs
24
Maintenance Costs

(a) Between 1976 and 1981 (b) Between 1992 and
1998
25
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

26
(No Transcript)
27
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 clients computer(s)

28
Wear vs. Deterioration
Roger S. Pressman, Software Engineering A
Practitioner's Approach, Fourth Edition 1997
29
The Cost of Change
Roger S. Pressman, Chapter 1 Page 19, Software
Engineering A Practitioner's Approach, Fourth
Edition 1997
30
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

31
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.

32
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

33
Software Terminology
  • Open-source software
  • Developed and maintained by a team of volunteers
  • May be downloaded and used free of charge
  • Examples
  • Linux operating system
  • Firefox web browser
  • Apache web server

34
Software Types
  • system software
  • real-time software
  • business software
  • engineering/scientific software
  • embedded software
  • PC software
  • AI software
  • WebApps (Web applications)

35
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.

36
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

37
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

38
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.

39
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

40
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.

41
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.

42
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

43
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.
Write a Comment
User Comments (0)
About PowerShow.com