Software Design - How do you keep your design simple?


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.

Software Design

This is the first article in a series of articles on Software Design:

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.

Do check out our video on this:

image info

Summary

In this article, we discussed a few tips on simple design.

Related Posts

Design Patterns For Beginners - with Java Examples

In this guide, we give you an introduction to the world of design patterns.For each pattern, we understand 1) the pattern a2) the context in which it is applicable - with a real-world example.

Software Design - Encapsulation - with examples

Encapsulation is one of the important goals of Software Design. What is Encapsulation? Why is it important? Let's get started.

Software Design - What is Abstraction?

Abstraction is one of the fundamental concepts of software engineering. It is all about hiding complexity while building your application.

Software Design - Cohesion - with examples

High Cohesion is one of the important aims when your architect and design your software. What is it all about?

Software Design - Coupling - with examples

Software architects and programmers love low coupling. What is coupling? Why is coupling important? Let's get started.

Software Design - Introduction to Evolutionary Design

With extreme programming and agile, the focus is being lean and doing just in time design. In this context, how do you ensure that your design remains good and evolves along with the application requirements?

Software Design - Five Things To Look Out For In A Design Review

Doing a software design review is never a straightforward task, with a number of things to look out for. In this short article, we look at five such aspects, which will help you structure your review process in a better way.

Software Architecture - Why do we use Layered Architectures?

In this article, we explore the reasons why we build applications with several layers. We also look at different options for each layer in the Java world.

5 Qualities of a Great Software Architect

In this article, we look at some of the important qualities of a great software architect. While we focus on application architects, most of these are applicable for enterprise architects as well.

5 Important Responsibilities of a Software Architect

In this article, we look at some of the important responsibilities that an architect is expected to handle. Although we chiefly focus on application architects, most of these also hold true for enterprise architects as well.