Informatics 122 Software Design II Lecture 5 André van der Hoek & Alex Baker Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited. December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Today’s Lecture Finishing up lecture 4 Evolvability (If time – let’s design Scrabble!) December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Some Deeper Questions December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Some Deeper Questions December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Some Deeper Questions December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Some Deeper Questions December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Important Points to Observe (Assignment) Being a “1” or a “4” on someone’s ranking is not an absolute evaluation if you are a “1” on someone’s ranking, the other designs may have all been relatively poor if you are a “4” on someone’s ranking, the other designs may have all been relatively stellar Length of the document seems to be an indicator in peer’s rankings, but not necessarily in ours It is easier to review than to design (and, by now, you know it is easier to design or review than it is to implement) December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Important Points to Observe (UML) Having a document “heavy on UML” by itself is not a guarantee for a great design it may indeed be more complete it may also be less understandable If I cannot find the “flow” in the UML diagram, something tends to be wrong for some designs, we end up searching for their meaning for others, it is clear from the diagram physical layout, often, has something to do with this Design languages are a factor UML by itself is not good enough December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Important Points to Observe (Process) Where to start? what about with the set of nouns in the description of the problem (e.g., word, rack, tile, board, …) what about with the set of verbs in the description of the problem (e.g., challenge, play, double, triple, …) Work towards completeness does my current design account for all possible features does it do so explicitly, or are some features hidden This is merely a rough and rules of thumb process, but one that tends to help the beginning designer December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
A Checklist on Overall Process Apply rigor Separate concerns modularize abstract Anticipate change Generalize Work incrementally December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
A Checklist on Overall Design Strive for grouping related functionality (high cohesion) Strive for ungrouping semi-related functionality (high cohesion) Strive for reducing interdependency (low coupling) December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
A Checklist on Class Design Cohesion Completeness Convenience Clarity Consistency December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
A Checklist on Principles and Strategies keep it simple, stupid! (KISS) information hiding acyclic dependencies … Strategies program to the interface refactor apply software patterns use aspects December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Designing for Change Looking at designs in the context of changes that might be made to them before implementation after implementation What elements of design help and hinder making changes? December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Adding a Computer-Controlled AI Opponent Are the details that make up what a player does well isolated from other parts of the program? December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Automatic Dictionary Checking Question two from your design reviews Is the functionality for determining a legal move well isolated from the rest of the program? December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Implementing Upwords Question 3 from your review forms How is a space represented? Have you made any problematic assumptions elsewhere in your design? December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Post-Implementation Space Changes Question 4 on the review form Can you change the locations? Can you change the amounts of multipliers? Can you create bonus tiles of a wholly different nature? At coding stage, a subtle difference December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
Post-Implementation Space Changes How would we actually do this? December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Designing for Change Anticipating possible changes Isolating functionality Avoiding over-generalization or over-specialization An intuitive sense that we are helping you build “something seems wrong about this…” December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek
© 2007 University of California, Irvine – André van der Hoek Designing Scrabble What would a good design, perhaps, look like? December 8, 2018 – 16:03:58 © 2007 University of California, Irvine – André van der Hoek