14 June 2021

Scrum and Software Development Design Practices

Design flow :

  • Sketches, wireframes, mockups, and prototypes actually represent the different stages of the design flow. They start from low-fidelity and end with high-fidelity respectively.
  • The sketch is the simplest way to present an idea or initiative, even can be drawn in a piece of paper and has a minimum level of fidelity.
  • Wireframe, a low-fidelity way to present a product, can efficiently outline structures and layouts.
  • A mockup looks more like a finished product or prototype, but it is not interactive and not clickable.
  • A Prototype has an interactive attribute and has a maximum level of fidelity and is interactive and clickable.

Design Patterns :

  • A Design Pattern is a general, reusable solution to a commonly occurring problem within a given context in software design
  • It is generally divided into three main categories: creational design patterns, structural design patterns, and behavioral design patterns.

Creational design patterns :

  • In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or in added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation.
  • Creational design patterns are composed of two dominant ideas. One is encapsulating knowledge about which concrete classes the system uses. Another is hiding how instances of these concrete classes are created and combined.
  • Creational design patterns are further categorized into object
  • Creational patterns and Class-creational patterns, where Object-creational patterns deal with Object creation and Class-creational patterns deal with Class-instantiation. In greater details, Object-creational patterns defer part of its object creation to another object, while Class-creational patterns defer its object creation to subclasses.

Five well-known Creational design patterns :

  • Abstract factory pattern, which provides an interface for creating related or dependent objects without specifying the objects’ concrete classes.
  • Builder pattern, which separates the construction of a complex object from its representation so that the same construction process can create different representations.
  • Factory method pattern, which allows a class to defer instantiation to subclasses.
  • Prototype pattern, which specifies the kind of object to create using a prototypical instance, and creates new objects by cloning this prototype.
  • Singleton pattern, which ensures that a class only has one instance, and provides a global point of access to it.

Structural design patterns :

  • In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships among entities.

Behavioral design patterns :

  • In software engineering, behavioral design patterns are design patterns that identify common communication patterns among objects. By doing so, these patterns increase flexibility in carrying out communication.

Domain-driven Design :

  • Domain-Driven Design (DDD) is the concept that the structure and language of software code (class names, class methods, class variables) should match the business domain. For example, if a software processes loan applications, it might have classes such as Loan Application and Customer, and methods such as Accept, Offer and Withdraw.
  • DDD connects the implementation to an evolving model.
  • Domain-driven design is predicated on the following goals:
    • placing the project’s primary focus on the core domain and domain logic;
    • basing complex designs on a model of the domain;
    • initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.

More informations for the Scrum PSD certification here.

Leave a Reply

Your email address will not be published. Required fields are marked *