Recently, I started reading the book Specification by Example, which relates to automated functional testing and BDD (from what I've understood till now).
I've tried using Concordion (.Net), and seems very interesting. I've been having issues with keeping any form of useful documentation for any designed system, and this might help
My issue is, how would one suggest that the workflow in designing a complete system is? Some questions that arise are:
- Is it ideal to try to design the entire whole system in the beginning?
- Should you design a very high level overview of the system, and then create specifications one main feature at a time, i.e create detailed specifications -> develop -> test -> move to next main feature?
- Should you create BDD-style specifications for each and every method in the system, even trivial ones like some
GetProductByReferenceCode
?
The issue is that most of the times when you actually start developing, you start to realise something's that need to be done differently than originally thought, or omissions not noticed during the initial design. I find that sometimes the initial design stage takes a lot of time, only for the actual design of the system to be very different once the product is launched.
My current workflow for designing a system is:
- First start with the user-interface, creating mockups of each and every screen the users will be dealing with. I find this to be the most visual method that the business users can understand.
- Define logic that is directly related to the user-interface
- Define any logic that happens in the background, for example notifications, etc.
Does this make sense? Any ways this could be improved?