Presentation is loading. Please wait.

Presentation is loading. Please wait.

High Quality Code Why it matters. By Ryan Ruzich.

Similar presentations

Presentation on theme: "High Quality Code Why it matters. By Ryan Ruzich."— Presentation transcript:

1 High Quality Code Why it matters. By Ryan Ruzich

2 Design Definition: Software Design means the conception, invention, or contrivance of a scheme for turning a specification for computer software into operational software.


4 Challenges in Design Horst Rittel and Melvin Webber defined a “wicked” problem as one that could be clearly described only by solving it, or by solving part of it. Essentially, this implies you have to “solve” the problem in order to define it, and solve it again to create a solution that works.


6 Challenges in Design Design is a sloppy process Design is about tradeoffs and priorities Design involves restrictions Design is nondeterministic (multiple ways to solve each part) Design is a heuristic process (rules of thumb) Design is emergent(evolves over time).


8 Desireable Characteristics of a Design Minimal Complexity Ease of Maintenance Loose Coupling Extensibility Reusability High Fan-in Low-to-medium Fan-in Portability

9 Desireable Characteristics of a Design Cont Leanness Stratification Standard Techniques

10 5 Levels of Design Level 1: The complete software system Level 2: Divisions into subsystems Level 3: Division into classes Level 4: Division into data and routines Level 5: Internal routine design

11 Heuristics Because Design is nondeterministic, Software Engineers must follow “rules of thumb”, more commonly known as Heuristics, in their approach to software design.

12 Some Common Heuristics Find Real World Objects to base your ADT’s on. Form Consistent Abstractions Encapsulate Implementation Details Inheritance Information Hiding Identify Areas Likely to Change and Isolate them. Keep Coupling of Classes Loose

13 Common Design Patterns Reduce Complexity by providing ready- made abstractions Reduce Errors by institutionalizing details of common solutions Provide Heuristic Value by suggesting Design Alternatives Streamline Communication by moving the design dialog to a higher level

14 Other Heuristics Aim for Strong Cohesion Build Hierarchies Formalize Class Constructs Assign Responsibilites Design for Test Avoid Failure

15 Other Heuristics Choose Variable Binding (assigning values) time carefully Make Central Points of Control Consider using Brute Force Draw a Diagram Modularity


17 Design Practices Iterate--Keep iterating at a design process until you arrive at the most optimal Divide and Conquer Top-Down and Bottom-Up Design Experimental Prototyping Collaborative Design

18 Capturing your Design Insert design documentation into the code itself Capture design discussion and decisions on a wiki Write email summaries

19 Questions?

Download ppt "High Quality Code Why it matters. By Ryan Ruzich."

Similar presentations

Ads by Google