ITEC 370 Lecture 13 Design
Review Questions? Presentation of project on F Design patterns Business formal Treat as if you are presenting what you are building for a company Design patterns What are some of the design patterns we talked about on M? Did you see any you could use in your project? Have you ever implemented one of them before?
Objectives Finishing up the design process
Start Have description of system, what it is supposed to do Resources Document Person who wrote the document Computers Redbull?
Goal Describe how the system is going to be built Tools UML Design Patterns Knowledge from previous ITEC classes
How? Good question Many different options to consider Personalized to each team Strengths / weaknesses Different approaches
Top down When you hear top down what comes to mind? Broad strokes followed by more precise Typical OO type approach
Bottom up Technical subsystems Once designed figure out how to string them together Problems Some subsystems may share functionality (duplication) Sprawl is an issue because of lack of direction
Abstraction What is it? Where is it useful? When should it be used? When is it abused?
Refinement Given a rough set of class diagrams, what could you change to make it better? Combining functionality Separating functionality Changing granularity level Adding / removing abstractions
What is the driving principle behind your software system? Architecture What is the driving principle behind your software system? Design patterns Command pattern Data flow architecture MVC
Data structures What / Where / How is getting stored? When / How is it retrieved? Advantages / Disadvantages of different approaches (run-time / coding time) Should you build your own?
Information hiding What is “viewable” at each part of the system Security Communication
Goals What is really important to the project? Reusability Modularity Extensibility Usability Fault tolerance Maintainability Security
Process Decide the goals for the design (may not be customer / requirements oriented) Reusability, modularity, etc… Agree on the approach (top down / bottom up) Determine architecture for system (MVC) Choose granularity of design Produce material using a tool Trace each requirement to a part of the design!
Fin Hand a document / zip to a developer Sit back and watch them code Work isn’t over though Verification that they are building it right Code inspections
Review The design process itself