Skip to content

Instantly share code, notes, and snippets.

@sachin-j-joshi
Created October 29, 2019 18:52
Show Gist options
  • Save sachin-j-joshi/884a9a6253281464c9d23f4f875d9005 to your computer and use it in GitHub Desktop.
Save sachin-j-joshi/884a9a6253281464c9d23f4f875d9005 to your computer and use it in GitHub Desktop.
Feature Design Document Template

Background

This Document discusses design for .

Motivation

Here are some of the problems we are facing today that are motivating this design

  • Problem 1
  • Problem 2
  • Problem 3

Design Objectives

Goals

  • Goal1: Short description of the goal.
  • Goal2: Short description of the goal.

Non-goals

  • Clearly state what is not in scope.
  • Non-goals

Assumptions and Invariants

It is helpful for us to explicitly state these assumption to better understand available design space and it’s constraints.

Assumption 1

What are the fundamental assumptions that you are assuming

  • assumption a
  • assumption b

Assumption 2

Any contsraints

  • constraints
  • constraints

Assumption 3

Any invariants you are providing to others

  • constraints
  • constraints

Priorities and Tradeoffs

Any system design inevitably involves making tough choices when conflicting requirements cannot be achieved simultaneously. Below are our guidelines when making such choices.

  1. Prefer A over B.
  2. Prefer P over Q.
  3. Prefer X over Y.

Key Concepts

Concept 1

Description

Aspect 1:

  • Descr
  • Descr

Aspect 2:

  • Descr
  • Descr

Concept 2

Description

Aspect 1:

  • Descr
  • Descr

Aspect 2:

  • Descr
  • Descr

Key Operations

Group 1

Descr

Op1

  • how implemented

Op1

  • how implemented
    • step 1
    • step 2

Group 1

Descr

Op1

  • how implemented

Op1

  • how implemented
    • step 1
    • step 2

Compatibility

Backward compatibility

Forward compatibility

Working with mixed versions (Upgrade/downgrade)

Migration

Key Questions Answered

  1. Question 1 Answer

  2. Question 1 Answer

  3. *Question 2 Answer

Key Concerns

Concern 1

  • Descr

Design Details

Components

Component Responsibilities Collaborations

API contracts

Class/Interface

/**
 * Defines an abstraction for ....
 */

Data structures

Data structure 1

  • Desc

Data structure 1

  • Desc

Algorithms

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment