Is Object Oriented Modelling And Design part of Software Architecture? - uml

Is Object Oriented Modelling And Design part of Software Architecture?
I am confused between Object Oriented Modelling & Design and Software Architecure. In Software Achitecture we are providing the skeleton for system (as I understand) In Objet Oriented Modelling and design we design the system using different UML Digrams. So are we doing same thing in Software architecture ?
Because a skeleton could be defined using diagrams only,right?
Can someone please explain me with Example of Software architecture?

No, Object Oriented Modeling is a toolset or process, Software Architecture is a deliverable artifact.
Related:
Wikipedia: Software architecture
Wikipedia: Object-oriented analysis and design
Kirill Fakhroutdinov's uml-diagrams.org: examples of UML diagrams documenting a software architecture
Scott W. Ambler's Agile Modeling: Architecture Envisioning: An Agile Best Practice

Software Architecture is a very broad term. It can describe the software of the tiniest component, to the largest systems.
OOMD is the process of arriving at a design that may be a part of a software architecture, typically by using Class Diagrams. But OOMD can be used outside of designing something new. It can be used to help analyse and understand a piece of legacy code.
UML is a language which is used in conjunction with OOMD. It is nothing more than that. A UML diagram doesn't necessarily 'contain' an architectual concept, just as much as a picture of an apple is an apple. One would use UML to illustrate and solidify concepts that will eventually go into the finished product.
Not all of UML is concerned with OOMD (eg. Use Cases, and Activity Diagrams). And not all of OOMD is concerned with Software Architecture.

No, object oriented modelling and design is not part of the software architecture.
The software achitecture is independent of the platform that is used to implement it. The platform doesn't even have to be object oriented.
Software architecture has been around since before object oriented development even existed. I remember learning software achitecture approaches (JSP) before even hearing about object oriented development (OO was a very recent concept when I was in school).
Part of the software architecture could be used to automatically generate object models using some tool, but this a different part. By doing that you have taken the step beyond the software achitecture and chosen a platform for the implementation.

Related

Software designing process with UML

When designing for a software, what is the correct order of UML diagrams we have to do? Starting from the Use Case diagram, what would be the next diagrams until we have enough to start coding?
UML is just a modeling language, not a software development methodology. A well-known methodology that provides guidelines for using UML in its software development process is the Rational Unified Process, although its popularity has declined. Still, it is not easy to determine the order of the UML diagrams prescribed by RUP from the available material provided by IBM. I have written a paper http://admiraalit.nl/admiraal/WhichUMLmodels.pdf which may help you with that.
For a simple application, a class diagram and a component diagram may be enough, but it depends very much on the type of application.

What is the difference between OWL and UML in the Software Engineering Process

