Two studies of American scholars (Stave Halladay and Michael Wiebel) for object-oriented software projects have said: "Generally, object-oriented
Cheng (OOP) thinking is just a group of blackcombes, and the labeling skills are used to randomly abstract the 'object of the brain.
Even the best OOP programmer, the limit they can deal with is also the medium-scale development project. If the programmer is insufficient, the system
The scale is also very large, then OOP can only introduce you in a marginal mud. "
On the one hand, almost no software engineers think that OOP is perfect, on the other hand, the OOP is like a broken bamboo, almost every most
The newly launched program development tool or language has adopted OOP ideas; on the one hand, more and more "the crowds of the blacks" is in a hurry, and they want to
Treating "objects", on the other hand, after nearly 30 years, has already had the large number of structured software methods of most users ...
In the face of this reality, experts in studying software engineering methods have pointed out: "An important issue in front of the current presence of software development methods is:
It is theoretically understanding the natural rationality of OOP with strong vitality, and improves object-oriented software engineering methodology system. "
In the past year, we have conducted a more in-depth study and exploration of software engineering methods for face-oriented software through domestic and foreign practical systems.
In particular, in the first phase of the Beijing Highway Bureau computer system, learn from foreign software design experience, more object-oriented
Software engineering methods have benefited a lot.
First, it is "design lead" or "program leading" in a system development process only use OOP or an OOSE (object-oriented software engineering) method, the key to see the entire development process is
"Design lead" or "program leading".
In recent years, a large number of advanced procedures development tools have entered my country, which has a great role in improving software development efficiency. However, they go
Take the procedure-based software developer in the "program generation system" and "alien design", the deeper.
General software developers (including programmers who see programs that do not see the system) are subjectively considered: software development should not be "system design lead
"And the" program algorithm is dominated ". But in the following questions, the results are often the opposite.
Question 1 Is it possible to develop methodology before performing software design and selection software development tools?
The so-called methodology refers to a series of methods, techniques, and specifications of the organizational software production process. Methodology is the failure and successful experience of software developers
The theoretical summary, from the idea of software reuse, methodology reused value is much longer than certain program components.
Taking Beijing Municipal Highway Bureau as an Example. First, we learned in the system survey phase: this system should be developed (increted). Due to
The user demand and system structure in system survival during the systematic reform period are much more. This indicates that the target system should have strong maintenanceability.
That is, each phase of development should have a high reusability in subsequent engineering. Second, the workload of the first phase is quite large (the last results include 124
Modules, 72 types report, 119 database tables, 439 windows, 912 data windows, and developers don't know how to experience the road bureau business, more experience
Insufficient college students, the ability to understand demand is low. This indicates that the development methodology must minimize repeat labor and achieve development.
The results of the results are shared and reuse; the adjustment process of eliminating the need to understand the error is supported, so that the design changes in the downstream finished product stage are easier to perform
.
Before developing this system, we undertake a downstream development task of foreign software. Since it uses an object-oriented software design, let me
We have a deep understanding of domestic and foreign software development methods and technical gaps, which are quite inspired.
Referring to our consolidation of foreign software development efforts, that is, only 120 modules (including reports), 41 months, then
The highway system has started nearly 200 modules and reports from the upstream design. The development efforts of more than 100 database tables should be at least 120 people. Due to the use of object-oriented software engineering methods, despite most of the experience in which developers are insufficient, the first phase of the project is still controlled at 80 people.
Within the moon, there is no cost 1/3. At the same time, in the system maintainability, reuse and other functions and performance indicators, it has exceeded us in the past.
System for the development of the structure.
For software developers who stayed in program leading levels, they choose OOP's reasons to be passive. In fact, in the leader
The developer's dictionary is not found by "Methodology", or mixing "methodology" and "program algorithm" to talk. As for the view of OOP
It is OOSE to be more insufficient.
Question 2 Abstract starting point is the real world problem, or can be executed instance object?
In the real world's early abstract phase, the object-oriented method is not much different from other methods, and it is necessary to depart from the real world.
The user interface, the knowledge and experience of the problem are, build the real world problem model, which is to determine what the target system is "what to do". surface
To the object's problem analysis model, the object model (static structure of the object), dynamic model (the order of the object interaction)
And functional models (data transformation and function dependencies). Abstract principles of software engineering, hierarchical principles and segmentation principles equally applicable to object-oriented methods
That is, the object abstraction is the same, and it is also from advanced to low, from logic to physical, step by step. Each level is repeated
Image Modeling (Object Recognition) → Dynamic Modeling (Event Recognition) → Function Modeling (Operation Identification) until each object instance is physically
All implementations on the code).
The object abstraction is from logic or physical stage, just like the development before the development, it is also a test of OOSE and OOP.
stone. Because many tools or languages (such as PB, C , Motif) support OOP, some program-level system developers can be very convenient
Logic abstraction directly develops physical objects, in the early stage, unusually developed system development from the physical layer, instance object, is not known
It is this kind of OOP that OOP that is not only unable to play the superiority of the object method, but also bring a lot of return operations to the post-development.
As in the past, we also introduce prototyping methods in the system design phase to use system samples, prototypes and users.
If you are looking for an embarrassment of demand, avoid or reduce post-renewers. Most OOP tools provide convenience for the development of prototypes, the problem is the prototype and final
The relationship between the product, that is, the prototype is a logical object or a physical object. If the latter is equal to the final product. Let the wood have become a boat again
User review, if the problem is found, or to move back, it is either to force the user to cut your appeal. In fact, we are based on the design review and based on logical objects.
The prototype of the hair, quite partially vetoed by the user. However, due to the physical development of physical level due to the object, it is used to use the super-class object prototype unified simulation.
Events and operations, so whether it is an object model, dynamic model or function model, it is not difficult to modify.
Question 3 Whether the design phase is designed to design a superclass, do you complete the implementation of the superclass object before the instance object design begins?
Software-oriented software has strong reusability, which includes reuse and external reuse of the development project. Reuse
Reflected in superclass, there is no super-class object system is better than "as a meter tank", it is not possible to use it. Super-class design is good, first
It is highly reused in the internal reuse rate, and the external reuse rate is also high.
Due to the tightening of the system development, the workload is large, and our development team is young, experience and hypereneur, and the internal reuse rate is super-class development.
Undoubtedly our savior. It can reduce labor, easy to unify specifications, unified research on complex issues, uniformly solve, and make it easy to maintain. We are considered from the following aspects:
(1) Find the common behavior of most instance objects.
For example, "Print Report", "Query Static Code Table", "Enter Database Table Data", etc.
(2) Supected polymorphism design To ensure that the use of superclass inheritance relationships can meet the operation requirements of each subclass.
For example, inheriting the same "data entry" ancestor window, you can complete data entry of different structural database tables.
(3) Conservatives are convincing, and the integrity of the data will not be damaged, which is beneficial to simplify complex issues.
For example, maintenance of database table sets with complex relationships, structures, and related access operations. If you do not use a generalization class
Structure and related operation package, the next programmer must operate the library table must have an in-depth understanding of the library table design, and ensure the program algorithm
It is not designed to destroy the relevant consistency of data, which will greatly increase the difficulty of programming and testing, requiring programmers to have rich experience. Use
After this intensive class (public function, public storage procedure), the programmer is just issued to "message" and "output information".
(4) It is conducive to the implementation of development specifications, unified interface styles.
We have developed the maximum wear of foreign software: foreign countries' strict requirements for user interfaces (reports, screens). Instant
There is a high, wider, and the starting position of the screen button is used to specify the X and Y coordinations of 3 digits after the decimal point. The product that comes out makes people look
There is a feeling of pleasure. But if everyone is doing interface windows, the fine adjustment of the button is bound to grow. Screen interface mode
The superclass inheritance relationship, combined specialization, and problems can be solved.
Obviously, the superclass design and implementation must be completed before the programmer is generally developed. In other words, OOSE's upstream system design
Personnel must civil military (design and programming) Bisple, can take the program to implement and test tasks with super-class objects, this and the upper system of the structured method
Designers can basically be different. At the same time, the superclassic object must often absorb feedback during the process of absorption during the downstream development process.
Self-user feedback), perform corresponding adjustment modifications. Therefore, OOSE is a designer design and implementation of the super-class object, it is difficult to enter the structure.
After the programming stage, you can easily take a little, and they often do not ink to the program.
If the design phase does not pre-design and develops a superclatrifornia, there is no ancestral object that can be inherited between most developers of the same project.
And even inheritance relationships even in each developer's own role, then this is not only OOSE, but it is barely claimed to be OOP.
Question 4 How do I handle object-oriented object-oriented database mode mappings?
Object-oriented database design methods can be used in various databases, such as hierarchical, network type, relational, and other-oriented types.
Database design in OOSE will undoubtedly use object-oriented database design methods.
The database design is also known as the database mode, which is basically constructed from 3 hierarchical modes: viewing the external mode of DB design from a specific DB application perspective;
DB design is concept mode from the DB design of the organization or enterprise perspective; processing corresponds to the DB design of the specific DBMS feature and the limitations. Hold
In fact, internal mode is the SQL definition of the database. The logical mode is the logical definition of the table collection, and the external mode is partial DB from a particular application angle.
. The interface between external mode and logical mode is a view, stored procedure, or other DB handler that is resident in server-side.
If in the abstract object model, each app is a child object of one or more superclatrios, then select the appropriate fine level.
The object model maps it to the conceptual model, which is the key to the design of the database library table object. The less interface between external model and concept mode, the more simple
The better, this program is simple, and the database and programs are easy to maintain. That is, localization is an important design principle. OOP is mostly backed by the database, which is based on the existing database. Therefore, regardless of whether the problem of the problem of the problem world is carried out, and whether it will
The object model is reasonably mapped to the database logic mode (object-oriented database design), and OOP can work.
Question 5 Do you first investigate if there is a reusable (inherited) object, whether to participate in the next object to the upper object, superclatrifier feedback?
The program that bury his own shackles may be a must, but the developer designed in the object-oriented method should be
First, there is no other developers who have completed in the investigation of object data dictionaries, and they can be reused. In general, the subject's total
Enjoy, reuse should be managed by the upper design person to ensure the consistency of object style and avoid conflicts. However, the independence of the object, package
Sexual and polymorphisms are very easy to reuse, which is one of the most important ideas of the structured system, and is one of the most important ideas of software development methodology. upper layer
Designers are often impossible, understand the developers of software design theory, even if only the underlying procedures should also use the most powerful and effective
The rate of programming methods, a large number of reuse objects.
When inheriting a super-class object and reusing others, if you find an unreasonable place, you should reflect the bearers developed to the object.
For the upper designer, on the one hand, the program should encourage the program to reuse the existing objects, on the other hand, the number of objects should be shared through the developer
Based on the dictionary, individual object reuse can be immediately reflected in the overall object model to ensure consistency when designing changes.
Second, the object-oriented method and structured method comparative analysis is the problem abstraction (what to do), design is a problem solving (how to do), the implementation is the solution of the problem (result). Any party law to the objective world
This is true for the abstraction and solving process. In the abstract phase, the structured method is the process of finding the problem, according to the process of data transformation.
Decompose the problem. Therefore, the object model emphasized with the object-oriented method, the functional model of the data transformation is the focus of the structured method.
. If the problem world is more complicated or more important, then the structured method should still be the preferred methodology. If the data structure is complex
And there are not many transformations, such as the process-led analysis and design, once there is a system change, it will bring a big chaos to the downstream development.
Due to different understandings of the process, the functional modules divided by the process-oriented functional segmentation may vary from person to person. Object-oriented object fine
Division, from the object of the same problem, different people have higher ratios to the same conclusions.
In design, structured methodology generates a system structure that is clear and structured. Each module is likely to maintain strong independence, but it
It is often independent of the database structure, and there is no mapping between the functional module and database logic mode, and the program is difficult to encapsulate with the data structure. Such as
If the data structure is complex, the module independence is difficult to guarantee. Object-oriented method Abstract system structure is often not a system structure generated by the structured method
Simple, but it can be mapped to the database structure, it is easy to implement the package and data structure.
There is a "formal principle" in the basic principles of software engineering, that is, the abstract conclusions of the problem world should be in form (graphical language,
Pseudo code language, etc.). Structured method can be used in data flow diagrams, system structure diagrams, data dictionaries, state transition diagrams, entity relationship diagrams
Description of the logic model of the line system; the object-oriented method can use object model diagrams, data dictionaries, dynamic model diagrams, function model diagrams. In which
Bonding, dynamic model diagram similar state migration diagram, function model diagram, similar state migration diagram, function model diagram, similar state migration diagram, functional model diagram.
The highway system has more than 100 database tables, but the data processing (transformation) is very simple, if the structured methodology is selected, how
What?
There is no difference in the initial phase of the problem abstraction. Since the data transformation is small, the operation of the object and the object can be regarded as one, that is, the object model described in the initial problem is basically consistent. Take the plan management office system as an example, the object is a planned administrator, planning administrator
, The budget administrator, statistical administrator, function (operation) is a plan, planning, a budget, and statistics.
The problem exists in the lower abstraction.
First, many public super-class object design is contrary to structured methods because it destroys the continuity of the process and the logical level of the system structure.
Put some lower modules and there is no semantic object in the process analysis, placed on the upper layer of the system structure. Therefore, if the structure is used, it must be inherited.
Relationship is changed to the next module call relationship. But in fact, some status of the ancestors (attribute value) is directly indicated from the main control module to determine
From the control perspective, it is indeed in the upper layer of the system. If the structured method is used, the result will be either to turn the system structure into a network.
Losing structured features, or gives up this unified design of repetitive labor.
Second, the mapping design of the application of the object model to the database concept mode is also a sign using the object-oriented method. If used
Configuration method, database mode may map objective world data structures. Due to road, support units, management units, road conditions, bridges, tunnels and
There is a complex multiple relationship between the entities such as greening on the road, and the results may define a relationship library structure like a spider network.
Therefore, it is great to increase the burden on the application programming and database maintenance of the database front end.
In summary, if the system uses structured methods, system structures, and database structures may become a mesh structure, and they are not related to each other. At present
Object-oriented methods, system structures and database structures are multiple inheritance structures, and there is a mapping relationship with each other. Obviously the former has a high complexity than the latter.
The poor maintenance, the internal reuse is difficult, and the reuse rate is low.
In fact, whether it is using what methodological development software, it should be software that meets the current needs of users. Users will not be in the short term
It is found that developers use advanced methods to learn to bring them, and the developers are the first to benefit due to great reduction of development burden. But with
The time of time, the maximum benefit is also the user, because the software's long-term quality (including the low maintenance cost and the length of the survival) bring to the user.
The benefits are the foundation.
Third, the methodology is that the idea is not the law for the law, we understand this:
(1) The purpose of the methodology is to make the success of the future generations, avoid the failure of the former people, focusing on the creativity of the unproved field
Labor. Therefore, the creativity of methodology and developers is never conflict. It can neither it depends on the authority as the law, it is not a border.
The general conclusions are given by proven and reasoning like the law. If you must make a metaphor, it is better than the world of people.
(2) Methodology of unrestrained four seas, any party law has its limitations, so software developers can do not have to stick to some kind
Type methodology.
For example, an object model diagram of an object-oriented method, this formal language is far less than a structural method, and a data flow map is simple, if
If all of the road bureaux system is expressed in the object model, at least dozens of pages. Since the uppermost functional model is consistent with the object model,
System structure diagrams we use to use structured methods.
(3) The fact that the OOSE method driven by OOP is indeed a realistic world than the structured method, and some OOP work
It is really quite mature. Instead, structured procedures and development tools under open platforms, although can't stop, but they in recent years
The progress is limited.
(4) According to our experience, there are some suggestions for practical OOSE:
1 Preferably, after selecting methodology, all developers have a training on object-oriented approach. 2 Due to the early development of super-class objects, OOSE's upstream design workload is heavy than the upstream work of structured methods, time and manpower should be more sufficient. Otherwise, then add or modify the more super-class objects after the downstream development, which is easy to cause confusion and invalid labor. 3 Due to the system, the more object classes, in order to facilitate internal reuse and sharing, an electronic object data dictionary should be established to be pair
Like unified collation management. 4 There should be strict naming rules, if possible, the naming rules should be integrated into the data dictionary. 5 After the next development is spread, if you find that some instance objects should be gently set into new superclad objects, you must have new superclasses as soon as possible.
Design, the faster the change is, the better. 6 sub-object inherit the super-class object, discovering the defects of superclad design are common. There should be a very smooth feedback channel within the development team.
Enable the superclass to get a timely correction. Sub-objects must not be easily enacted to enclose the superclass object to make the system lose unified control. Follow the defined system design
Inheritance relationships, instance object development should become the concept of all developers. 7 The benefits of object-oriented design are later more significant, especially in terms of system maintenance and expansion.