pptx

advertisement
CS-367
Software Engineering
Fall 2012
1
Organizational Details
Class Meeting:
4:00am-6:45pm, Wednesday, Room SCIT-222
Instructor: Dr. Igor Aizenberg
Office: Science and Technology Building, 104C
Phone 903-334 6654
e-mail: igor.aizenberg@tamut.edu
Office hours:
Tuesday 12:15p-2:30p, Wednesday 12:00p-4:00p,
Thursday 12:15p-2:30p; 3:45p-5:15p
Class Web Page: http://www.eagle.tamut.edu/faculty/igor/CS-367.htm
2
Text Book
• Ian Sommerville, Software Engineering,
9/e (2011), Addison-Wesley, Pearson 2012
• ISBN: 978-0-13-703515-1
3
Structure of the Course
• Lectures (6-7 weeks)
• Software design project (7-8 weeks) – we will
design a simple image processing system for
noise filtering and image enhancement (all
students will work in a single team)
4
Control
 Essay on the stages and processes of
software engineering (after the last lecture)
 Course Project
5
Grading
Grading Method
Essay:
Course Project:
25%
75%
Grading Scale:
90%+  A
80%+  B
70%+  C
60%+  D
less than 60%  F
6
Engineering and
Software Engineering
• Engineering is the analysis, design,
construction, verification and management of
technical (or social) entities
• Software Engineering is an engineering
discipline that is concerned with all aspects of
software production from the early stages of
system specification through to maintaining
the system after it has gone into use
7
Software
• Computer software is the product that software
engineers design and build. It includes:
 Source code
 The executable programs
 Documentation (both electronic and hard copy)
 Data associated with a program – this may take
the form of numbers and text, or even pictorial
and multimedia formats
8
Software
• Software products may be developed for a particular
customer or may be developed for a general market
• Generic products
 Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
 Examples – PC software such as 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
9
Product specification
• Generic products
The specification of what the software should do
is owned by the software developer and decisions
on software change are made by the developer
• Customized products
The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required
10
Software Engineering: Key Points
• The economies of ALL developed nations are
dependent on software
• More and more systems are software controlled
• Software engineering is concerned with theories,
methods and tools for professional software
development
• Software engineering expenditure represents a
significant fraction of GDP in all developed
countries
11
Software Engineering: Cost
• Software costs dominate computer system
costs. The costs of software on are usually
much 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 costeffective software development
12
Software Engineering: Cost
• After surveying 8,000 IT projects, Standish Group
reported about 30% of all projects were
cancelled.
• Average cancelled project in U.S. is about a year
behind schedule and has consumed 200% of
expected budget (Capers Jones).
• Work on cancelled projects comprises about 15%
of total U.S. software efforts, amounting to as
much much as $14 billion in 1993 dollars (Capers
Jones).
13
Software Engineering: Cost
• For generic software, roughly 60% of costs are
development costs, 40% are maintenance
costs
• For customized software, a picture is opposite:
development costs usually are significantly
lower than development costs
14
Software Engineering: Cost
Custom software
15
Software Engineering: Cost
Custom software
16
Software Engineering: Cost
• Costs vary depending on the type of system
being developed and the requirements of
system attributes such as performance and
system reliability
• Distribution of costs depends on the
development model that is used
17
What is a software process?
• A set of activities whose goal is the development
or evolution of software
• Generic activities in all software processes are:
 Specification - what the system should do and its
development constraints
 Development - production of the software system
 Validation - checking that the software is what the
customer wants
 Evolution - changing the software in response to
changing demands
18
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
Evolutionary development
Formal transformation
Integration from reusable components
19
Software Engineering: Importance
• Head of Air Force Systems Command:
‘‘Software is the Achilles heel of weapons
development"
• 7 out of every 10 major weapons
development programs are encountering
software problems and the rate is increasing.
20
Software Engineering: Key Issues
• Of completed projects, 2/3 experience schedule
delays and cost overruns
• 2/3 of completed projects experience low
reliabilityand quality problems in first year of
deployment
• Software errors in fielded systems typically range
from 0.5 to 3.0 occurrences per 1000 lines of
code (Bell Labs survey)
• Civilian software: at least 100 English words
produced for every source code statement
• Military: about 400 words per 1 source statement
21
Software Engineering: Key Issues
• Belady and Lehman’s Laws: Software will
continually change
• Software becomes increasingly unstructured as it
is changed
• Leveson’s Law: Introducing computers will not
reduce personnel numbers or costs
• Parkinson’s Law: "Software expands to fill the
available memory"
• Reiser’s Law: "Software is getting slower more
rapidly than hardware becomes faster"
22
Why has software engineering
become a discipline?
• In the early years of computing (some 50+
years ago) the software applications that were
created were small and relatively easy to test
• With an increase in the speed of computers
came the demand for larger more powerful
applications
23
Why has software engineering
become a discipline?
• 40-50 years ago software project managers began
developing software using informal approaches
which led to software that was
 delivered late;
 over budget;
 unreliable;
 difficult to maintain
