Goals of software development

Download Report

Transcript Goals of software development

Background material
•
•
•
•
•
•
Software Architecture (Shaw & Garlan)
Object modeling & design (Rumbaugh,Blaha ..)
Design Patterns (Gamma, Helm, et al)
Software Engineering concepts (Fairley)
Software Engineering (Pressman)
Software Architecture in Practice (Bass, Clements,
Kazman)
27/09/1999
(c) Ian Davis
1
Further background material
• The Mythical Man Month (Brooks)
• ACM Sigsoft Software Engineering Notices
• Code complete (McConnell)
• Death march (Yourdon)
27/09/1999
(c) Ian Davis
2
Goals of software development
•
•
•
•
•
•
Need to understand requirements.
Want software with maximum functionality.
Code must be reliable.
Cost to develop and maintain important.
Want results as fast as possible.
Must minimize development risks.
27/09/1999
(c) Ian Davis
3
Problem
• You cannot achieve all six goals
simultaneously.
• Which of these goals are you willing to
compromise on.
• How do you identify which (if any) of these
six goals is realistic or realizable.
27/09/1999
(c) Ian Davis
4
Software engineering to rescue
•
•
•
•
•
•
Identify desired functionality
Develop architectural design
Plan/cost activities
Monitor progress
Document decision points
Identify problems ASAP.
27/09/1999
(c) Ian Davis
5
Is software development an art?
• YES
– Getting it right the first time demands vision.
– There is beauty in a good design.
– It is easy to appreciate a good design and
dislike a bad one, at a raw gut level.
• NO
– Little argument about what is good or bad
27/09/1999
(c) Ian Davis
6
Is software development engineering?
• YES
–
–
–
–
We are building things.
Need a methodology to succeed.
Need engineering management skills.
Need to appreciate the importance of quality
and reliability.
– Need professional standards, discipline, and
bodies.
– Should be held accountable for our actions.
27/09/1999
(c) Ian Davis
7
Is software development engineering?
• NO
– Not concerned with designing within tolerances
– Code is either right or wrong (ie. Maths)
– Limited/questionable concern with reuse of
code
– Not building ‘n’ of the same. Each project is
new and unique.
– Cookbook for algorithms, but not the project.
27/09/1999
(c) Ian Davis
8
Acid tests
• Which of the development goals are more
achievable using engineering principals?
• Can software development be a set of well
defined manageable discrete logical steps?
• When is a picture/design/essay worth 1000
lines of code?
• When does the theory encourage needless
bureaucratic displacement activities?
27/09/1999
(c) Ian Davis
9
The basic issues
• Get it right the first time, that’s the main
thing.
• Getting it right at the end doesn’t fly.
• So how do you avoid getting it wrong?
• Plan to throw your first attempt away - you
will anyway.
• If you plan to throw your first attempt away
you will throw at least two attempts away.
27/09/1999
(c) Ian Davis
10