80 likes | 166 Views
Wrapping up Design and Coding. Chapter 18. The Unified Modeling Language (UML). Formal Notation for Development Uses use-case approach. Use Case diagrams, outlines cases. Sequence diagrams outline object exchanges. Class diagrams outline class relationships
E N D
Wrapping up Design and Coding Chapter 18
The Unified Modeling Language (UML) • Formal Notation for Development • Uses use-case approach. • Use Case diagrams, outlines cases. • Sequence diagrams outline object exchanges. • Class diagrams outline class relationships • Other diagrams: Package, deployment.
Client-server Design • Essentially a ‘customer/supplier’ relationship. • Client makes requests of server. • Server supplies requested information. • Example: Web browser (client) makes request from Web server which supplies HTML, applets, etc.
Choosing Design Techniques • Techniques can be chosen on several criteria: suitability (applicability), familiarity. • Design techniques can be partitioned: Client-server techniques can be applied to one part of the system while other techniques are applied to others. • Often, experienced engineers will develop their own techniques that are hybrids: based on one or more formal design approach coupled with a healthy dose of experience.
Which Formal Technique(s) Should I Use? • Familiarity: Engineers should be familiar with the technique. This implies formal training, at a minimum! Engineers should take opportunities to continue training in a variety of design techniques. • Applicability: The problems at hand should be suitable for the technique. Sometimes the problem can be redefined to suit a technique we are already familiar with.
Documenting Choices • As decisions are made during the design phase, the reasons should be documented as part of the design. • Reasons for data structure and algorithm choices are good places to begin documentation. For instance, decisions made on the time/space tradeoff principle are good places to start.
Defensive Coding • Defensive coding approaches should be reinforced during the design phase. • Error-handling subsystem(s) should be designed as an integral part of the system. • Use of the Error-handling system should be a part of every subsystem design. This relieves the programmer from the burden of having to make error-handling decisions at coding time.
Managing the Design and Coding Phases • Code inspections should be provided for in the schedule. • Since the error handling subsystem can have a large impact on the implementation, it should be fully represented in the design, and planned for in the code schedule!