Reaves.dev

v0.1.0

built using

Phoenix v1.7.12

Design Concepts

Stephen M. Reaves

::

2023-08-30

Notes about Lesson 2 of CS-6310

Summary

Definitions

Design is deliberative, purposeful planning

Engineering is skillful or artful contrivance applying scientific and mathematical principles

Craft is a skilled occupation

Art is the use of skill, taste, and imagination in the production of aesthetic objects

Differences between Software Design and Programming include:

Software Design := The process of building a program while satisfying a problem’s functional requirements and not violating its non-functional constraints

Architectural Design is the process of identifying and assigning the responsibility for aspects of behavior to various modules or components of a software

Detail Design is the process of specifying the behavior of each of the system components that you’ve identified during architectural design

Detail Design

The primary purpose of detail design is to determine which data structures and algorithms to use

Can be represented using design notation:

All approaches to design include 3 attributes:

  1. Design Method
  2. Design Representation
  3. Design Validation

Design Method

A method is a systematic sequence of steps that a design team uses to solve a problem

Always a trade off between long-term maintainability and short-term schedule

Issues with Validation

Other Design Issues

Design Documentation

Some things to document:

IEEE 1016

Design Rationale

Design decisions are explicit choices of how to trade off two non-functional aspects of a design, such as speed versus size

Conceptual Integrity

Conceptual integrity is the most important part of design

Related:

Coupling is the extent to which two components depend on each other for successful execution

Cohesion is the extent to which one component has a single purpose or function

Abstract Interfaces hide information and reduce coupling

Abstraction Mechanisms

Design Philosophy