Title: Why Software Engineering
1Why Software Engineering?
2What is software?
- A program and all of its associated information
and materials needed to support its installation,
operation, repair and enhancement.
3What is SE?(1)
- Solving Problems
- Analyzing
- Synthesis
- Method or Technique
- Tool
- Procedure
- Paradigm
4What is SE?(2)
- We can view the computers and programming
languages as tools to be used in designing and
implementing a solution to a problem.
5What is good software?(1)
- Consideration of Software quality in 3 ways
- The quality of the product
- The quality of the process
- The quality in the context of the business
environment - Software quality
- Conformance
- Correctness
- Reliability
- Safety
6What is good software?(2) - The quality of the
product
- In view of users
- Easy to learn and use
- External characteristics failure
- In view of designer and maintainer
- Internal characteristics faults in
requirements, design, and code inspections
7Data commonality
8What is good software?(3)- The quality of Process
- Activities that affect the ultimate product
quality - The quality of the development and maintenance
process - Modeling the process
9What is good software?(4)- Software quality
- Correctness the extent to which a program
satisfies its specification and fulfills the
customer's mission objectives - Reliability probability of failure-free
operation of a computer program for a specified
time in a specified environment. - Safety Probability that the conditions that can
lead to a mishap (hazards) do not occur
10What is good software(5)?-Software quality
factors
Portability Reusability Interoperability
Maintainability Flexibility Testability
Product Revision
Product Transition
Product Operation
Correctness Reliability Efficiency Integrity
Usability
11Who does software engineering?
- Customer One who is paying for the software
system - Developer One who is building the software
system for the customer - User One who will actually use the system
- Subcontractor Additional developer who build s
subsystem and deliver to the developers to be
included in the final product
12A system approach(1)
- System
- Objects
- Activities
- A descriptions of the relationships among
entities and activities - A definition of the boundary of the system
- Activity Something that happens in a system.
- Objects(Entities) The elements involved in the
activities.
13A system approach(2) - Interrelated systems
- The boundary of a system What is within and
without and what crosses the boundary. - One system exists inside another system Focus
on the smallest system at first - Incremental development
- When building a system to replace an older
version. - Static and dynamic views of a system.
14Reporting system for data
15A engineering approach - Building a system
- Construction of the system follows understanding
its nature. - Activities in the development of software
- Requirements analysis and definition
- System design
- Program design
- Writing the programs
- Unit testing
- Integration testing
- System testing
- System delivery
- Maintenance
16Members of the development team
- Requirements analyst
- Designer
- Programmer
- Tester
- Customer
- Trainer
- Maintenance team
- Librarian
- Configuration management team
17ANALYST
DESIGNER
PROGRAMMER
SOFTWARE DEVELOPMENT STEPS
DEVELOPER ROLES
TESTER
TRAINER
MAINTENANCE
18How has software engineering changed?(1)-The
nature of change
- Multiple systems, network control, security, user
interface presentation waterfall
approach to development is no longer suitable. - Change factors
- Criticality of time-to-market for commercial
products - Shifts in the economics of computing
- Availability of powerful desktop computing
- Extensive local and wide-area networking
- Availability and adoption of oo tech.
- Graphical user interfaces
- Unpredictability of the waterfall model of
software development
19Factors influencing software engineering
- Types of application
- Software size
- Software requirements
- Production and Acquisition mode
- Hardware environment
- Number of users
20Summary
- Software engineering definition
- The systematic approach to the development,
operation - IEEE Computer Society. - Design, building, and maintaining large software
systems - Ian Sommervile. - Software definition
- Problems in engineering quality software
- Cost overruns
- Late delivery
- Inadequate performance
- Unreliability
- Difficulty in maintenance
21Unsuccessful case - An Investigation of the
Therac-25 accidents(IEEE Computer, Jul. 1993)
- A computerized radiation therapy machine
- 1983-1984 accident free operation
- 1985-1987 6 accidents
- Safety-critical software
- Software development practice was unsatisfactory
- A single developer with unknown background or
experience, using PDP 11 assembly - Little documentation on software requirements and
test plan - Quality of safety is questionable