I am starting to design the architecture of my family's small hotel business. But I'm a junior js developper and I miss the big picture when programming on the go. I am afraid that this might lead to confusion and/or bad practices.

I have therefore started with a basic activity diagrams in order to document my ideas on the flow in the system. I want to be able to understand and forsee problems and catch them before i begin creating the implementation and to avoid spaghetti code (see below).

But I'm not sure it's the best way to start, and therefore need your advice. What kind of diagrams should I use to get the big picture and design the software before I start coding, in order to implement the business correctly into my program ?

Activity Diagram

I am still learning so please excuse my noobness.

closed as too broad by gnat, Jörg W Mittag, John Wu, Doc Brown, scriptin Jun 23 '17 at 8:56

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 4
    Strictly speaking - none are a hard requirement. You make those diagrams that you believe will benefit you, and many businesses go completely without them. As such, you shouldn't ask the question What diagrams do I need to code?, but rather identify your weak spot (which you may have) and ask What can help me with <xxx>?. Case in point - I really don't see how a diagram like the one you provided can help with avoiding bad practices - the thing you specifically listed as a problem. – Ordous Jun 22 '17 at 18:18
  • 1
    None are universally required, but your team might use a methodology that calls for a few, e.g. 4+1 architectural view which calls for component, package, state, deployment, and activity diagrams, for specific purposes in each of the 4+1 views. There are many other architectural approaches. – John Wu Jun 22 '17 at 18:54

The first thing you have to do, is to get an overview on the requirements. Two diagrams that may help:

  • The UML use case diagram , to identify the main functions offered by your system to the user. You may find it helpful to use it in combination with a use case narative to complete each high level use case with more details, as proposed for example by Alistair Cockburn
  • a BPMN diagram, to document business process (e.g. check in, check out, and other things that happen in an hotel's live), how they interact, and eventually who does what at which moment.

The next thing is that you'll have to do is to detail the behavior. Typically, you'll do this with one diagram for each use case (or BPMN activity), for example using an activity diagram (or sequence diagram). In parallel, you'll also have to identify the business objects (entities) that your application will have to manage with some data modeling diagram (for example, class diagrams, or other diagrams suitable for database modelling, such as an entity-association model).

If your family is in the hotel business, the kind of diagrams that you'll produce with BPMN, will be useful not only for your development activity, but also for other managerial purpose, as the core is not the technical components but the organisation of business activities.

  • Thanks for the great answer! My question was a bit broad but I have to start with a broad question in order to understand and ask a specific one :) I will try to edit so mods are a bit happier. – user1780729 Jun 23 '17 at 12:55
  • Your question could seem broad at first sight. However your need for getting the big picture, and the level of detail of your uml activity diagram really narrows it down, so that there are not so many answers possible. Use case is the place to start because it's the only uml diagram placing the system in its broader environment and showing the user's goal. I added bpmn because use case is not sufficient to speak with end-users about interactions with more complex systems, or when a user interacts with several systems, which is typical for business software like ERPs. Good luck. – Christophe Jun 23 '17 at 14:58
  • I'd be interested to know from the people who down-voted my answer, what's wrong with it. Just to know what I could improve. Thanks in advance – Christophe Jun 23 '17 at 15:01

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