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.

I am fairly new to web application development. I have defined my problem domain through talking to various stakeholders and putting a process map together - basically a flow chart showing the different steps and processes that the web application must be able to recreate.

The problem I am having is that I'm struggling to map this process into application design and code. I was wondering if there are any best practices or development methods that help map a business process into an application design?

I have briefly read up about Domain Driven Development and that seems like it may be a good approach.

To clarify, I am after a methodology or design principle that will help turn the business process into code. For example, I COULD just map every box in the process map to an identically named class in my code. Thus translating the business process into a domain model (i.e. object orientated) in my code. But is this the best way to do it?

share|improve this question

2 Answers 2

You might want to take a look at various open source Business Process Management suites. BPM is this exact idea, identifying the process a business takes to effect some activity, and mapping it into software in a way that manages the flow of the process. It seems like it would lend itself well to your issue. I work professionally with IBM BPM, but that is a proprietary and non-free solution, and is probably overkill for what you might be looking to achieve, which is why I provided a list of open source ones. I suggest looking through how those platforms/framworks operate on a conceptual level, even if they aren't the direct implementation of a solution for you, understanding how they handle the concept can be useful to you in 'rolling your own' solution.

share|improve this answer
    
The tools you mention are workflow tools. Want I want is a methodology or abstract way of thinking that turns the business process map into a set of classes or system architecture. –  Gaz_Edge Mar 21 '13 at 14:47
    
So, more like a transform tool to convert your map into executable code? Or a methodology for doing so yourself? –  huntmaster Mar 21 '13 at 14:57
    
A methodology. For example, I COULD (in an object orientated world) just map every process to a class and recreate the business process as a class map. But is this the best way to do it? Or are their better ways to go about mapping a process into actual code that I will create –  Gaz_Edge Mar 21 '13 at 15:26
up vote 0 down vote accepted

After a bit of research I've come across the repository/service design pattern. Both are used within the model context of MVC design pattern.

A repository (in my case an ORM) is a model that gets and saves directly from and to a database table sharing the same name. A service (I have actually called mine a 'process') is a model in the MVC sense, but contains a lot more logic than simply just getting and saving from and to a database table.

A 'process' model performs all the necessary logic and uses multiple repositories to get and save persistent data.

What I have done is develop my database to 3NF and setup a repository model for each table. If my application just requires the data from a table, the controllers call the required repository model directly. For a business process that requires the use of several tables, I create a process model. The name of this process model directly maps to my business process and performs the same steps. This has made translating the business process map into code really easy.

Would appreciate any thoughts people have on this approach?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.