How many object-oriented methods are used?

Source: Internet
Author: User

Topic: How many object-oriented methods are used?
Newtomme:
What method is used for system analysis, and how many are the object-oriented methods, or are the old methods used ?!
After analyzing some modules (several parts of a project) using the previous data flow diagrams and other methods, I found that the system cannot be clearly and clearly explained, but the entire project is represented by data streams. What should I do? I am not familiar with OO analysis!
In addition, most software development does not follow the software engineering method. After simple analysis, some documents are written and code is started, do you follow the development rules of Software Engineering during development? First, after analyzing and having finished a good document, programmers can solve the problem through simple communication! There are test records in the test. Are there quality monitoring records for each part after testing ?!
How do you do this?
I am very poor at this aspect. I am still very grateful for your feedback. By the way, what role did Rose play during the entire development process? Have you applied it to the real development process ?!

Potian:
As far as I know, there are few companies in China that are actually developing with object-oriented methods. There are several situations:
1. I don't know what object-oriented means: This is not necessarily a bad thing. No matter how many objects C has developed, it is still regarded as a classic operating system or compiling system. In some cases, non-object-oriented methods can also perfectly solve the problem. For example, Apache. However, I am not saying that object-oriented is poor in this aspect (System Software). The choose group led by Ralph Johnson can achieve performance of about 80% of C, the gains in flexibility and adaptability do not need to be said.
2. Use a object-oriented programming language, but do not use any object-oriented features. For example, today's Delphi, VB, Pb and so on are all or called object-oriented, but in fact the characteristics of the language itself are not used at all. I won the Provincial Science and Technology Progress Award for a set of systems compiled in 1995, but honestly, there is no object-oriented approach.
3. It uses object-oriented languages and object-oriented tools, but it is still a false object. Such companies and individuals are now mainstream. One of my former colleagues worked in a large Chinese company. They used the full set of RUP and also had the so-called Object Concept. However, most of their objects are simple packaging of traditional programs, it does not take into account the object-oriented goal: reliability, flexibility, better architecture, and faster customer response.
From my point of view, object-oriented development should have the following basic features:
1. Object-oriented Thinking: note that I didn't use object-oriented methodology. If you think that using an object-oriented methodology can be called your use of Object-oriented thinking, which I cannot see. The object-oriented thinking is first of all how you look at the world. A little smaller is how you look at the problems you want to solve, do you think the problem to be solved is the combination of wired and preceding vertices, such as input, modification, and deletion, or some interactive object cooperation to complete the task? There is a world in which "God" controls everything or the world is the result of the collaboration of these objects with the ability to survive, to act.
2. Object-Oriented Software Engineering: if you have not used any object-oriented methodology, I will not reject you. However, methodology, after all, is the accumulation of previous experience, how to obtain requirements, how to model, design, how to start coding (detailed design), how to document, how to test, and how to organize your development team. It is a problem that must be practiced and learned from a variety of methodologies.
In terms of requirements, Use case, Use Map, and CRC can be used according to different situations. However, in practice, I Use a sketch plus the Alistair Cockburn template most.
In terms of modeling, UML is a standard, but the analysis mode is often used for reference. I am not stupid enough to draw details that are useless for modeling. The analysis mode is infinite. It needs to be accumulated, but there are too many references for things such as party, business rule, invanle, and account.
During the design process, the model I created to apply the design patterns is my most commonly used method. I found that the design patterns community is so rich that it is almost difficult for you to construct a new model, of course, I do not rule out small discoveries. For example, I use factoryMethod in almost every system to create objects, Observer and stragy implement MVC, and use command plus memoto to implement undo, redo, and facade to encapsulate child layers, the state mode is also widely used, including hospital patients (registration, admission, pre-discharge, discharge), and EOSP2P P2P underlying protocol implementation. These systems are all in use, and services on different hospitals and P2P are effective. Not to mention Singleton.
The use of the pattern you design is so flexible and effective that I think they can solve 80% of the problems in the design.
There are two phases of testing. For unit testing, I strongly advocate that programmers should do it themselves. Of course, it is the xunit series, which is also a necessary condition for refactoring. I haven't studied much about functional testing. Generally, it seems that the rational testing is also very good to have it done manually.
3. The premise of Application Software Engineering: Put this point behind. It is because, if you do not understand software engineering and have never practiced it, it is difficult to see this premise. This premise is interface-oriented rather than programming. Without interface programming, your group cannot be organized or assigned. Interfaces mean that some people can implement interfaces, while others can use interfaces. If the Implementation changes, there is no impact on the user, so the key to the design is the interface. Personnel Organization, the key to process control is interface.
Personnel Organization and progress control I often refer to Jim Coplien
The homepage has benefited a lot, but for now, the main method used is the task card of kent beck.
4. language. I like Java more than other object-oriented languages. Of course, there are a lot of arguments. I will not talk about it anymore.
5. Maturity stage. The mature stage of object-oriented is the framework. The Design and Development of frameworks have high requirements on design modeling and white box developers. I will not talk about them here. The framework being researched on my homepage shows our ideas and methods.
Others include some basic object-oriented skills such as idiom and refactoring, which are very important, but will not be detailed here.
If you are interested, you can go to my erptao.org to discuss it.

