Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Are there any tools available for the following use case:

I am planning to write a complex application and now I just know about the basic functional requirments. I am refining the functionality with more and more details. I am also writing down how to implement this in software architecture perspective.

I am in a situation where there are multiple ways implement a certain functionality and based on the selected approach, other parts of the program will also change. At this moment, I don't want to decide on the approach to use, I just want to list down all the options, present to a wider audience and get it finalized. Are there any standard software tools to do this? I know I can use MS excel or some mind mapper tools, but just thinking of some standard tools (not just for programmers, but for managers and other) availability

Thanks, Den


migration rejected from stackoverflow.com Dec 5 '14 at 12:51

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by gnat, Bart van Ingen Schenau, GlenH7, MichaelT, ChrisF Dec 5 '14 at 12:51

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, Bart van Ingen Schenau, GlenH7, MichaelT, ChrisF
If this question can be reworded to fit the rules in the help center, please edit the question.

Something like MindMapper? (mindmapper.com/main/main.asp) It's not really clear what you're specifically asking, but it doesn't sound entirely on-topic for this site. –  David Nov 8 '11 at 14:39
I suggest you try to clarify in your question what do you expect the tool to do for you in some detail. It looks to me like diagrams, tables, and text should be sufficient to describe the different architecture and solution versions (with or without standard diagramming notation such as UML, etc.). –  Emmad Kareem Feb 4 '12 at 23:34

5 Answers 5

An additional approach might be a set of simple UML interaction diagrams (though I wouldn't go into full detail, probably not worth the effort). These would go far in illustrating the impact of the choice.


Although this is an old question I thought it wouldn't hurt to contribute with another point of view to it to anyone that is also interested on this question.

I don't know what sort of audience it is expected (or better saying was expected) but if the idea is to use a model where for sure almost if not everyone would understand would be a feature model (http://www.amazon.com/Generative-Programming-Methods-Tools-Applications/dp/0201309777).

You could try showing how the different implementation of this specific functionality affects other functionalities showing different feature model trees. This could highlight what interest the most to the end user (the functionalities), highlighting constraints, or variability across specific features.

enter image description here

Feature models are actually intended for software product lines, but since your decisions could affect a certain feature varying it, I guess you could extend it to this use.

A decision model could help as well (http://www.projectqualityassurance.com/decision-analysis-risk-mangement.html).

enter image description here

Now, narrowing down to tools. Czarnecki offers on his webpage a plugin that helps you model them (http://gsd.uwaterloo.ca/fmp). But there are other tools that offer a better representation, such as its old Ami Eddi.

Hope this helps.


As some commenters have written down, it is not very clear what you want. And I hope that by this time you did choose something. But just in case:

As an actual tool, Microsoft Visio is one that is quite general, not only useful for programmers or analyst, but managers as well, as it is free-drawing tool with lots of templates/stencils. Granted, I use it because we already had the licence, I found a decent UML stencil to use (http://www.softwarestencils.com/uml/) and I don't want to automatically create code out of the UML diagrams that I create.

But, the fact that is used by other people is not important unless they need to modify the diagram or representation. What I do to show the information to other people is a combination of exporting to a pdf and creating a powerpoint presentation (or alternatives to them, if you want), depending on the needs.

Now, what you want is to use a combination of diagrams and descriptive text to represent your ideas. And there are many options available (http://en.wikipedia.org/wiki/Diagram). I use UML because it does allow me to have a well know defined representation, and because the people I tend to talk with are mostly software people. If I had to talk to other people that has no knowledge of programming, I would choose a different representation.


Another classic form is the 4+1 model, which is conceptually similar to a multi-view blueprint. You would capture the following aspects of the system.

Let's take the example of a blogging application which has UI for capturing posts and saving them to a database, then displaying post summaries and a search function to a user.

  1. Process view - what are the principal processes which do work in the system and control runtime behavior? This would include database, http server, modules offering persist and search behavior.

  2. Logical view - what functions are offered to the user? This would include showing the comminication/sequences for how a user logs in, creates a post, saves the post, looks for posts, etc.

  3. Development view - this shows the development packages and how the code is organized. This case depends on your language of choice but you'd show your packages of code, modules (if this were javascript you'd show like ui.js, database.js, etc).

  4. Physical view - how and where items are deployed. This would show the browser, the http server, the database and how they are connected.

+1 is scenarios, or use cases/user stories. This is a basic list of what the user and the system will be trying to accomplish on a regular basis. Some scenarios may include:

  1. As a user, I want to create and save a post.
  2. As the system, I want to be able to find posts matching a specific keyword.
  3. As an administrator, I want to see the recent activity on my system.

This is not a final prescription - you will modify and update this diagram as you go, at least you should. But this format should provide you the analytical framework you'll need to think about what your application should do and why.

To repeat - the model is not what you should focus on building. Do enough modeling to build the prototype. The Agile Manifesto exists for a reason: working code (and not this model or any model) is the primary indication of progress. This is just to get started.


In case you want to document decisions (or choices in this case), e.g., use Java, a certain application server, pattern or component, you might be able to use a notation that is currently in development at the Software Engineering and Architecture Research Group of the University of Groningen (NL).

Unfortunately, the article it is not yet published but a first version is about to be released in a scientific journal in the near future. The notation allows you to model groups of decisions, for instance, Java based technology stack, and relationships between those groups, e.g., a Java based technology stack would be an alternative to a PHP based technology stack.

The following image should give you an example (for a larger version: right click => open in new tab). It simply uses the UML activity diagram notation (please note that this was done for small university project).

Example relationship view

To explain some parts of this diagram:

  • The decision Data Transfer Object Pattern is caused by the decision to use JAX-RS. Both decision were approved by the customer (the previous decision state would be decided).
  • The decision to use CouchDB was discarded after initial research has shown that it is excluded by the desktop application decision group. Please note that this does not mean that this is technically hard or impossible. It simply means that for some reason CouchDB can't be used due to the desktop application, e.g., developers are not experienced with CouchDB for desktop apps. Further documentation may be available in textual or other form.

Furthermore, other views exist which relate forces, e.g., a requirement or expertise, to a specific decision, e.g., PHP may be favored over Java since the development team is more experienced with PHP.