Goals of good software design <ul><li>This micro workshop discusses the three main goals of software design. </li></ul><ul...
Goals of good software design <ul><li>What is object oriented design? What is it all about? What are it's benefits? What a...
Goals of good software design <ul><li>The main goals </li></ul><ul><ul><li>Flexibility </li></ul></ul><ul><ul><li>Extensib...
Goals of good software design - Flexibility <ul><li>What is flexibility? </li></ul><ul><li>Actions for change </li></ul><u...
Goals of good software design - Flexibility <ul><li>Detractors of flexibility </li></ul><ul><ul><li>Complex code </li></ul...
Goals of good software design - Flexibility <ul><li>Design decisions that promote flexibility </li></ul><ul><ul><li>DRY (D...
Goals of good software design - Extensibility <ul><li>What is extensibility? </li></ul><ul><ul><li>The ability to add new ...
Goals of good software design - Maintainability <ul><li>What is maintainability? </li></ul><ul><ul><li>Maintainability = F...
Summary <ul><li>Three main goals of software design </li></ul><ul><ul><li>Flexibility </li></ul></ul><ul><ul><li>Extensibi...
Upcoming SlideShare
Loading in...5
×

Goals Of Software Design - The main goals

8,372

Published on

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,372
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Goals Of Software Design - The main goals"

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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>

×