Currently i am trying to figure out, then to use OWL and then to use UML to describe a domain of interest in a Software Engineering process.
I read this paper by Atkinson, which gives a very good overview about the difference and the equalities of OWL and UML on a semantic and a syntactic level.
However it does not provide a clear indication in which use-cases it might be better to use OWL instead of - for example - an UML class diagramm.
It might be the underlaying development process, which decides the modelling language to take (e.g. model-driven = go for UML, ontology-driven = go for OWL) but for myself it is this difference still not clear?
In both language I can build up a terminology, which I - as an ontology engineer - can reuse in order to infer new knowledge from it. As an Software Engineer I use this terminology for the construction of a (single) system.
So is the difference between OWL and UML just the field of study? Or could I use OWL in order to describe the construction of my (single) software system?
Moreover, this raises the question if the decision of which kind of modelling language to choose is only driven by the goal, which I try to accomplish?
A synthetic answer
UML is a (graphical) language for modeling
OWL is a language used for knowledge representation (KR) in a semantic perspective
In the first place, OWL purpose is not modeling. Using a KR technique is an option in the field of software engineering. It should be distinct from any software engineering process. Both languages have different purposes.
Of course, you could [use] OWL in order to describe the construction of [a software system]. But the interest of such a move would mainly be in automated reasoning about your software construction process and would not be very helpful in the context of a single project. This would only be effective if done for all your projects in order to have a consequent knowledge base (KB).
A detailed explanation
According to the W3C wiki section about OWL:
The W3C Web Ontology Language (OWL) is a Semantic Web language designed to represent rich and complex knowledge about things, groups of things, and relations between things. OWL is a computational logic-based language such that knowledge expressed in OWL can be exploited by computer programs, e.g., to verify the consistency of that knowledge or to make implicit knowledge explicit
There should be some debate about what is a modeling language. For example, the Wikipedia article on the topic considers a broad sense which could also cover OWL. I consider here with the modeling term only the software engineering activity (which is the one you focus on in your question).
You might need modeling in order to define ontologies, just like you would need for the development of a software project. But this OWL modeling would not consider the software engineering elements but rather the domain data of your project. In other words, using UML in a software construction process aims to setup software elements. With OWL, you would not focus on these elements, unless you are trying automated reasoning about software construction.
Beside this, a relationship exists between UML and OWL. A note by Walter W. Change in the frame of the W3C discusses the question. I would summarize the question considering two distinct relations.
Using UML to represent OWL knowledge
An OMG specification called ODM (for Ontology Definition Metamodel) provides a metamodel for defining ontologies. In the frame of this specification, the use of an UML profile is introduced as a way to bridge a gap between both languages. In the ODM 1.1 specification, section 8.4.2:
The goal of a UML profile from the ODM perspective is to provide a bridge between the UML and knowledge representation communities on a well-grounded, semantic basis, with a broader goal of relating software and logical
approaches to representing information.
The UML profile use is introduced in an article. You might find such a profile in the ODM 1.0 specification resources, as a non-normative document. According to what is here considered, this UML profile might be a tool for modeling ontologies.
Using OWL/Semantic Web technologies to represent UML
RDF is the basis format used to write OWL ontologies.
An early (2000) academic work provides a semantic RDF document modeling the UML elements (based on the OMG specification). This work preceded the draft works on the OWL W3C recommendation (2002).
Actually OWL is available as profile in UML. See OMG specfication. So you can use UML with OWL profile in "one soup".
Let's start with the definitions.
Unified Modeling Language (UML) is a general-purpose, developmental,
modeling language in the field of software engineering, that is
intended to provide a standard way to visualize the design of a
system. (Wikipedia)
UML has many diagrams, but none of the classics is designed for ontology modelling. Therefore, researchers have created OWL with this purpose.
The W3C Web Ontology Language (OWL) is a Semantic Web language
designed to represent rich and complex knowledge about things, groups
of things, and relations between things. (W3C)
Such as said by Thomas Kilian in the other answer:
OWL is available as profile in UML. See OMG specfication. So you can
use UML with OWL profile in "one soup".
Therefore, OWL can be part of the set of UML diagrams used in a Software Engineering Process. The main benefit of OWL over classic UML diagrams is when you have to design a system using ontologies. The purpose of class diagrams is to represent classes, not ontologies. If your system does not rely on ontology, stick with the classic UML diagrams; you do not need OWL. If your system uses ontology and you need to represent it on a diagram, use OWL.
OWL is used to describe a domain and to be able to specifically, using semantics, specify knowledge of a domain as well as describe its specificities. Take for example the Friend of a Friend ontology. Using it you can describe how people relate to each other.
You might say that you can do the same thing using UML and you are correct. You can specify properties, relations, and so on, using OWL as well as UML. However, what you can't do with UML is infer domain knowledge. OWL, being a Semantic Web language, models a domain with either an Open or Closed World assumption. Basically you assume knowledge based on what is described in the domain. Then you can use specific instructions to infer knowledge using Rules or just be looking at predicates and statements you have created. Furthermore, you can use specific query languages such as SPARQL to query your ontology as much in the same way you would use SQL to query a database.
TL;DR: Using UML you specify how you would translate a specific domain into software, using OWL you specify knowledge about the domain as it is much richer than UML.
To amend the references of UML and OWL comparison there is a PhD thesis (in German) from Jesper Zedlitz Konzeptuelle Modellierung mit UML und OWL – Untersuchung der Gemeinsamkeiten und Unterschiede mit Hilfe von Modelltransformationen
(Conceptual Modeling with UML and OWL - Exploring the Similarities and Differences Using Model Transformations)
In this thesis studies if and in which extend it is possible to tranform between both modelling languages. In the conclusion (p. 222) it is stated that OWL has possibilities to do more complex modelling and therefore it is not always possible to transform from OWL to UML.
Actually from my work on ontologies in the previous time I see using ontology tools like Protege is very helpful and rich in describing relations between entities and using Tools like OLGA can help you in mapping this ontology to many object oriented language.
Yes, we haven't the capabilities of using graphical representations to design our models like UML but it provides a wide range of options to describe you model.
The importance and benefits of mapping the domain ontology to the UML model are in integrating the benefits and quality that these two modeling techniques provide. That is, if there are already domain ontologies with a certain level of authority, these knowledge bases can help in the creation of UML class diagrams, such as the axiomatic guarantees provided by the description logic that builds it, besides enabling UML power of inferences Provided by this formalism, with the transformation is intended to show the evidence that reuse of ontology can help to reduce ambiguity in class diagrams.

