100 likes | 420 Views
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).
E N D
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) (c) Ian Davis
Further background material • The Mythical Man Month (Brooks) • ACM Sigsoft Software Engineering Notices • Code complete (McConnell) • Death march (Yourdon) (c) Ian Davis
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. (c) Ian Davis
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. (c) Ian Davis
Software engineering to rescue • Identify desired functionality • Develop architectural design • Plan/cost activities • Monitor progress • Document decision points • Identify problems ASAP. (c) Ian Davis
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 (c) Ian Davis
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. (c) Ian Davis
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. (c) Ian Davis
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? (c) Ian Davis
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. (c) Ian Davis