Date post: | 15-Apr-2017 |
Category: |
Design |
Upload: | krishna-eg |
View: | 61 times |
Download: | 0 times |
Design in Construction
Software Design
• Design is the activity that links requirements to coding and debugging.
Design Challenges Design is a Wicked Problem
“Wicked” problem as one that could be clearly defined only by solving it, or by solving part of it.
Design is a Sloppy process (Even if it produces a tidy result)
Design is about Tradeoffs and Priorities Design involves Restrictions Design is nondeterministic
Design is a heuristic process Design involves trail and error Design is emergent
A tidy way to summarizing these attributes of design is to say that design is “emergent”
Key Design Concepts
• Software’s Primary Technical Imperative– Managing Complexity
When projects do fail for reasons that are primarily technical, the reason is often uncontrolled complexity.
Desirable Characteristics of a Design
• Minimal complexity• Ease of maintenance• Loose coupling• Extensibility• Reusability• Stratification (keep the level of decomposition
stratified)
Levels of Design
Common subsystems
• Business rules• User interface• Data access• System dependencies
Design Building Blocks
• Find Real-World objects– Identify the objects and their attributes (methods
and data)– Determine what can be done to each object– Determine what each object is allowed to do to
other objects– Determine which are the objects available in
public and private
Form Consistent Abstractions
Encapsulate Implementation Details
Inherit
Hide Secrets
Keep coupling loose
• Coupling describes how tightly a class or routine is related to other classes or routine.
Coupling Criteria– Size– Visibility– Flexibility
Kinds of Coupling– Simple-data-parameter coupling– Simple-object coupling– Object-parameter coupling– Semantic coupling
Look for common design pattern
• Design pattern provides the cores of ready-made solutions that can be used to solve many of software’s most common problems.
Design Practices
• Iterate : Try different approaches.• Divide and Conquer• Top-Down an Bottom-Up design approaches• Experimental Prototyping