Several ideas on UML

Source: Internet
Author: User

This article is a little long. It may take some time. I picked some wonderful articles.
Address: http://www.umlchina.com/best/g35/u1153383.htm

Newjing:
I joined this forum today and found that the discussion was very lively. I also wrote my own feelings to share with you.

The ability of UML to achieve this is not only what I expect (hey, I used to focus on modeling), but also unexpected. However, I did not agree with the pursuit of UML by many people, but there were also many cool B GG. When I used to recruit system analysts, I asked him what UML was. He told me-drawing tools, and I told him to go home and wait for a message. Whether you are learning UML to improve your analytical capabilities or to find a job, you must first understand it. UML is just a language, a communication tool, and a Notation developed by some industry conventions, metamodel is a unified set of languages that truly guide us in requirement analysis and system design. It is nothing more than our own software engineering literacy and engineering experience. Taking recruitment as an example, my practical question is to describe a simple elevator model. One person can draw very complex and detailed class digoal and sequence digoal, the other has a poor grasp of digoal details, but on the other hand, the latter considers that the top and bottom layers of the elevator are different from the middle layers and cannot be described in the same class, who should I hire? It is certainly not a UML diagram that can be very beautiful, but let the elevator go to the ground.

Many people may feel a headache for the numerous graphic descriptions in UML and do not know where to start learning. As an early contact with UML, I hope to provide you with some suggestions. For beginners, UML distilled is definitely the first choice of books. At the same time, I will go to the forums of the Rational company. It will be of great significance to have a lot of case analysis and questions answered above. If you have a deep understanding of UML, it involves semantic layers, such as synchronized and asynchronized. When is it used? synchronization not synchronized during modeling is not the same as program implementation, if you are interested, it is recommended to read some books on the Formal language Formal methods and learn a little about the Z language and CSP, which will be very useful.

In addition, UML can be used for modeling, but it is absolutely nothing. Although the version is constantly being upgraded, from simple graphics to adding OCL to various Pattern, however, there are still many semantic defects. As we all know, if the semantics of a language is incomplete, it will lead to ambiguity. It is used for precise system design. If it is completely dependent on UML, it will bring a lot of problems, in fact, this is also the reason for the existence of mathematical languages such as Z, VDM, and CSP. However, UML is used in common projects. Compared with the previous Word documents and visio, it is indeed greatly improved.

My opinion must be biased and I hope to discuss it with you.

Smilemac:
The program design has become a popular product, and the difference between the Process and the program is everywhere unclear, but dare to talk about the operating system design, the operating system does not understand what it does, but dare to talk nonsense about what the operating system needs to do, read two days of XXX21 days and the software engineering fashion magazine (to be honest, nowadays, the level of many books is really not a compliment.) I dare to be a XX expert.

"I asked him what UML is. He told me -- drawing tools. I told him to go home and wait for a message ."
Haha, the recruitment efficiency is very high.

Newjing:
I think it makes sense to regard UML as the core component of development. A software development process is a process of understanding the requirements and implementing the system design from the beginning to the end. The most difficult part of the development process is how to ensure system consistency when there is a division of labor (even if there is no division of labor, one person develops For A Long Time). For example, whether the requirement analysis truly captures users' core needs, whether the design is consistent with the requirement analysis, whether the program implementation is consistent with the design, whether the style of each developer is consistent, and whether the interfaces are consistent, test whether the task is performed according to requirements. Therefore, we must have a means to maintain the continuity and unity of our entire Engineering thinking. The emergence of UML just solved this problem to a certain extent.

However, I am not sure whether UML can play this role in any project. It may be because I used to study how to use Formal Methods to supplement UML (Haha, I used to attack UML hybrid papers, but now I am using UML for mixed meals ), I think many of the inherent defects of UML still cannot be compensated, which is also the reason why FM is irreplaceable. For example, UML lacks fundamental semantic support and it is easy to prove that a formal model can be developed with tools for type checking and model checking, but now it is the best rational rose/iLogix, only simple lexical analysis can be performed. Therefore, for precise systems, it is difficult for UML to ensure accuracy in the detailed design stage. Of course, UML has been working hard to improve accuracy, and the addition of OCL has played a certain role (but it is still a natural language with simple logic judgment ). However, even in the current situation, how many people really understand and apply UML? The UML design drawings taken out by IBM engineers are terrible. One class draws two arrows, always make it clear whether it is concurrent or sequential.

I still insist that UML is more suitable for the expression and demonstration of analysis and design ideas, the expression of software engineering ideas, rather than the language for precise design. The more abstract the direction is, the more role UML plays. Even Booch does not mean that he will spend the rest of his life on UML's research at Software Architect. So I always think that, in theoretical research, David Garlan is much better than Booch :)

Thank you!

