3 ms·
What scale of complexity? How long do you expect the thing to be? Below a certain threshold just plain old text will do fine.
by itamarst 10y ago
What scale of complexity? How long do you expect the thing to be? Below a certain threshold just plain old text will do fine.
- tmaly 10y agothe situation I see quite often is someone from legal submitting a very long set of business requirements. These requirements do not translate perfectly on the technical side, and if the programmer is not diligent enough, what gets implemented as a specification misses some critical aspect. Without so detailed back and forth with say a business analyst of someone that knows the business and some of the technical domain, the end result is poor. Right now a Twiki or Confluence work great for collaboration of some sense. But there needs to be some finer level of workflow that could be incorporated into the process. I was hoping to find a tool that does requirements just 20% better than a word processor or Twiki.
- itamarst 10y agoBDD tools might be useful here: I've heard of people getting good results from getting everyone in room and formally specifying the requirements that way. Don't even need the tests to be executable, just well structured.
- tjalfi 10y agoTL;DR - Gherkin end-to-end example BDD has already been mentioned[0] but I thought a concrete example would be helpful. The following excerpts are from a Gherkin specification for bowling[1]. These examples use SpecFlow, Xunit, and C# but the specific technology is not what is important. Here is a Gherkin feature[2] for scoring a game of bowling. Feature: Score Calculation In order to know my performance As a player I want the system to calculate my total score Features consist of scenarios. Here is the scenario[3] for a game with a total score of zero. Scenario: Gutter game Given a new bowling game When all of my balls are landing in the gutter Then my total score should be 0 Scenarios are mapped to unit tests. Here is the code[4] that implements this scenario. [Given(@"a new bowling game")] public void GivenANewBowlingGame() { _game = new Game(); } [When(@"all of my balls are landing in the gutter")] public void WhenAllOfMyBallsAreLandingInTheGutter() { for (int i = 0; i < 20; i++) { _game.Roll(0); } } [Then(@"my total score should be (\d+)")] public void ThenMyTotalScoreShouldBe(int score) { Assert.Equal(score, _game.Score); } Hopefully this is enough to give you a sense of whether Gherkin would work for you. [0] https://news.ycombinator.com/item?id=14222650 https://news.ycombinator.com/item?id=14222650 [1] https://github.com/techtalk/SpecFlow-Examples/tree/master/BowlingKata/BowlingKata-XUnit/Bowling.Specflow https://github.com/techtalk/SpecFlow-Examples/tree/master/Bo... [2] https://github.com/techtalk/SpecFlow-Examples/blob/master/BowlingKata/BowlingKata-XUnit/Bowling.Specflow/ScoreCalculationFeature.feature#L1 https://github.com/techtalk/SpecFlow-Examples/blob/master/Bo... [3] https://github.com/techtalk/SpecFlow-Examples/blob/master/BowlingKata/BowlingKata-XUnit/Bowling.Specflow/ScoreCalculationFeature.feature#L6 https://github.com/techtalk/SpecFlow-Examples/blob/master/Bo... [4] https://github.com/techtalk/SpecFlow-Examples/blob/master/BowlingKata/BowlingKata-XUnit/Bowling.Specflow/BowlingSteps.cs https://github.com/techtalk/SpecFlow-Examples/blob/master/Bo... Edited to fix formatting of examples.