Can anyone suggest free or paid tools that could handle complex business requirements creation. I am looking for something that could handle a complex domain where there could be many questions that could arise from the business requirements document. These questions would have to be reconciled before a proper specification could be created.
the 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.
BDD 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.
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.
https://en.wikipedia.org/wiki/Requirements_engineering
Resources include:
IEEE: https://www.ieee.org/index.html
And the Software Engineering Institute: https://www.sei.cmu.edu/productlines/frame_report/req_eng.ht...