Billiondelly:
Martin fowler has doubts about the future of UML. He agrees with his opinion. I think UML may have two usage methods in the future:
1) As in the past, it is a simple and clear way to express modeling ideas as a bridge of communication.
2) Precise semantic definition becomes a new "programming" language!
Newjing, since the original work is "How to use Formal Methods to supplement UML", will your research result be "not feasible?
This is also the direction of UML2, but I did not carefully look at it and do not know whether it can be met or whether it can reach 2 in the future. Can UML be a fully formal language? Of course, it may be beyond the scope of the project ...... Fuml, but as long as the original advantages of UML are easy to use and intuitive while ensuring semantic accuracy, what can be done?

Newjing:
I do not think I have a static view of dynamic models. There are many modeling methods, but usecase driven or data driven are based on static class diagrams. One major difference between modeling and coding is that (overall) We consider what the object is doing and how the (partial) implements what functions.

Elevator is a very complex model. Many people study an elevator model throughout the Doctor's phase. There are countless changes, such as synchronization and algorithms... When I took an interview with Microsoft three years ago, they gave me a question: if u are an elevator engineer, how wocould you test a lift? At that time, I racked my brains to talk about it, and the examiner asked and? And? And more? For example, I did not consider the impact of the acceleration on the cable when the elevator was started.

I agree with you that UML does not provide a mechanism to weigh dynamic models. In fact, there are two diagrams in UML with precise semantics, one is the class divisor evolved by er, and the other is statechart (unfortunately, Michael Jones is not as widely known as booch ). UML and graphics are all unified (?), However, the semantics is not unified. I am very skeptical that this patchwork method can establish a unified semantics. This is because the semantics of class digoal is concise and clear, so the code production or reverse engineering claimed by the uml case tool can only process some static things.
As billiondelly mentioned below, he thinks that UML may evolve into a new programming language, and I do not believe that the process from model to code is refinement, up to now, no convincing research results have been produced, and countless people do not believe that refinement is useful, so participation is indispensable. In the current modeling language, the effect of refinement is better, that is, language B. However, it only uses small programs and more automation. Now, Microsoft has a group studying FM. Maybe their participation can make some new things.

Smilemac:
In addition, the model has nothing to do with the code, and the discussion does not need to write the code, but the code is the most accurate reflection of the design idea, a thousand words, not as clear as a few lines of code.

Rode:
Static and Dynamic involves a modeling object. That is, modeling the elevator control software for elevator modeling is two completely different problems.
The purpose of modeling an elevator is to abstract the operation of the elevator, take various external influences as boundary conditions or input parameters, and establish corresponding constraints for the model, on this basis, we began to discuss elevator models, such as synchronization and communication. (For me, it is a very profound problem and I dare not talk about it in depth.) Many problems require dynamic models to describe, or use equations to describe.
However, the elevator control software modeling is different. First, the elevator software modeling is based on the above elevator model, that is, the elevator model is the theoretical basis of the elevator control software. In software modeling, another important element needs to be added at this time, that is, people (people who use the software) and other systems that communicate with the software, at this time, both the user and the external system exist as modeling elements, so our dynamic model is mainly reflected in the interaction between the user and the elevator. The model used to describe the operation mechanism of an elevator actually exists as an algorithm (or a piece of code exists, which is the content described by the elevator model ).
In terms of software modeling, its elements are actually subsystems, classes (or interfaces), component and node models and dynamic interaction between them to implement system functions (can be considered as a dynamic model ).

Bbmud:
UML, a unified modeling language, can be known from the name. This is just a means to describe the model, not the modeling process itself. If there is a relationship between them, that is, UML is used to describe the intermediate and final results of the modeling process.

Newjing:
Oh, dude.

What is system analysis? What is the difference from design? I 'd like to say a few words about this question. It is indeed difficult to draw lines between analysis and design. This boundry problem also exists between the Requirement Description and the requirement and design, which is related to the individual's habits, it has nothing to do with the procedures and regulations of different companies. This problem also exists when using FM modeling.

I have a vague principle to differentiate between the functional layers that users (non-software personnel) can clearly describe as a boundary. For example, the lighting system of a building was designed in the past. The lighting in the house was adjusted according to the natural light intensity of the windows, so a sensor for natural light was needed. For this sensor, I will regard it as a stereotype in the Requirement Description, and there is an interface, regardless of its internal. In the design phase, it describes how to run it internally (this is a typical Asynchorized sensor ).

I agree that traditional methods and UML can be converted to each other, because they are nothing more than conversions between languages. For example, when a mathematical language says "one-to-one ing", all of us can understand the four words, but natural language may have to be explained for half a day. However, it is hard to say whether the UML model can be described in a traditional method so accurately or not. Because the semantics of the two languages is different, the matching cannot be found. Therefore, you need to extend the semantics of one party to match.

It is not difficult for a market clerk to participate in system analysis. I do not agree. If the system analysis is done by market personnel, there must be an analysis process that is converted to the software system description before the design. That is to say, after two analyses. Of course, this depends on the definition of system analysis.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.