informatics 122 software design ii
DESCRIPTION
Informatics 122 Software Design II. Lecture 2 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/1.jpg)
+
Informatics 122Software Design IILecture 2
Emily Navarro
Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited.
1
Portions of the slides in this lecture are adapted from http://www.cs.colorado.edu/~kena/classes/5448/f12/lectures/
![Page 2: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/2.jpg)
+Today’s Lecture
Design aesthetics
UML review
Assignment 1
2
![Page 3: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/3.jpg)
+Aesthetics
“a particular theory or conception of beauty or art : a particular taste for or approach to what is pleasing to the senses and especially sight” [Merriam-Webster]
3
![Page 4: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/4.jpg)
+Design Aesthetics
What makes a given software implementation design “beautiful”?
What is it that makes someone appreciate a particular software implementation design?
What are the qualities that determine whether a particular software implementation design is “good” or “bad”?
What is it, then, that we can strive for in creating a software implementation design that will help others in appreciating it?
4
![Page 5: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/5.jpg)
+Design Aesthetics
Some brainstorming…
5
![Page 6: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/6.jpg)
+Design Aesthetics
Different people will have a different aesthetic appreciation of different designs as informed by their own, pre-existing knowledge as informed by their own understanding of the design goals as informed by their own ideas
Different roles in the software development project may have different aesthetic appreciation of different designs coder software performance engineer software maintenance specialist software tester …
6
![Page 7: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/7.jpg)
+Design Aesthetics
Different people will have a different aesthetic appreciation of different designs as informed by their own, pre-existing knowledge as informed by their own understanding of the design goals as informed by their own ideas
Different roles in the software development project may have different aesthetic appreciation of different designs coder software performance engineer software maintenance specialist software tester …
7
Subjective, as it should be!
![Page 8: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/8.jpg)
+Design Aesthetics
Subjective, as it should be
But we need some kind of shared “language”, some common touchstones that we can use to:
understand the underlying implications of certain designs
understand the intentions of designers
effectively frame our communication about designs
8
![Page 9: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/9.jpg)
+Shared Design Aesthetics
9
Individual
Project
Organization
Community
School of Thought
![Page 10: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/10.jpg)
+But…
…what kind of shared understandings exist?
…where do these shared understandings come from?
10
![Page 11: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/11.jpg)
+Purpose of Implementation Design An implementation design is a road map
An implementation design describes a path from application / interaction / architecture design to the product
An implementation design describes what the implementers should do
An implementation design is a guide towards future change
11
![Page 12: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/12.jpg)
+Purpose of Implementation Design An implementation design is a road map
understandable, unambiguous, consistent, helpful, …
An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, …
An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, …
An implementation design is a guide towards future change evolvable, …
12
![Page 13: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/13.jpg)
+More of a Shared Understanding (Not Perfect!) An implementation design is a road map
understandable, unambiguous, consistent, helpful, …
An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, …
An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, …
An implementation design is a guide towards future change evolvable, …
13
![Page 14: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/14.jpg)
+Less of a Shared Understanding
An implementation design is a road map understandable, unambiguous, consistent, helpful, …
An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, …
An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, …
An implementation design is a guide towards future change evolvable, …
14
![Page 15: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/15.jpg)
+Less of a Shared Understanding
An implementation design is a road map understandable, unambiguous, consistent, helpful, …
An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, …
An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, …
An implementation design is a guide towards future change evolvable, …
15
The goal of this class is to develop your understanding of these qualities!
![Page 16: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/16.jpg)
+Approaches to Date
Enumerate objectives
Define principles
Provide strategies
16
![Page 17: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/17.jpg)
+Approaches to Date
Enumerate objectives overall process overall design individual classes
Define principles
Provide strategies
17
![Page 18: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/18.jpg)
+Objectives for Overall Process
Apply rigor
Separate concerns modularize abstract
Anticipate change
Generalize
Work incrementally
18
![Page 19: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/19.jpg)
+Objectives for Overall Design
Strive for grouping related functionality (high cohesion)
Strive for ungrouping semi-related functionality (high cohesion)
Strive for reducing interdependency (low coupling)
19
![Page 20: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/20.jpg)
+Objectives for Class Design
Cohesion
Completeness
Convenience
Clarity
Consistency
20
![Page 21: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/21.jpg)
+Approaches to Date
Enumerate objectives
Define principles keep it simple, stupid! (KISS) information hiding acyclic dependencies …
Provide strategies
21
![Page 22: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/22.jpg)
+Keep It Simple, Stupid! (KISS)
Nothing should be more complicated than absolutely essential and, even then, everything should be analyzed as to whether it can be done simpler
22
![Page 23: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/23.jpg)
+Information Hiding
Hide design decisions that are most likely to change, thereby protecting other parts of the program from change if the design decision is changed
23
![Page 24: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/24.jpg)
+Acyclic Dependencies
Structure packages (grouping classes and interfaces) of a software system in such a manner that the dependencies among them form a directed acyclic graph (DAG)
24
![Page 25: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/25.jpg)
+Approaches to Date
Enumerate objectives
Define principles
Provide strategies program to the interface refactor apply software patterns
25
![Page 26: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/26.jpg)
+Program to the Interface
Program to an interface, never directly to an implementation
Always wrap a class in an interface
26
![Page 27: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/27.jpg)
+Refactor
(to be discussed in a future lecture)
27
![Page 28: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/28.jpg)
+Apply Software Patterns
(to be discussed in future lectures)
28
![Page 29: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/29.jpg)
+Approaches to Date
Enumerate objectives
Define principles
Provide strategies
29
![Page 30: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/30.jpg)
+Purpose of Implementation Design An implementation design is a road map
understandable, unambiguous, consistent, helpful, …
An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, …
An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, …
An implementation design is a guide towards future change evolvable, …
30
![Page 31: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/31.jpg)
+Purpose of Implementation Design An implementation design is a road map
understandable, unambiguous, consistent, helpful, …
An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, …
An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, …
An implementation design is a guide towards future change evolvable, …
31
The approaches to date help, but much more remains to be done
![Page 32: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/32.jpg)
+Why Aesthetics?
Aesthetics aims higher than “usable” or “complete” or …
It aims to set a bar for design for which we as professional designers should strive designs that are elegant designs that communicate their intent seamlessly designs that overall exude an air of sophistication that sets
them apart from ordinary designs designs that others will appreciate, for the right reasons
32
![Page 33: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/33.jpg)
+UML Review
UML stands for Unified Modeling Language
UML is a set of notations designed for specifying object-oriented systems
Different types of UML diagrams are used to represent different aspects (structure, behavior, interactions) of a system Class diagrams Sequence diagrams Use case diagrams Activity diagrams …
![Page 34: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/34.jpg)
+UML Review
UML stands for Unified Modeling Language
UML is a set of notations designed for specifying object-oriented systems
Different types of UML diagrams are used to represent different aspects (structure, behavior, interactions) of a system Class diagrams Sequence diagrams Use case diagrams Activity diagrams …
Main diagram for our purposes
![Page 35: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/35.jpg)
+UML Class Diagrams
Classes in UML appear as rectangles with multiple sections The first section contains its name (defines a type) The second section contains the class’s attributes The third section contains the class’s methods
Class Name
Attribute : Type
Operation (parameter) : Return Type
Attribute : Type
Operation (parameter) : Return Type
Operation (parameter) : Return Type
![Page 36: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/36.jpg)
+Class Diagram Example
Airplane
getSpeed () : int
speed : int
setSpeed (int)
This rectangle says that there is a class called Airplane that could potentially have many instances, each with its own and speed
variable and methods to access it.
All parts are optional except the class name
![Page 37: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/37.jpg)
+Translation to Code
Class diagrams can be translated into code straightforwardly Define the class with the specified name Define specified attributes (assume private access) Define specified method skeletons (assume public)
May have to deal with unspecified information Types are optional in class diagrams Class diagrams typically do not specify constructors
Just the class’s public interface
![Page 38: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/38.jpg)
+Airplane in Java
Using Airplane
Airplane a = new Airplane(5);
a.setSpeed(10);
System.out.println(“” + a.getSpeed());
![Page 39: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/39.jpg)
+Relationships Between Classes
Classes can be related in a variety of ways Inheritance Association
Multiplicity Whole-Part (Aggregation and Composition) Qualification Interfaces
![Page 40: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/40.jpg)
+Relationships: Inheritance
One class extends another
Notation: a white triangle points to the superclass The subclass can add attributes
Hippo adds submerged as a new state
The subclass can add behaviors or override existing ones Hippo is overriding makeNoise()
and eat() and adding submerge()
![Page 41: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/41.jpg)
+Relationships: Association
One class can reference another (a.k.a. assocation) Notation: straight line
This (particular) notation is a graphical shorthand that each class contains an attribute whose type is the other class
![Page 42: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/42.jpg)
+Roles
Roles can be assigned to the classes that take part in an association
Here, a simplified model of a lawsuit might have a lawsuit object that has relationships to two people, one person playing the role of the defendant and the other playing the role of the plaintiff Typically, this is implemented via “plaintiff” and
“defendant” instance variables inside of the Lawsuit class
![Page 43: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/43.jpg)
+Labels
Associations can also be labeled in order to convey semantic meaning to the readers of the UML diagram
In addition to roles and labels, associations can also have multiplicity annotations Multiplicity indicates how many instances of a class
participate in an association
![Page 44: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/44.jpg)
+Multiplicity
Associations can indicate the number of instances involved in the relationship This is known as multiplicity
An association with no markings is “one to one”
An association can also indicate directionality If so, it indicates that the “knowledge” of the relationship is
not bidirectional
Examples on next slide
![Page 45: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/45.jpg)
+Multiplicity Examples
![Page 46: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/46.jpg)
+Multiplicity Example
![Page 47: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/47.jpg)
+Self Association
![Page 48: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/48.jpg)
+Relationships: whole-part
Associations can also convey semantic information about themselves In particular, aggregations indicate that one object
contains a set of other objects think of it as a whole-part relationship between
a class representing a group of components a class representing the components themselves
Notation: aggregation is indicated with a white diamond attached to the class playing the container role
![Page 49: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/49.jpg)
+Example: Aggregation
Composition will be defined on the next slide
Note: multiplicity annotations for aggregations/composition is tricky
Some authors assume “one to many” when the diamond is present;
others assume “one to one” and then add multiplicity indicators to the
other end
House
Room
![Page 50: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/50.jpg)
+Semantics of Aggregation
Aggregation relationships are transitive if A contains B and B contains C, then A contains C
Aggregation relationships are assymetric if A contains B, then B does not contain A
A variant of aggregation is composition which adds the property of existence dependency if A composes B, then if A is deleted, B is deleted A cannot exist independent of B
Composition relationships are shown with a black diamond attached to the composing class
![Page 51: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/51.jpg)
+Relationships: Interfaces
A class can indicate that it implements an interface An interface is a type of class definition in which only method
signatures are defined
A class implementing an interface provides method bodies for each defined method signature in that interface This allows a class to play different roles, with each role
providing a different set of services These roles are then independent of the class’s inheritance
relationships
Notation: a hollow triangle shape on the interface end of the dashed line that connects it to one or more implementers
![Page 52: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/52.jpg)
+Inheritance Example
<<interface>>
Person
firstName : String
lastName : String
Student
major : String
Professor
salary : Dollars
![Page 53: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/53.jpg)
+First Assignment: BeNumbered (Overview)
Your client reminisces about the game Bejeweled, wherein you switch pairs of jewels to try to create sequences of 3 or more jewels, but wishes to experiment with more challenging rules
You are to create a UML, object-oriented design for a software implementation of a rough remake of Bejeweled, called BeNumbered
53
Bejeweled Screenshot
![Page 54: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/54.jpg)
+First Assignment: BeNumbered (Rules)
The game takes place on a 8x8 grid, with each cell initially assigned a random number from 1 to 7
At each turn, the player chooses two adjacent cells (e.g., two vertically above each other or two horizontally next to each other) the numbers in those cells are swapped only if the result makes a
desired sequence of 3, 4, or 5 numbers in a row, either horizontally or vertically (with some moves, it is possible to create more than one such sequence,
sometimes even involving the same cell) the cells containing the sequence(s) of numbers are emptied, and the
numbers above it fall down, with new empty cells at the top of the grid filled in with new random numbers from 1 to 7 (this may produce new sequences that undergo the same treatment of being
removed, triggering new numbers, etc.)
When a sequence of 4 is removed, a flame number (equivalent in its behavior to the “flame gem” in Bejeweled) is also inserted
When a sequence of 5 is removed, a hyper number (equivalent in its behavior to the hypercube” in Bejeweled) is also inserted
54
![Page 55: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/55.jpg)
+First Assignment: BeNumbered (Rules)
The game has two modes in regular mode, a desired sequence is a linear sequence (e.g., 1-2-3,
4-3-2, 3-4-5-6-7) in advanced mode, a desired sequence is any valid mathematical
expression using + and –, with the last number being the outcome (e.g., 1+2=3, 4-2=2, 3+1+7-6=5)
55
![Page 56: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/56.jpg)
+First Assignment: BeNumbered (Rules)
Scoring is incremental: the first sequence of 3 removed in a turn is worth 10 points, each
sequence also removed in that turn is worth 10 more than the previous removed sequence
the first sequence of 4 removed in a turn is worth 25 points, each sequence also removed in that turn is worth 25 more than the previous removed sequence
the first sequence of 5 removed in a turn is worth 75 points, each sequence also removed in that turn is worth 75 more than the previous removed sequence
The game consists of three levels, each level ending when the player reaches 1,000 points
The player loses if no more swaps can be made
The player wins if they successfully complete all three levels
56
![Page 57: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/57.jpg)
+First Assignment: BeJeweled (Inspiration)
Game: http://bejeweled.popcap.com/html5/
Rules: http://support.popcap.com/bejeweled-html5-how-to-play
57
![Page 58: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/58.jpg)
+First Assignment: BeNumbered (Other details) Graphics may be done as text output, you do not need
to worry about building complex designs for the GUI
Other game design decisions, such as how levels differ, the exact randomizer used, or points for power and magic numbers, are up to you
The customer is not sure what will make the game challenging to them, and may demand different rules by which a sequence of numbers is removed, non-number obstacles of sorts, or other changes in the future
58
![Page 59: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/59.jpg)
+First Assignment: BeNumbered (Assignment Details) You should provide additional documentation beyond the
raw UML diagrams, where needed
You should feel free to use any UML or diagramming tool
You should bring one printed copy of your design to class
This is merely part 1 of this assignment, it will continue for several more lectures you will be evaluating and implementing each other’s designs
Due: January 14th, start of class
59
![Page 60: Informatics 122 Software Design II](https://reader035.vdocuments.site/reader035/viewer/2022062309/56813dcf550346895da796fc/html5/thumbnails/60.jpg)
+First Assignment: Grading
Understandability can someone pick it up and implement it?
Flexibility can the design support future changes?
60