Software Engineering and Intro to Testing

advertisement
Software Engineering:
It’s Much More Than
Programming!
Sources:
“Software Engineering: A Practitioner’s Approach Fourth Edition” Pressman, Chapter 1
HP Software Engineering via Martin Griss
“Code Complete” McConnell, Chapters 1-3
CS 3500
SE - 1
Software Eras
(Pressman Figure 1.1)
Second era
 Multiuser
 Real-time
 Database
 Product
software
The fifth era?
• Cloud computing
• Smart phones
• Multi-core
1950
CS 3500
1960
1970
Third era
 Distributed
systems
 Embedded
“intelligence”
 Low cost
hardware
 Consumer
impact
1980
Fourth era
 Powerful
desk-top
systems
 OOP
 Parallel
 Internet
1990
Increasing Amounts of Software
Early years
 Batch
 Limited
distribution
 Custom
software
200x
SE - 2
The 50+ Year “Software Crisis”






CS 3500
Hardware advances faster than the ability of
software to take advantage of the hardware
Demand for new programs exceeds our ability to
produce them
Computers are pervasive; reliability is key; major
damage is possible on failure
We struggle to build reliable, high quality software
Support and enhancement of existing programs is
expensive and error prone due to poor design and
inadequate resources
Many, many projects are started but never finished
SE - 3
Aspects of Software Crisis

Techniques that work for small programs don’t scale
Big systems live on beyond original author(s)
Most effort expended after first release
Requirements change rapidly
User expectations increase rapidly
Most software late, expensive, buggy or inadequate
Last minute testing can’t ensure quality

What can you add to this list?






CS 3500
SE - 4
Infant
mortality
Wear out
Time
Hardware failure rates
(Pressman 1.2)
Failure rate
Failure rate
Software vs. Hardware
obsolescence
Time
Idealized software failure rates
(Pressman 1.3)
Why the difference?
CS 3500
SE - 5
obsolescence
Failure rate
Failure rate
Software Failure Rates
Side effects
Change
Time
Idealized software failure rates
(Pressman 1.3)
Time
Actual software failure rates
(Pressman 1.4)
Why the difference?
CS 3500
SE - 6
Software Myths

Management Myths
– We have books of standards.
– I work very hard to put the latest, greatest, fastest, state-of-the-art
hardware in front of all my programmers.
– We have the greatest CASE tools around.
– If we get behind, we can just add more programmers.

Customer myths
– A general statement of objectives is sufficient to start coding, we can
fill in the details later
– Project requirements change constantly, but change is easy because
software is flexible.

Programmer myths
– Once the program is written and working, our job is done.
– Until the program is running, there is no way to assess quality.
– The only deliverable for a successful project is the working program.
CS 3500
SE - 7
Solution: Disciplined Software
Engineering
Systems
Management,
Sociology
Software
Engineering
Computer
Science
“More than just programming and algorithms”
CS 3500
Psychology,
HCI
SE - 8
Software Lifecycle

Development phases:
–
–
–
–

Analysis [What do we need?]
Design [How do we do it?]
Coding [Implement it]
Testing [Make sure it works]
(14-22%)
(16-21%)
(30-39%)
(25-37%)
Relative time to fix defect after release
depends on origin:
– Analysis >> design >> coding >> test

Average time in maintenance
– Only 25-45% of entire lifecycle spent in development
– Fixing defects is 20-30% of lifecycle; enhancing the
program is 35-45% of lifecycle
– Half of maintenance time is spent figuring things out
CS 3500
SE - 9
Software Development Processes

Traditional Waterfall Process
-
-

Address each step completely before moving to the next
Each step might take many months
Premium on getting things right the first time
Emphasis on management hierarchies and written reports
Agile Process
-
Iterate repeatedly through each step, gradually growing the
system
Each iteration produces an incomplete but usable system
Design changes and code refactoring are the norm
Premium on frequent and rapid interactions among clients and
developers
Emphasis on face-to-face interactions
What Will We Study?

C# Programming using Visual Studio 2010

Software Construction Tools and Techniques
–
–
–
–
–
–
–
–
–
–
CS 3500
Version control (SVN)
Testing
Debugging
Performance profiling
Code inspections
Object-oriented design patterns
Program organization and coding style
Documentation
UML (Unified Modeling Language)
Scripting
SE - 11
What Will We Study?
Software Architectures
– Pipe and filter
– Object-oriented
– Client/server
– Event-driven
– Model-view-controller

Working Individually, in Pairs, in Small Groups
– Via programming projects

Other Topics
– Requirement gathering
– High-level design
– Intellectual property
– Professional ethics
Download