Lecture1 Overview
Lecture1 Overview
http://theorem.ku.edu.tr
Examples?
Therac-25 medical linear accelerator incident Intl Atomic Energy Agency declared radiological emergency in 2001 in Panama.
28 patients overexposed, 8 died. Data entry software was in error
Patriot missile timing error NASA Climate Orbiter failure London Ambulance Dispatch system
Dropped, duplicated calls
Development failures
IBM survey,1994
55% of systems cost more than expected 68% overran schedules 88% had to be substantially redesigned
10
Specification
But how do we know behavior is a bug?
Thus, knowing whether the code works requires us first to define what works means
A specification
Formal, or semi-formal
11
12
People will
Discuss what to do Divide up the work Implement incompatible components Be surprised when it doesnt all just work together
13
14
Summary of Issue 1
A specification allows us to:
Check whether software works Build software in teams at all
15
16
Time
Time is the enemy of all software projects
17
Why?
The world changes, sometimes quickly
Other people produce competitive software Software usually depends on many 3rd-party pieces
Compilers, networking libraries, operating systems, etc. All of these are in constant motion Moving slowly means spending lots of energy keeping up with these changes
18
19
Parallel Development
How many programmers can we keep busy?
As many as there are independent tasks
20
21
Interfaces
The chunks of work must be independent
But work together in the final system
22
Defining Interfaces
What are interfaces?
23
Defining Interfaces
Specifying interfaces is most important
Interfaces should not change a lot Effort must be spent ensuring everyone understands the interfaces Both things require preplanning and time
24
Software Architecture
To define interfaces, we must decompose a system into separate pieces with boundaries The decomposition of a system is driven by:
What it does How we build it Who builds it
25
How We Build It
Buildings need scaffolding during construction So does software! Two areas in particular:
Lots of extra code that is not really part of the final product Influence of third-party subsystems
26
Who Builds It
Software architecture reflects the structure of the organization that builds it Often, 5 developers = 5 components
27
Summary of Issue 2
Efficient development requires
Decomposing system into pieces Good interfaces between pieces
28
29
Conclusions
Software engineering boils down to two issues:
Know what you want to do Develop an efficient plan for doing it
30
31
Phases
Gather Requirements Specification Design Implementation Integration Product 32
33