Goals of software development

advertisement

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

Download