• 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
• The Mythical Man Month (Brooks)
• ACM Sigsoft Software Engineering Notices
• Code complete (McConnell)
• Death march (Yourdon)
27/09/1999 (c) Ian Davis 2
• 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
• 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
• Identify desired functionality
• Develop architectural design
• Plan/cost activities
• Monitor progress
• Document decision points
• Identify problems ASAP.
27/09/1999 (c) Ian Davis 5
• 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
• 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
• 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
• 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
• 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