The design concept of software

Source: Internet
Author: User

Key Design Concepts
Key Design Concepts
Managing complexity is the most important technical topic in software development.
The complexity of management is the most important technical topic in software development.
The goal of all software-design techniques are to break acomplicated problem into simple pieces. The more independent the subsystems is, the more you do it safe to focus on one bit of complexity at a time.
The goal of all software design techniques is to break down complex problems into simple parts. More independent subsystems, the more you can focus on a single point of security complexity.
Design characteristics
Design features
Minimal complexity
Minimal complexity
* Avoid making "clever" designs. Clever designs is usually hard to understand. Instead make "simple" and "Easy-to-understand" designs.
* Avoid the "smart" design. Clever design is often difficult to understand. Instead, make the design "simple" and "easy to understand".
Ease of Maintenance
Easy Maintenance
Loose coupling
Loosely coupled
Extensibility
Scalability
Reusability
Re-usability
High fan-in
High fan-in
* Have a high number of classes the use a given class. High fan-in implies a system have been designed to make good use of utility classes at the lower levels in the system.
* Has a large number of classes, using a given class. High fan-in means that the system is already low-level in the system to make good use of the utility class.
Low-to-medium Fan-outside
Low to medium fan outside
* Have a given class use a low-to-medium number of other classes (<7)
* with a given class use a low number of other classes of media (<7)
Portability
Portability
Leanness
Thin
* Designing the system so, it has no extra parts. A book is finished isn't when nothing more can be added if nothing more can be taken away.
* The design system makes it no redundant part. When a book is not finished, nothing can be said if no more can be taken away.
Stratification
Layered
* Trying to keep the levels of decomposition stratified so, can view the system at any single and get a cons Istent view.
* Try to maintain the level of layering decomposition so that you can view the system at any one level and get a consistent view.
Standard techniques
Standard technology
The steps in designing with objects
Steps in designing an object
Identify the objects and their attributes (methods and data)
Identifying objects and their properties (methods and data)
Determine what can is done with each object
Decide what can be done, each object
Determine what are allowed to does to the other objects
Make sure that each object can do other objects
Determine the parts of each object that would be visible to other Objects-which parts would be public and which would be priv Ate.
Determining which parts of each object will be visible to other objects will be exposed, which will be private.
Define Each object ' s public interface
Define the public interface for each object
Form consistent abstractions
form a consistent abstraction
Abstraction is the ability to engage with a concept while safely ignoring some of its details–handling different details At different levels.
Abstract with the ability to concept and safely ignore some details of the different handling of different details –.
A Good class interface is an abstraction that allows the focus on the interface without needing to worry about the inte Rnal workings of the class.
A good class interface is an abstract concept that allows you to focus on the interface without worrying about the internal workings of the class.
Design Building Blocks:heuristics
Building blocks: Heuristic algorithm design
Encapsulate Implementation Details
Package Implementation Details
Encapsulate picks up where abstraction leaves off. You aren ' t allowed-look at a object at any level of detail.
The encapsulation picks up the abstraction and leaves. You can not look at any level of detail in the object.
Inherit–when Inheritance simplifies the Design
– Simplified design when inheriting from inheritance
Inheritance simplifies programming because you write a general routine to handle anything the depends on a door ' s general Properties and then write specific routines to handle specific operations on specific kinds of doors.
Inheritance simplifies programming because you write to do anything, depending on the general nature of the door, and then write specific procedures for a particular type of specific operation of the gate general general processing.
Hide Secrets (Information hiding)
Hiding Secrets (information hiding)
Information hiding is part of the foundation of both structured design and object-oriented design. In structured design, the notion of ' black boxes ' comes from information hiding. In object-oriented design, it gives rise to the concepts of encapsulation and modularity and it was associated with the con Cept of abstraction.
Information hiding technology is a basic part of the structure of design and object-oriented design. In structural design, the concept of "black box" comes from information hiding. In object-oriented design, it adds the concept of encapsulation and modularity, which are abstract concepts related.
One key task in designing a class was deciding which features should be known outside the class and which should remain SEC Ret.
A key task in designing a class is to decide which features should be known outside of the class and should remain secret.
Identify areas Likey to change
Find out the possible changes
Accommodating changes is one of the most chanllenging aspects of good program design. The goal is to isolate unstable areas so and the effect of a change would be limited to one routine, class, or package.
Adapting to change is one of the most challenging aspects of good programming. Our goal is to isolate the impact of such a change in unstable areas will be limited to a routine, class, or package.
Areas that is likely to the change:
There may be changes to the region:
Business Rules
Business Rules
Hardware dependencies
Hardware dependencies
Input and output
Input and output
Nonstandard language Features
Non-standard language features
Keep coupling Loose
Keep Loose coupling
Coupling describes how tightly a class or routing are related to other classes or routines. The goal is to create classes and routines with small, direct, visible and flexible relations to other classes and routine S.
Describes how tightly coupled classes or routes are related to other classes or programs. Our goal is to create classes and other classes and routines that are small, direct, and visible flexible relationships.
Classes and routines is first and foremost intellectual tools for reducing complexity. If they ' re not making your job simpler, they ' re not doing thier jobs.
Classes and routines are first and foremost a knowledge tool to reduce complexity. If they don't make your job easier, they don't do their job.
Look for Common Design Patterns
Find common design Patterns
Popular Design Patterns
Popular Design Patterns
Abstract Factory
Abstract Factory
Adapter
Adapter
Bridge
Bridge
Composite
Composites
Decorator
Decoration
Façade
Vertical surface
Factory Method
Factory method
Iterator
Iterators
Observer
Observers
Singleton
Child
Strategy
Strategy
Template Method
Template method
Design practices
Design Practice
Iterate
Iteration
Design is an iterative process. You don ' t usually go from point A to point B; You go from point A to point B and then to point A.
Design is an iterative process. You don't usually go from point A to point B, but you go from point A to point B.
Divide and Conquer
Divide
No one ' s skill is big enough to contain all the details of a complex program, and that applies just as well to design. Divide the program to different areas of concern, and then tackle each of the those area individually.
No one's ability is large enough to contain the details of all the complex procedures, and this applies equally to design. Divide the program into different areas of concern and then resolve these areas individually.
Top-down and bottom-up Design approaches
Top-down and bottom-up design methods
Top-down design begins at a high level of abstraction. You define base classes or other nonspecific design elements. As develop the design, you increase the level of detail, identifying derived classes, collaborating classes, and other Detailed design elements.
A high-level abstraction from top-down design begins. You define a base class or other non-specific design element. When you develop the design, increase your level of detail, identify derived classes, cooperative classes, and other detailed design elements.
Bottom-up design starts with specifics and works toward Genealities. It typically begins by identifying concrete objects and then generalizes aggregations of objects and base classes from tho Se specifics.
The bottom-up design begins with the genealities details and works. It usually first determines the specifics of the object and summarizes the objects and base classes that aggregate these details.
Experimental prototyping
Experimental prototype
Collaborative Design
Collaborative design
Capturing Your Design Work
Capture your design work
Insert design documentation into the code itself
Insert the design document into the code itself
Capture design discussions and decisions on a wiki
Capture design discussions and decisions on Wiki
Write e-mail summaries
Write a summary of the e-mail
Use a digital camera
Using a digital camera
Save Design Flip Charts
Save the Design wall chart
Use CRC cards
Using CRC cards
Create UML Diagrams A
Create a UML diagram

The design concept of software

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.