Newtomme:
Thank you!
You seem to be a very experienced system analyst. Good. Can you ask questions later?

By the way, I would like to ask if you think it is intended to use object-oriented analysis in any project (I think there are two different projects:
Software Projects and product software with independent property rights ).

Potian:
The two seem to be different, but they are actually the same question: which are relatively stable, which are variable, and the frequency of change?
The first problem with the object-oriented analysis method is to separate the two parts. If you customize a project for a customer that you have never touched on before, it is difficult to abstract and isolate it from the beginning. However, from my experience, there may be very few problems that I have never encountered. For example, your system does not need to handle personnel, organizations, organizations, and quantities (amounts, conversions )? Does your system handle time-related issues? How does your system process attributes that may change dynamically? Such problems can be easily implemented, extended, and modified if there is a good framework.
The problem may be that time, capital, and pressure may be difficult at the beginning when the object-oriented approach is adopted. It may take a long time for a new domain to become more profound. If time and other factors are very important, you can implement them first. Of course, you must also adopt the object-oriented method. The abstraction at the beginning may be poor, but this is not a problem. If you use an object-oriented method to design and implement it at the beginning, you will use refactory to improve your analysis and design. At this time, refactoring may be very important, and Extreme programming has outstanding expertise in this aspect. I am now mainly studying martin fowler's refactoring and the phd papers of several disciples of ralph johnson. I think it is feasible to improve the existing code and it must be done, the effect is also obvious. Because object-oriented methods require iterator, and refactoring is the best method for repetition.
However, even for custom-oriented development of new fields, the object-oriented thinking is extremely useful. For example, the separation of interfaces, quality control, and more thorough application of the MVC model. You can separate the model and view. Two batches of different experts, good interfaces, and separate tests.
BTW, many systems seem to need customization, but this is not the case. If many ERP systems can be implemented without targeted development, you can use Business Rule to solve these problems.

Learn from each other and visit my homepage erptao.org

Newtomme:
I have read it, but I still don't know many theories. In fact, my system analysis experience and theories can only be considered an entry point. I have written software for nearly two years, now I want to switch to DBA or system design. In this process, I think it is more demanding than programmers for system analysis and software engineering, I don't know where to start. I only heard of UML and ROSE, but I really don't understand how to use these specifications and tools to apply to various software projects, I want to standardize documents, development processes, testing, and implementation processes at most. However, in the early stage of system architecture, especially the development of ERP, CRM, and other software, in the design work of a data warehouse that has a lot to do with me, whether these methods are very specific and feasible during analysis, and what IMM, quality control, it also has abstract requirements on the early analysis. Therefore, it is better to make a specific analysis of methods, tools, and practices. I think I have no idea at all.

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.