Is there a standardised modelling language at a level higher than UML? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
What is nice about UML is that it offers a unified suite of defined diagrams for expressing software architecture. However, the diagrams are about the system being built and do not help for helping represent requirements and understand user-level issues (use-case diagram is the highest level and it's still very specific, we are looking for diagrams to use as input into a use-case).
So we've been using a hodge-podge of diagrams leaning heavily on dataflow diagrams, but I was wondering if there was a standard with a suite of diagrams like UML in existence for gather requirements etc.
I've seen individual diagrams that are useful, but never a suite of them that are standardised and interwork.
Is there something like a RML "Requirements Modeling Language" which a family of related diagrams for requirements and other more abstract concerns?
Depends what you mean by 'Higher Level'. Dataflow Diagrams are good - but to a large extent still define 'how' things work, not 'why'. I assume that since you've looked at DFDs you've also looked at and rejected business process diagrams in some form, e.g. bpmn/bpml.
Some other suggestions that may (or may not) be useful to you:
Feature Models, particularly useful for understanding Software Product Lines and the variability/commonality among variants;
Business Motivation Models which model the 'why's; objectives, constraints etc.
SBVR. A formalism for capturing business vocabulary & rules. Note it's textual rather than diagrammatic so might not be applicable.
Behaviour Trees, a notation for Behaviour Engineering.
That's a pretty broad spectrum. If you can be more specific about needs then it can be narrowed down. Worth noting however that none of the above have widespread industry acceptance; certainly not to the level UML has.
hth.
The Archimate modelling language is used for enterprise architecture modelling and might address some of your needs. The language is standardised by the OMG.
OMG page: http://www.opengroup.org/subjectareas/enterprise/archimate
A very useful blog from an experienced user of Archimate is here: http://masteringarchimate.com/ He has also written a useful book, sold through his web site.
Orbus Software have created a very nice Visio stencil for Archimate diagrams: http://www.orbussoftware.com/downloads/visio-starter-packs/archimate-starter-pack
A freely available single-user tool for Archimate modelling is Archi: http://www.archimatetool.com/
There are also a number of commercial tools including those from Orbus, BizzDesign, Corso, Avolution and others.
Eoin.
OMG, the standardization body which maintains UML, has a higher-level language for systems modelling: SysML.
SysML is intended to be higher-level than UML. It includes a "requirement" element type and omits many of UML's low-level constructs, but is still closely enough related that someone familiar with UML will recognize most of SysML.
UML itself is a model in a higher modelling language: The Meta Object Facility (MOF) which you could consider the supreme abstraction, because MOF is defined by itself (i.e. there is a MOF model that represents the MOF language). You can use MOF to describe a modelling language which can then contain diagrams/classes that you can define.
Link to MOF homepage: http://www.omg.org/mof/
And wikipedia: http://en.wikipedia.org/wiki/Meta-Object_Facility
Although UML is billed as a low level language you can certainly use it for higher level concepts either through UML profiles (See UML Profiles) or through a more developed extension. One such extension is UPDM which takes UML and SysML and extends it for use in architectures in the Defence industry (also applicable to more general uses) by representing the DoDAF and MODAF frameworks.
Just because UPDM is typically used to model lower level software architectures it doesn't mean that its extension mechanisms like MOF can't be used to model anything you want.
There is a modeling language called RML developed by Seilevel (full disclosure- I work there) that is specifically designed for requirements. You can read about it in this book
http://www.amazon.com/Visual-Software-Requirements-Developer-Practices/dp/0735667721/ref=sr_1_1?ie=UTF8&qid=1463064250&sr=8-1&keywords=requirements+models
Our blog has a lot of posts about it
http://www.seilevel.com/requirements/
Models are designed to be friendly to business users. The categories of models are
Objectives (Business objectives model, requirements mapping matrix, objective chain etc)
People (Org chart, process flow, KPI model etc)
Systems (eco system map, system flow, system interface)
Data (business data diagram, data flow, data dictionary)

UML for system modelling or for software modelling?

Is UML (unified modelling language) a technique for system modelling or for software modelling?
Both. Some diagrams are more useful for software modeling, but some others can be used for both. A state machine for example can be used for a software or a system.
But if you want to model a system with UML, you should take a look at SysML a profile to specialize your UML models.
UML is a general purpose modeling language, although it's primarily geared toward modeling object-oriented software systems. The latest version of the UML specification contains 14 diagrams, some of which are applicable to software in general while others make more sense when applied to modeling object-oriented software systems. Seven UML diagrams are used in SysML, which is commonly used for systems and systems-of-systems modeling.
UML is a tool for modeling all kinds of things, not even just programming related. For example, you can use state diagrams to model the function of a control panel, e.g. a thermostat. You can use use-case diagrams or sequence diagrams to document business processes.
You can use activity diagrams to show how a hamburger is made in a fast-food restaurant.
According to the wikipedia article about Unified Modeling Language it is "a standardized (ISO/IEC 19501:2005), general-purpose modeling language in the field of software engineering. The Unified Modeling Language includes a set of graphic notation techniques to create visual models of object-oriented software-intensive systems."
It is used to describe the more abstract structure of the system and the software itself at the same time.
If you take a look at the article (which I highly recommend), you'll notice that
"The Unified Modeling Language (UML) offers a standard way to visualize a system's architectural blueprints, including elements such as:
* activities
* actors
* business processes
* database schemas
* (logical) components
* programming language statements"
* reusable software components"
By describing the activities, actors, business processes you basically describe the abstract representation/design of the system.
And by describing the (logical) components, programming language statements, reusable software components you describe the implementation details (software).

Advantages and disadvantages of BPMN?

I was hoping you could tell me what the advantages and disadvantages of BPMN are in a developers perspective.
I'm comparing UML with BPMN and a found a bunch of advantages and disadvanteges for UML but none for BPMN.
It's largely down to audience and purpose. In terms of modelling language, BPMN and UML activity diagrams cover pretty much the same conceptual space with different notations. The notation thing gets religious very quickly. I personally prefer AD notation over BPMN - but it's a very personal thing.
Broadly speaking, BPMN tends to find favour with those coming from a business process modelling / business analysis background. UML ADs tend to be favoured by those coming from a software perspective. Tool support tends to mirror this: the high end process modelling tools (casewise, aris, etc.) are more likely to support BPMN; software modelling tools (MagicDraw, Sparx, etc.) favour UML. However there's increasing crossover there. I've used both with business stakeholders with no issues in either case.
Finally is purpose. Are your diagrams going to be for human consumption only or used as a specification for some form of analysis/code generation? If it's not just pictures then your tool chain may well be the deciding factor.
If you want a more detailed description of the differences, have a look at the answer in this forum post.
A new BPMN Profile has been discussed at the OMG. UML can easily generate code even with an activity or state diagrams. You just need to add stereotypes in your model then a parser will take the xmi and create code. The OMG specification will define which stereotypes should be used and why. Really a very good idea !!
In my company we have stopped using BPMN and are only focus on the activity diagram which is more accurate because built on the top of a standard language. Having also class diagram, usecase and activity diagrams allows to model faster.
We get a running code from our activity or state diagram. We debug with our class diagram.
We use the same metamodel for all diagrams and therefore can trace activity to code implementation and through class diagram. I mean that the code is reversed once generated and then we check all requirements and the architecture in order to have a nicer object architecture.
Everything works well :-)
We are now waiting for the new profile specification and will implement the needed stereotypes in order to cover BPMN.
My answer to your question is that we don't need anymore BPMN and should move on to UML 2.3 BPMN profile implementation.
BPMN is for modeling business process flow, isn't it? That's not exactly what UML is for. The goal of UML is to model a software from different view and ultimately not to have to code it (yes that's kind of ideal).
The main arguments for BPMN from a business perspective are usually:
When building BPMN diagrams from scratch with many stakeholders, it is ok to mix tasks of different levels of hierarchy, which can be detailed out or summarized later.
The basic language elements can be thought quickly even to a non-technical audience.
The developers can immediately start working and attaching source-code and scripts to the BPMN-diagram by workflow and business process management software like Camunda.
The main drawbacks are that
The initial BPMN sketch (usually by the business) usually needs many iterations to arrive at a diagram which allows for implementation.
It is not straight forward to represent different roles since the usual concept of lanes in pools might not be enough or lead to huge diagrams, see e.g. BPMN: multiple roles in a row
See the MDA on OMG (Model Driven Architecture):
- we use BPMN only for Computation Independent Models (CIM)
- we use UML only for Platform Independent Model (PIM, high level design) and Platform Specific Model (PSM, low level design).
- using BPMN for any "software systems" or UML for "business" have no sense (see UML v.2.5)
- for developers: we can make transition from BPMN business process to Use Case, it is good tool for defining scope of requirements for software https://www.visual-paradigm.com/tutorials/from-business-process-to-use-cases.jsp
If you are looking for similarities, both UML and BPMN diagrams can be described using text.
PlantUML
BPMN Sketch Miner

Resources