1 / 12

Topics on Design

Topics on Design. Wesley Bao Trend Micro Incorporated. Nov 22, 2004. Agenda. Who cares about design What makes a good design Selected OOD guidelines Ideas on formalizing the heuristics (to enable tools to audit design quality besides code quality) Q & A. Design? Who cares?.

lilika
Download Presentation

Topics on Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Topics on Design Wesley Bao Trend Micro Incorporated Nov 22, 2004

  2. Agenda • Who cares about design • What makes a good design • Selected OOD guidelines • Ideas on formalizing the heuristics (to enable tools to audit design quality besides code quality) • Q & A

  3. Design? Who cares? • Customer? Your boss? No, they want product quality (and time to market). Design quality is another story. • Developers care, new hires care. Look out! Is your project in debt? Are your windows broken?

  4. Non-survival? Priority matters • For developers, language syntax, IDE, compiler and debugger usage, Platform API are survival knowledge. • Design experience is value-addition. Congratulations, you are not worrying about survival but are looking for nice-to-have knowledge 

  5. Push to tool/language level • Purify, Quantify etc (code quality) • GC obsoletes some resource managerment patterns • Any tool to audit or even help to improve design quality? Automated smell recognition & refactoring is a nice will • What we have now: • IDE supported refactorings • CheckStyle, PatternTesting, lint • Patterns repository, pattern weaver, CG

  6. Cont. • MVC, AOP, frameworks, containers (these mandate some architectural design) • AOP promotes SoC, Java promotes OOP • Tools can check e.g. name convention, method length, occurance of global/public data, goto, switch, possible resource leak, duplicated or similar code block… lots of smells • Tools can help to ensure (audit) design style integrity, can help to transfer design knowledge to new teammates • A lot of possibilities

  7. What is/isn’t design for? • You want to know how to do the right thing? Please turn to a lecture on analysis (e.g. on OOA). • You want to do the things right? Yes, besides process, design matters.

  8. What makes a good design • Less duplication • Easier to understand • Easier to change (if necessary) • Less coding • Natural and elegant • Efficient

  9. It’s not all about classes • Logical view: classes, namespaces, packages… • Physical view: header files, source files… • Just break functionality into small methods, and carefully give names to these methods • Even makefile requires design (give one example of a cross-platform product) • Use tools to dig the design out of code

  10. Selected guidelines • Don’t Repeat Yourself • LSP, OCP, SRP, ISP, DIP… • Code smells and related refactorings (Refactoring) • More specific design heuristics (OODH) • Patterns (Design Patterns) • Discussion • Ideas on formalization/automation

  11. The Trilogy • Just do it • Accumulate experience (patterns?) • Automate it •  Where are we now?

  12. Q & A • Any questions?

More Related