With extreme programming and agile, the focus is being lean and keeping your design simple. In this context, how do you ensure that your design remains good and evolves along with the application requirements? Here are a five tips you can focus on.
The Four Principle Of Simple Design
These are the foundation for keeping your design simple. When you try to learn the ropes using Extreme Programming, you really need to focus on these principles.
A software application is said to have a simple design if it:
- Runs all tests
- Contains no duplication
- Expresses intent of programmers
- Minimizes number of classes and methods
You can read more about it here
SOLID Principles
This represents a good aim to have when designing Object Object Software. The term SOLID is an acronym for:
- Single Responsibility Principle
- Open-Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
You can read more about it here
Appropriate Patterns
Be choosy about the design pattern you use. Do not fill up your design with patterns, just because they are available. Understand the context of your application and the context of the design pattern. Make sure they make the right match before implementing design pattern.
Simple Hand-drawn Diagrams
Simple, hand-drawn diagrams are quite sufficient to communicate the initial design to the stakeholders and your peers. Trying to produce stunning, intricate diagrams only leads to a wastage of precious time.
Once the design is stabilized, you can work on more concrete diagrams.
Great Unit Tests
This is a very important requirement for a simple design. Tests help to keep your design evolving, because they give you feed back on how correct your code is. If that is not the case, you won;t be confident of changing your design, and the design would no longer evolve.
Summary
In this article, we discussed a few tips on simple design.
Software Design
This is the article in a series of articles on Software Design:
- 1 - How do you keep your design simple?
- 2 - Design Patterns For Beginners - with Java Examples
- 3 - What is Abstraction?
- 4 - Encapsulation - with examples
- 5 - Coupling - with examples
- 6 - Cohesion - with examples
- 7 - Introduction to Evolutionary Design