• This “software crisis” became the motivation for
a radically different developmental approach that
needed to be both reliable and cost-effective
24
Why has software engineering
become a discipline?
This approach needed to answer the following
questions:
Why does it take so long to get software finished?
Why are the development costs so high?
Why can’t we find all the errors before the
software is released?
Why is there difficulty in measuring progress as
the software is being developed?
25
Software Engineering Roles
To understand software engineering roles the
following definitions are required:
• User - the person(s) who uses the software.
• Software development - covers all aspects of
software production before the product
enters the maintenance phase, namely:
requirements elicitation, authoring of
specifications, design, implementation and
testing
26
Software Engineering Roles
These roles include: the customer, marketing
and sales, program manager, product
manager, project manager, business analyst,
quality assurance and the software engineer.
The customer is the individual or company for
whom the product is developed
The marketing and sales team markets and sells
the product
27
Software Engineering Roles
The program manager is responsible for
coordinating interdependencies between projects
in his/her portfolio. These projects might be for
different software products
The product manager is responsible for a given
product in the program manager’s portfolio
The project manager runs a given project
28
Software Engineering Roles
The business analyst is responsible for getting
requirements from clients and creating the
relevant documentation
The quality assurance personnel ensure that the
software is functioning correctly
The software engineer(s) are the individual (team)
responsible for the production of the software
29
Role Relationship Diagram
30
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
31
CASE (Computer-Aided Software
Engineering)
• Software systems which 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
32
Attributes of good software
• The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable
• Maintainability
– Software must evolve to meet changing needs
• Dependability
– Software must be trustworthy
• Efficiency
– Software should not make wasteful use of system resources
• Usability
– Software must be usable by the users for which it was designed
33
What differences has the web made to
software engineering?
• The web has led to the availability of
software services and the possibility of
developing highly distributed servicebased systems. Web-based systems
development has led to important
advances in programming languages and
software reuse
34
The key challenges facing software
engineering
• Coping with legacy systems, coping with increasing
diversity and coping with demands for reduced
delivery times
• Legacy systems
– Old, valuable systems must be maintained and updated
• Heterogeneity
– Systems are distributed and include a mix of hardware and
software
• Delivery
– There is increasing pressure for faster delivery of software
35
Software process activities
• Software specification, where customers and
engineers define the software that is to be
produced and the constraints on its operation
• Software development, where the software is
designed and programmed
• Software validation, where the software is
checked to ensure that it is what the customer
requires
• Software evolution, where the software is
modified to reflect changing customer and
market requirements
36
Application types
• Stand-alone applications
– These are application systems that run on a local
computer, such as a PC. They include all necessary
functionality and do not need to be connected to a
network.
• Interactive transaction-based applications
– Applications that execute on a remote computer and are
accessed by users from their own PCs or terminals. These
include web applications such as e-commerce applications.
• Embedded control systems
– These are software control systems that control and
manage hardware devices. Numerically, there are probably
more embedded systems than any other type of system
37
Application types
• Batch processing systems
– These are business systems that are designed to process
data in large batches. They process large numbers of
individual inputs to create corresponding outputs
• Entertainment systems
– These are systems that are primarily for personal use and
which are intended to entertain the user
• Systems for modelling and simulation
– These are systems that are developed by scientists and
engineers to model physical processes or situations, which
include many, separate, interacting objects
38
Application types
• Data collection systems
– These are systems that collect data from their
environment using a set of sensors and send that
data to other systems for processing.
• Systems of systems
– These are systems that are composed of a number
of other software systems
39
Key points
• Software engineering is an engineering discipline that
is concerned with all aspects of software production.
• Essential software product attributes are:
maintainability, dependability and security, efficiency
and acceptability.
• The high-level activities of specification, development,
validation and evolution are part of all software
processes
• The fundamental notions of software engineering are
universally applicable to all types of system
development
40
Key points
• There are many different types of system and
each requires appropriate software
engineering tools and techniques for their
development
• The fundamental ideas of software
engineering are applicable to all types of
software system
41
Download