Skip to content

Instantly share code, notes, and snippets.

@peanutpi
Created August 15, 2016 16:58
Show Gist options
  • Save peanutpi/36ab06e95260052dcd1add65a0621420 to your computer and use it in GitHub Desktop.
Save peanutpi/36ab06e95260052dcd1add65a0621420 to your computer and use it in GitHub Desktop.
Checklist for Planning

Planning Checklist.

Initialization

  • How to initialize this library or component.
  • How it’s instance is created and used by other classes (client application).
    • Instance is created by spring
    • Instance is needed to be singleton or not.
    • is there any state that we have to maintain.

Integration

  • How to integrate this component/library with the existing code.

Others

  • Understand the requirements clearly.

  • Create use cases.

    • Component of the Use cases
      • Name
      • Description
      • Desired outcome
      • User goals
      • Participants/Roles
      • Dependencies
      • Preconditions
      • Scenarios
      • Workflow
      • Postconditions
      • Business rules
      • Requirements
      • Implementation notes
  • Defining the system:

    • Partitioning the system into individual programs (and documenting it)
    • Defining and documenting the interfaces between the individual programs
    • Deciding on and documenting third-party libraries (Java packages) your Java programs will use
    • Deciding on and documenting new libraries (Java packages) you will build that multiple components of your system will share
    • Designing and documenting class hierarchies
    • Designing and documenting the individual classes and interfaces
  • Devide requirements into separate tasks.

    • Divide them using the testability
  • Define Use Cases based on the requirement.

  • Define all the test cases for which our implementation will satisfy after completion.

  • Defining Domain models.

    • If it requires any DTO or entity.
  • Find if we can use any design patterns.

  • For individual components plan it's behavior (methods) & states.

    • Which fields can be configurable according to usability and requirement.
  • Plan contract/Specification for all the behavior.

    • Plan what it will return.
    • Note down all the sub operation done by this behaviors.
    • Try to refactor it and create private behavior or util class using that methods.
  • Plan different states in which our component can be.

  • Create a flow in which show how this components are going to communicate with one another.

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