jacobmbarnard / srsgem

Ruby gem that allows for making an SRS out of Markdown and PlantUML
Other
1 stars 0 forks source link

What is it?

SRSGem is a tool that translates Markdown and other plain text into a clean, styled, robust Software Requirements Specification (SRS) document which can be opened in any modern web browser.

Prerequisites

Installation

  1. rake build
  2. gem install SRSGem-0.0.6.gem

Creating a New SRS

  1. Run srsgem init MyNewSRS

Quick Start

After installation, if you just want to see SRSGem build an SRS with placeholder content, then:

  1. cd into directory MyNewSRS.
  2. Run srsgem build.
  3. Open MyNewSRS/output/srs.html in your favorite browser to view your SRS.

Getting Started

  1. cd into directory MyNewSRS.

  2. Open title.yml with your favorite editor and replace the placeholder content.

  3. Open the markdown (.md, .markdown) files and fill them out.

  4. Open the PlantUML (.puml) files and fill them out.

  5. Create additional markdown or PlantUML files.

    • Note: transpiler will include content from md and puml files in lexicographic order from within your SRSGem project directory.
  6. Run srsgem build.

  7. Open MyNewSRS/output/srs.html in your favorite browser to view your SRS.

What does it do?

Why SRSGem?

What is SRSGem not?

Project

SRS

(Yes, an SRS for the program that makes SRS's.)

Q&A

Philosophy

Why have an SRS?

In the morass of development work, it can be easy to get lost in a sea of tasks. What are we working on? What can we work on? What should we work on? What did we work on?

It's not that you can't update an SRS. Oftentimes, an SRS is updated because technical hurdles arise during development, or maybe a change is introduced due to some alteration of business logic. Nevertheless, some amount of rigidity is necessary when specifying a goal or a set of goals.

Having an SRS in large part is having an attitude of we are going to get something done, so let's lock in on it and go for it.

An established SRS for released work is invaluable for team dynamism. Onboarding new developers, testers, etc. and/or conducting hand-off sessions are much easier with clear, organized, focussed information about a stable release of the system.

The following diagram illustrates how one might think about an SRS. If we were to tag past, present and future work with different informational artifacts, this is how it might look...

The current SRS is the tip of the spear, guiding the team toward a goal. It should remain fairly rigid, but it can be adjusted as needed. You can think of it as defining the next release candidate.

Present work (tasks) are largely informed by the goals (specifications) in the SRS. A task manager is best suited for handling this information.

Specifications set forth in the current SRS are informed in part by the previous SRS - inasmuch as it is helpful to know what has already been done so as not to 'reinvent the wheel.'

Meta-Information and its Meta-Goal

Not only should an SRS contain 'specifications,' but it should also contain information regarding why certain specifications were chosen. This allows stakeholders to more readily ascent to specified goals without wasting precious time debating why certain things have to be a certain way.

Writing good meta-information helps to achieve a meta-goal - a goal for the goals, as it were. The goal of meta-information in an SRS is to help solidify the goals for the system. Being able to easily navigate to explanatory information in an SRS saves copious amounts of time in the way of stakeholder discussions/meetings.