Software Design

Software design is the process of defining software methods, functions, objects, and the overall structure and interaction of your code so that the resulting functionality will satisfy your users requirements. There are many different ways of designing software, almost all of which involve coming up with an initial design and refining it as necessary. Different […]

Software Design: Patterns

As we know, software design isn’t the code itself but the way that code must be structured in order to have a higher level of control over it. Patterns themselves are repeatable solutions to problems that occur constantly in software design. These type of structured ways of designing software aren’t finished designs that can be already transformed into code but they are descriptions that show how to solve certain problems. They are normally templates used in order to have a richer idea on what it will be developed in the future.

There are mainly 3 types of design patterns:

  • Creational design

    These patterns approach design by the instantiation of classes. They are divided in class creation which inherit in the instantiation step and object creational patterns that use delegation as it should be in order to achieve certain task. Some of these are:

    • Abstract Factory
    • Builder
    • Factory Method
    • Object Pool
    • Prototype
    • Singleton
  • Structural design

    This type of pattern takes a look on how classes and objects are composed. The creation of compose interfaces is mainly by using iheritance. Some of these are:

    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Private Class Data
    • Proxy
  • Behavioral design patterns

    The interaction between objects inside a class happens in a behavioral pattern. These patterns are mainly focused with communication between objects. Some examples of these are:

    • Chain of responsibility
    • Command
    • Interpretre
    • Mediator
    • Memeto
    • Null Object
    • Observer
    • State
    • Strategy
    • Template method
    • Visitor

Bloggers involved in the creation of this post:

Carlos Pedraza

Miguel Cabral

Victor Najar

Juan Pablo Ramírez

All this information was taken from Sourcemaking.com and all rights belong to them.


Lets Talk About Software Design

user_interfaceAccordingly to The UCAR (University Corporation for Atmospheric Research), software design is the process of defining methods, functions objects and the structure and interaction of the code in order to have fully functional programs and satisfaction of the users.

Your software design should include a description of the overall architecture. This should include the hardware, databases, and third party frameworks your software will use or interact with. This is the big picture of what is running where and how all the parts will interact.

Here’s a really clear video taken from TED x conferences with Jackson Stone showing the importance of S.D.


Software design is all about thinking in the users themselves and giving them the opportunity to have a full experience when approaching to technology by letting them have a nice experience.