Title: An Introduction to Software Engineering
1- An Introduction to Software Engineering
2Objectives
- Introduce software engineering and to explain its
importance - Set out the answers to key questions about
software engineering
3FAQs 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?
4What 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).
5Software 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).
6Software Engineering vs. Computer Science
COMPUTER SCIENCE
CUSTOMER
Problem
Theories
Computer Functions
SOFTWARE ENGINEERING
Tools and Techniques to Solve Problem
7Software 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
8Communication is a critical element.
9(No Transcript)
10Software 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.
11What 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.
12Some 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?
13Problems 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
14Software Crisis
- Research from Standish Group Data on 9236
development projects completed in 2004.
15Abandoned or Cancelled Projects
http//articles.directorym.net/An_Introduction_to_
Catastrophe_Disentanglement_Lynchburg_VA-r923574-L
ynchburg_VA.html
16Software 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
17New 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.
18Weapons Against Software Crisis
- Improving software engineering methodologies
- High-level languages and tools that encourage and
enforce these principles
19Software 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.
20Costs 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.
21Costs 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.
22Activity cost distribution
23Product development costs
24Maintenance Costs
(a) Between 1976 and 1981 (b) Between 1992 and
1998
25Changing 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)
27Why 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)
28Wear vs. Deterioration
Roger S. Pressman, Software Engineering A
Practitioner's Approach, Fourth Edition 1997
29The Cost of Change
Roger S. Pressman, Chapter 1 Page 19, Software
Engineering A Practitioner's Approach, Fourth
Edition 1997
30What 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
31What 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.
32What 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
33Software 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
34Software Types
- system software
- real-time software
- business software
- engineering/scientific software
- embedded software
- PC software
- AI software
- WebApps (Web applications)
35What 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.
36What 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
37Software 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
38What 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.
39Software 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
40What 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.
41What 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.
42What 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
43Key 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.