Where can one find thorough documentation and UML diagrams of popular software? I've searched around and have found very few examples. I'm sure most of this documentation will be private for enterprises, but maybe there are a few links around?
Cheers!
You will not find such a document except if you work at MOF level like Omondo EclipseUML does.
There is also a dilemma in UML.
Should UML just be a view of a problem and therefore only covers a specific view of a software or should it cover the full project ?
UML has been stuck during many year by Model Driven Development which is a code generation from a model. It is therefore one shot modeling which could not be reused. The problem is that to complete a project you can not just generate a code from a model you need to complete the code by hand !! This is why MDD and UML is useless.
Your question is really good because why don't we just use an existing model which is specific to a business, arrange the model as much as needed and then generate the code ?
I think reusable models do not exist because too many transformation layers between graphical model, views, metamodel , MOF etc.....
Projects would be developped 10 times faster if reusable models and architecture would be robust. So why no free model exist today ? It is always question of money :-)
If no money then you need to use open source but open source is crap MDD. It is not a full model but just a specific view of a problem while you need full project to generate usable code !!
Omondo has done a courageous initiative to cover the full project by reversing all model information inside a MOF model and then giving views of the model using multiple class diagrams. Class diagram is live syncrhonized with the code and MOF. The problem is that you need to pay for the tool and consulting companies are selling their business models build on the top of MOF. The UML tools have less and less value but models could be a lot more profitable market in the near future.
Related
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'm new to using Sequence Diagrams, and I'm trying to find references but too many things make me ambiguous. There are a number of questions that I will ask about this problem.
From this references Ref1 and Ref2 I see a difference between Image1 1 and Image2 . For image1 he use MVC method, and for image2 he just pass it to database, and last i found this image on google he using boundary, but on PowerDesigner i dont see boundary icons
.
Can you explain to me the difference between the three images?
Which should I use to create a login sequence diagram? In my case I will make "Web-based Monthly Report Archiving"
Can you give me a reliable reference for making Sequence Diagrams?
I always recommend reading some book explaining how to model system using UML. It makes things easier and you can find some on-line.
Ad1.
Sequence diagram is a method of showing the interaction in a specific sequence but it does not assume anything about methodologies or standards used during modelling. MVC is a standard unrelated to UML creating some best practices about how to design systems. Whether you use it or not is up to you (unless you're constrained by e.g. your company).
As already mentioned in a comment by bruno since MVC is not part of UML standard it does not have to be implemented in UML compliant tools. Yet since it's quite popular you may find it in many tools anyway.
Ad2.
It's up to you and your design decisions.
Ad3.
This page in general is not about suggesting sources for general things. As already mentioned above I would recommend reading some good book about modelling in general. My standard recommendations are Howard Podesva's "UML for the IT business analyst" and Craig Larman's "Applying UML and patterns". A direct reference about UML may be found on this excellent page but it will not tell you how to model or design, only how to depict your model properly on UML diagrams.
Can someone briefly explain the difference between a Conceptual Class Diagram and a Detailed Class Diagram?
While a "Conceptual Class Diagram" expresses a conceptual (domain) model, it's not clear what you (or your professor) mean(s) with "Detailed Class Diagram": it could refer to a (language-/platform-independent) design model or to an implementation model like a C++ class model or a Java class model.
See also my answer to this related SO question.
The one-to-many relationships between conceptual models and design models, and between design models and implementation models are illustrated in the following Figure:
As an example that illustrates how the derivation chain from concept via design to implementation works, consider the following model of a people/Person concept/class:
Domain models are solution-independent descriptions of a problem domain produced in the analysis phase of a software engineering project. The term "conceptual model" is often used as a synonym of "domain model". A domain model may include both descriptions of the domain’s state structure (in conceptual information models) and descriptions of its processes (in conceptual process models). They are solution-independent, or ‘computation-independent’, in the sense that they are not concerned with making any system design choices or with other computational issues. Rather, they focus on the perspective and language of the subject matter experts for the domain under consideration.
In the design phase, first a platform-independent design model, as a general computational solution to the given software engineering problem, is developed on the basis of the domain model. The same domain model can potentially be used to produce a number of (even radically) different design models representing different design choices. Then, by taking into consideration a number of implementation issues ranging from architectural styles, nonfunctional quality criteria to be maximized (e.g., performance, adaptability) and target technology platforms, one or more platform-specific implementation models are derived from the design model.
A conceptual class diagram is used to understand and analyze a problem domain. A detailed class diagram is a design artifact, where many things may have been optimized away. For example, every dog might bark, but a dog-salon application doesn't care, so it can optimize away that fact.
I don't know of any standard or methodology that defines both these concepts. For example, the UML specification does not mention them. I think every answer will be subjective. I will give my own answer, based on more than 25 years of experience with IT-related modeling.
In a conceptual class diagram, every class is a concept, usually related to the business domain, the real world, e.g. Customer, Order etc. It may also show concepts that cannot be directly found in the business domain, but are needed to model the functionality of a particular application, e.g. BackupCopy. These are concepts the user of the application must understand. See also www.agilemodeling.com
There are other types of class diagram, e.g. class diagrams that model the source code, where every class corresponds to a Java class or a C# class, or class diagrams that model the physical database structure, where every class corresponds to a database table.
Each of these types of class diagrams may or may not be detailed. If a class diagram is not detailed, it typically does not show any attributes, or only the main attributes. If a class diagram is detailed, it shows all attributes relevant for the problem at hand and the data types of these attributes.
The concept of a conceptual class diagram is e.g. explained by Scott Ambler at http://www.agilemodeling.com/artifacts/classDiagram.htm#ConceptualClassDiagrams.
Basically "Conceptual" here means that the content of the diagram is taken from an analytic view point that takes the "concepts" of a domain and describes them.
For "concept" you could also say:
thing
item
aspect
object
topic
The conceptual diagram is basically what you get if you ask people for what problem they'd like to get solved by your software. So you analyze the situation/problem by asking questions that will help you create you diagram:
what are the things that are relevant? - these will be your candidates for classes
what are the features of those things? - these are the candidates for your attributes
how are the things releated to each other - e.g. is one part of another? Does it need the other? - these are the candidates for your relations
what should you be able to do with these things in your system ? - these are the candidates for your operations
In the past this step was called OOA - object oriented analysis. The steps following this are OOD - object oriented design and OOI - object oriented implementation. Many years ago some authors proposed to create three different models for OOA/OOD and OOI. Therefore you'd have different and usually more detailed diagrams for OOD and OOI. For the term "Detailed Class Diagram" i'd guess that one of the OOD and/or OOI views would be meant. Be careful though - some of the diagrams created this way will have patterns or pattern-like ideas as a basis. You'r diagrams would tend to be very repetitive and redundant if you keep capturing such patterns in concrete diagrams for every conceptual diagram. I'd rather recommend to give just one example of how to go from problem to solution and then comment "do it this way for all other concepts that are similar".
Please help me know as to when it(uml) is necessary. I was told that generally UML are drawn for web based application developement, for desktop based, DFDs and ERDs are used. My university requires all the diagram(uml,dfd,er). please let me know if my information is correct? Thank you
UML Diagram are imporant because it help the person to understand the relationship and dependency between different class present in the code(Class Diagram).
Flow of the program(Sequence Diagram , Activity Diagram).
Help to improve the program architecture etc.
And read about different type of UML diagram you will get more information.
Your needs in using UML depends on your position and your (self)education.
Some companies use UML. So, you would need it to get a job in them. Just now your university requires UML diagrams, so there IS a need in them, isn't it?
If you know UML a bit, you could understand the thoughts of your colleague who wants to share them with you this way.
If you understand the language of a UML diagram, you can use it for improvement of your thinking on the problem. So, you can think into the problem deeper and faster than without a tool. You should be really well acquainted with the tool though, for when inventing something new, you need to think on the domain problem, not on the language problems. But you don't need to know all the rules for this level of use yet.
If you know UML so that you can draw diagrams up to their strict rules, you have two more uses of it.
Translating your knowledge of the problem from one level of abstraction to another and modelling these levels up to the strict rules, you are filtering many misunderstandings in the already accepted model and can practically debug the model before coding. It can save much time and money.
While you are making the diagrams according to strict rules, you can collaborate on the model with your colleagues. It is always better if you can express your ideas more precisely.
As for technology limitations, you can use UML very widely, even out of the IT needs. As for IT, only GUI creation is supported badly. And anonymous classes are almost not supported in class diagrams at all (in behaviour diagrams they work OK).
DFD (datya flow diagram) and ERD (entity relationship diagram) diagram are tools for structural analysis and design, this is way to build structural application (data bases and functions). UML support quite different paradigm: object paradigm - we build application as collaborating objects. DFD and ER (ERD) diagram is not part of UML. We can use ER diagram for data base modeling and join to UML domain model by the ORM (object-relational mapping, implemented e.g. by Hibernate).
I need some sample UML diagrams for some project of medium complexity. Do you know of anywhere where I can find some? I don't need them for learning UML, but rather to test my application that I work on and that should be able to process UML diagrams.
It would suffice to have Class diagram, Package diagram and Component diagram, but those should all model the same system and should be consistent.
Here's an Oracle paper which contains the design of a Web Store application. This paper has all kinds of UML diagrams that one may want - Class, Component, Sequence, Data Model etc. It may not have package diagrams but, those are trivial.
Look at this site, they have nice examples in the product tutorials:
Enterprise Architect
Maybe you should be more concrete about what format you need... Also, it might be interesting to try out some reverse engineering from existing code.