Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.

Similar presentations


Presentation on theme: "Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful."— Presentation transcript:

1 Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful ways l High level OO concepts  XP: Extreme Programming: simplicity, refactor, grow code  Tell, don't ask: designing classes  Open/Closed: open to extension, closed to modification l Learn to manage time, improve coding methods, e.g., can you really code effectively at 3:00 am?

2 Software Design 14.2 Essential Design Patterns (by name) l MVC, aka Observer/Observable  Separate concerns, especially important for GUIs l Composite  Container is/contains JComponent: File/Directory l Factory  Separate creation from class, install new creators l Proxy/Adapter  Stand-in with same interface, adapt interface as needed l Decorator  Is-a and Has-a, e.g., Filters and java I/O l Command  Function/request object, undoable action

3 Software Design 14.3 Patterns continued l Singleton  Enforce single point of creation, conserve resources l Template method  Hooks filled in by sublcasses l Iterator  Common from previous courses, essential in Java l Strategy  Human player, AI, change algorithm l Forces in a problem lead to solution via appropriate pattern  Should know what GOF is: gang of four

4 Software Design 14.4 Something old, something new l CPS 108 has used Java since 1996 always with C++  Before ’96 used Tcl/Tk or Python  Starting with Java is problematic, what to read?  What if 6/100 move to Java? l Is Unix an issue? More time with Windows programming environments? Linux or Mac?  Eclipse as cross-platform environment l What about groups?  110 model, keep same group always  108 model, chaotic? Re-randomize? Always choice?

5 Software Design 14.5 OOGA l Architectural issues important, leverage a good system-level architecture into easier-to-develop games/programs  Ambitious groups can get away without an architecture, but a good architecture really helped ease development  MVC really worked, better than in the past? l Networking comes too late? Not next time? l Should require an AI for some games, talk about this or provide code? l Card games would also be architecturally interesting  Solitaire? Other games? Build on freecell?

6 Software Design 14.6 Post-mortem evaluation l Need smaller programs ? Mastery projects?  C++ inheritance, templates, low-level C, sockets  Java GUI, threads, web, network l Success: OOGA, Freecell (kind of) l Failure: Hyperwag l Success: Set your own standards, don’t meet my requirements l Failure: Reading about software, aesthetics, ethics, … l Failure: feedback l Success: coding examples, MVC l Failure: feedback l Success/Failure: understanding group dynamics l Failure: coding standards l Failure: using books l Success: pattern examples l Failure: pattern re-use l Success: tell don't ask l Overall grade: _______

7 Software Design 14.7 Why is programming fun? What delights may its practitioner expect as a reward? First is the sheer joy of making things Second is the pleasure of making things that are useful Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts Fourth is the joy of always learning Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. Fred Brooks

8 Software Design 14.8 Fred Brooks l … on computing pioneer Howard Aiken "the problem was not to keep people from stealing your ideas, but to make them steal them." l Duke valedictorian 1953, started UNC Computer Science Dept in 1964, won Turing Award in 1999 l Mythical-Man Month, "Adding man-power to a late project makes it later", … "There is no silver-bullet for Software Engineering… [because of essential complexity]" l Chaired Executive Committee of the Central-Carolina Billy Graham Crusade in 1973


Download ppt "Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful."

Similar presentations


Ads by Google