Your SlideShare is downloading. ×
0
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Goals Of Software Design - The main goals
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Goals Of Software Design - The main goals

8,247

Published on

This presentation discusses the main goals of software design - flexibility, extensibility, and maintainability

This presentation discusses the main goals of software design - flexibility, extensibility, and maintainability

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,247
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Goals of good software design <ul><li>This micro workshop discusses the three main goals of software design. </li></ul><ul><li>Please use the music cues to advance the slide show. </li></ul><ul><li>Presentation By: </li></ul><ul><li>Parag Shah </li></ul><ul><li>Adaptive Software Solutions </li></ul>
  • 2. Goals of good software design <ul><li>What is object oriented design? What is it all about? What are it's benefits? What are it's costs? It may seem silly to ask these questions in a day and age when virtually every software developer is using an object oriented language of some kind. Yet the question is important because, it seems to me, that most of us use those languages without knowing why, and without knowing how to get the the most benefit out of them. </li></ul><ul><li>-- Uncle Bob </li></ul>
  • 3. Goals of good software design <ul><li>The main goals </li></ul><ul><ul><li>Flexibility </li></ul></ul><ul><ul><li>Extensibility </li></ul></ul><ul><ul><li>Maintainability </li></ul></ul>
  • 4. Goals of good software design - Flexibility <ul><li>What is flexibility? </li></ul><ul><li>Actions for change </li></ul><ul><ul><li>Identify </li></ul></ul><ul><ul><li>Change </li></ul></ul><ul><ul><li>Test </li></ul></ul>
  • 5. Goals of good software design - Flexibility <ul><li>Detractors of flexibility </li></ul><ul><ul><li>Complex code </li></ul></ul><ul><ul><li>Lack of clear responsibilities for classes and methods </li></ul></ul><ul><ul><li>Unreadable code </li></ul></ul><ul><ul><li>Repetitions in code </li></ul></ul><ul><ul><li>Uncontained functionality </li></ul></ul>
  • 6. Goals of good software design - Flexibility <ul><li>Design decisions that promote flexibility </li></ul><ul><ul><li>DRY (Don't repeat yourself) </li></ul></ul><ul><ul><li>KISS (Keep it simple) </li></ul></ul><ul><ul><li>No tricks </li></ul></ul><ul><ul><li>Loose coupling </li></ul></ul><ul><ul><li>Encapsulation </li></ul></ul><ul><ul><li>Note: Minimize testing </li></ul></ul>
  • 7. Goals of good software design - Extensibility <ul><li>What is extensibility? </li></ul><ul><ul><li>The ability to add new functionality with ease </li></ul></ul><ul><li>Change actions </li></ul><ul><ul><li>Badly designed system </li></ul></ul><ul><ul><ul><li>Same as flexibility </li></ul></ul></ul><ul><ul><li>Well designed system </li></ul></ul><ul><ul><ul><li>Add classes and refactor client code </li></ul></ul></ul><ul><li>Detractors </li></ul><ul><ul><li>Same as flexibility </li></ul></ul><ul><li>Promoters </li></ul><ul><ul><li>All in flexibility </li></ul></ul><ul><ul><li>Proper use of inheritance and polymorphism </li></ul></ul><ul><ul><li>Design patterns </li></ul></ul>
  • 8. Goals of good software design - Maintainability <ul><li>What is maintainability? </li></ul><ul><ul><li>Maintainability = Flexibility + Externsibility + Bug fixes + Refactorings </li></ul></ul><ul><li>Detractors </li></ul><ul><ul><li>Everything that applies to flexibility & extensibility </li></ul></ul><ul><ul><li>Anything that leads to buggy code (more concerned with process) </li></ul></ul><ul><li>Promoters </li></ul><ul><ul><li>Everything applicable to flexibility & extensibility </li></ul></ul><ul><ul><li>Proper test cases </li></ul></ul><ul><ul><li>Good documentation </li></ul></ul><ul><ul><li>Conscientious coding </li></ul></ul>
  • 9. Summary <ul><li>Three main goals of software design </li></ul><ul><ul><li>Flexibility </li></ul></ul><ul><ul><li>Extensibility </li></ul></ul><ul><ul><li>Maintainability </li></ul></ul><ul><li>Other goals </li></ul>

Ă—