Is it possible to somehow organize my diagrams in Enterprise Architect? We're starting having too many of them, with each diagram containing many elements. Is creating a separate folder for each diagram the only solution to make the model easier to see through, or is there a more elegant layout for that?
In the first place, Model Views will help you to create distinct viewpoints representing your entities from different perspectives.
If you stick to the architecture principles of loose coupling and modularity, you should be able to split up very big diagrams into smaller ones. After all, their role is to give you an idea of how things are coupled and work together, but also to abstract from things that are not really relevant in the given context of the diagram. Diagrams are not meant to just visualize all elements in one big picture.
You can create package structures that are pretty complex and then use the model search. You can also put hyperlink elements for easier navigation between diagrams.
If you have to split up elements into different diagrams (which then go into different packages) EA will preserve their relationships and you can review them at any time using the traceability view.
I would also have a look at the EA options for composite diagrams. This should help you re-organise a Single System into a number of Composite Sub-Systems.
To start modeling an application architecture, you can use a perspective based approach or a view modeling perspectives approach to describe your system. For example use the 4+1 view based approach to collect your Logical, Development, NonFunctional and Requirements perspective. Organize it according the mentioned dimmensions or decompose each dimmension by the application modules and have a conceptual view to have a global view of your system.
To start with a model of an enteprise architecture use for example the togaf dimensions or zachman framework layers and dimmensions
You can use several packages to categorize your content.
I use to make a package diagram on top level which dynamically updates its contents depending on underlying packages (simply drag & drop the packages in the package diagram)
and the content (e.g. for activity diagrams) like entry or final can be saved in a common package.
Unfortunately there is no possibility yet (version 10 build 1004) to customize the packages e.g. with colors. So that a common packages could have a distinct color.
What I do to make Project Browser more organized is to create one package named "Diagram's elements" and drag all the diagram element there.
There's some good advice in this blog on the Sparx Systems (the EA publisher) website.
Related
I have this simple diagram, it doesn't follow any type of UML diagram. Its goal is to show all the parts of our solution, and how they're related.
In the image: the web scraper scraps the data in some websites and stores it in the database. The web application receives filter options and implement it using a Rest API that returns some data to be exported in xlsx and csv. The API uses the database populated by the web scraper.
I need to make a new diagram with the highlighted process above, using UML. I had a suggestion to use a package diagram, so I made this version:
Edit: In the image: Fonts -> Web Scraper -> Database -> Api(Filters(type of filters)) -> Front end (results, search options) -> User
Is it the right way of making a package diagram? I couldn't find a similar example or specific rules for this case.
Are packages the right modeling tool for your needs?
Packages are namespaces and aim to structure a model. A package diagram therefore does in not represent a process with data flows (dynamic behavior). The relations between packages are namespace relations such as «imports» and «merges» and dependencies.
Your package diagram certainly shows some valid decomposition of your design with nested packages. But you would normally not represent users (usario), or flows of data (dados) coming from a database (Banco de dados).
What are the better alternatives in UML?
Your initial diagram shows in one picture, using some flowcharting symbols, very different things:
conceptual classes of objects such as fonts, filters, or files
components such as web scraper, the database, front-end, back-end,
flows of objects like the webscraper that feeds the database that is queried by the backend, or interactions between freont-end suppliying filters and back-end that provides data.
If you want to represent this in UML you need to clarify the focus, because UML requires some precision since it separates structure and behavior. The answer will depend on what you want to show:
the flow of processes and data? Use an activity diagram (behavior). This is perfect to show the flow from the source to the end-result, but not so easily the parts of the system that are involved.
the relationship between components ? Use a component diagram (structure). This is perfect to identify the components, how these are nested, and how their interfaces are connected. But it does not show the order in which all this happens.
the interaction between components ? Use communication or sequence diagrams (behavior). Here you see what the components exchange in what order, but not so well how the components are structured.
Spontaneously, I'd go for components, since I have the impression that this dominates your original diagram. But in the end, you may use different diagrams for showing the different aspects.
Other alternatives
If you're looking for a single diagram to combine the different thoughts of your original diagram, alternatively to UML, you could consider C4 model diagrams.
It's less precise than UML, but very convenient for communicating the big picture of a system architecture. The C4 context diagram and the C4 container diagram in paticula allow to show the system's main components, and some high-level relations (including data flows) between them.
The good news is that C4 relies on UML for the the more detailed design of the identified components.
I am working on a data science project for my 3-2 mini project. My project analyzes the performance of a country in the Olympics based on some attributes. But I am confused about the UML diagrams I should be using in my project.
There are some 15 UML diagram types out there. A sensible sequence of diagrams to be created depends on your approach.
If you'd like to create an analysis model that is a conceptual model of your problem domain then a sensible sequence of diagrams might be:
Usecase diagrams
Activity diagrams
Class diagrams
and if your project gets bigger you might need package diagrams.
If you'd like to create a design model that is a conceptual model of your solution domain then a sensible sequence of diagrams might be:
1. Component diagrams
2. Class diagrams
3. Sequence diagrams
4. Statecharts
In both cases a starting point is having a diagram for your system context. Some people like to mix component and usecase diagram features to denote a system context.
The aspects you might want to take into concideration of your diagram choices are:
syntax - how strictly would you like to follow the UML standard and what use does adhering to the standard have for you
semantics - what is your need - what do you want to document - and who needs to understand it
pragmatics - what is the best way to achieve your projects goal e.g. being efficient and effective
tool - what tools do you have at hand and are used and known to your peers - what can you afford to invest in keeping the tool infrastructure up
While your question is very broad, I could imagine that in view of:
My project analyzes the performance of a country in the Olympics based on some attributes.
you'll certainly need a class-diagram. Because the class diagram will clarify what kind of objects your software will manipulate (e.g. Olympic game, Participating countries, Teams, Athletes, Discipline, Competition), how they are related, and what attributes are associated with which each.
This will enable you to determine for the different analysis you want the access path to the relevant attributes. It will also allow you to find missing attributes, and to desing a convenient interface for the different classes.
You may also use other diagrams. But with the few requirements you've shared, it's difficult to guess which one and I do not want to do a lot of guesses. I could nevertheless imagine that a use-case diagram could help to give the big picture of who is going to do what with your software.
I am complete beginner in uml and need to make diagrams to show use and structure of current information system in organization. They use one system for manufacturing and one for accounting, warehousing and HR. First I want to do use cases with description. First question is should i do it by module (each area of business they cover)?
Then i need a diagram to view connections between the systems. Is it okay to use component diagram or which diagram is more appropriate? If company uses Office 365 does it show in diagram? Also if system supports EDI should i also include it?
Thanks for help.
As always: It depends.
Use cases are about added value. If you are going to document a complex system it's a good idea to group things. For a company a grouping by organizations would be reasonable. Though there are often horizontal (single focus) and vertical (needed in multiple area) departments. If the focus is to "re-invent" you should probably decouple your view. Anyhow, finding real use cases is a difficult task. So during synthesizing them you will likely find out how to group them logically.
Starting with components is also a good idea. You can use component instances showing concrete uses (with locations shown via packages). These concrete components can be abstracted to general components so you known which different basic components are used (package them centrally). Interfaces between components can be shown by assembly connectors (those with socket/lollipop). Later you can detail important components using ports and interfaces. Other components can be left peripherally without more details. Whether EDI/Office are "important" depends. Include them generally and find out in discussions during analysis whether details are needed.
I am very confused on what are these "components" should be. I am just starting with UML by the way. I don't know what components should be used or be place in the diagram. I've searched for definitions about these components and they are very hard to understand. Can you please explain it in a very simple way on what these components should be?
P.S.: This component diagram will be about a website. A planner website.
I can't post what I had in mind because I am a new user and new users aren't allowed to post images.
The way I think of them is as a large, logical, chunk of the functionality of a system; a bit like that which might be found in a single library or a .jar file. They tend to be associated more with software intensive systems distributed over multiple nodes (computers) and locations. They idea is that they interact, mainly, through well defined interfaces and that they can be replaced or "swapped out" with another component that will do the same job. An example would be changing to a different database management system, or updating some hardware drivers.
Components are used most in component and sequence diagrams.
I believe there is a debate as to what the real the differences between components and classes are. Both are specialisations of the concept of a classifier in UML
In your case —without knowing much about the specifics— you might have the following components with interfaces between them:
a web client component
a business/problem logic component or components
some sort of data management component.
At the end of the day though, you use the UML in whatever way works for you. A simple software project might not benefit at all from using component diagrams. It's up to each project team to define what context and level of abstraction they are working at and choose diagram types accordingly.
I'm a total rookie in UML and modelling. I'm learning some framework, and I'm trying to grasp and outline its key aspects. I've decided to do it with UML. But the problem is, the whole structural diagram of the framework is of no use to me, because classes have a lot of properties and methods, and there's a lot of classes.
What I need is a series of structural diagrams, each of which shows some specific aspect of the framework. And the classes involved should display only those attributes/operations that are of certain value to this specific aspect.
Does UML (as a standard) supports this on some level, and is there some tool that allows to do just that? I've tried Visio 2007 and Enterprise Architect, but I didn't found out the way to do what I need.
Thanks in advance.
What your are looking for seems to be able to customize views of your model and not to visualize the full class diagram. This concept is developed by Omondo which provides customizable views of your model by drag and drop. You can create as many views as needed, each could be different from the others while just using the same model element. This also the metamodeling approach for me where the model is not the diagram but the metamodel on which your build your graphical model.
If you don't need attributes/methods then you can try to click directly on attributes and methods keeping the ctrl button pressed, then you should be able to find a menu in the class diagram to hide them. The traditional menu is Hide from diagram.
This is what I do and it works really well.
You can also just click directly on attributes and methods but I don't see any documentation on this subject. It seems that nobody knows except the developer and myself about this option but this is my favorite one :-)