Original: Linda M. Northropsoftware Engineering Institution Translation: [Aka] Waterbird 1 History Review the challenge of increasingly complex software requirements, the software industry has developed an object-oriented software development model. It is currently the best countermeasures for "software crisis", OO technology has attracted people's general concern. Initially, most people are considered just an unrealistic way and satisfy the study of a curiosity, now I have got a popular welcome. Many programming languages have introduced newly-oriented new versions. A large number of object-oriented development methods are proposed. Conference on OO, academic seminars and courses are very popular. Countless professional academic journals open a special layout for this topic. Some software development contracts even specifically indicate the technology and language that must use OO. Object-oriented software development For the 1990s, the development of structured software is fascinated by the 1970s, and the development momentum of OO is still increasingly accelerated. The concepts such as "objects" and "objects" can be traced back to the early 1950s. They first appeared in the early works of artificial intelligence. However, the actual development of OO is started in 1966 (the revolution of the Cultural Revolution in China). At that time, Kisten Nygaard and OLE-JOHAN DAHL developed a Simula language with a more advanced abstract mechanism. SIMULA provides a higher level of abstraction and packages than primary programs; for simulation, an actual problem introduces data abstraction and classes concept. At the same period, Alan Kay was working hard on a personal computer at our university, and he hoped to achieve graphical and simulated simulation on it. Despite the limitations of hardware and software, Kay's trial is not successful, but his ideas did not lose. In the early 1970s, he joined the Palo Alto Research Center (PARC) and putting these ideas into implementation again. In PARC, his research team firmly believes that computer technology is the key to improving communication channels between people, people and machines. With the support of this belief, and the concept of Simula class, they developed a SmallTalk language; 1972 Parc released the first version of SmallTalk. At this time, "object-oriented" is officially determined. SmallTalk is considered to be the first language of the true face-to-object. SmallTalk's goal is to make the software design can be performed in units that automate as much as possible. Everything in SmallTalk is an object ---- An instance of a certain class. In the world's original SmallTalk, the object is tightly connected to the noun. SmallTalk also supports a highly interactive development environment and prototype method. This original sexual work has not been published, just as an academic interest with strong test properties. SmallTalk-80 is a summary of a series of SMALLTALK versions of PARC, posted in 1981. The << Byte >> magazine in August 1981 announced an important result of the SmallTalk development group. On the cover of this magazine, a hot air balloon is rising from an island, marking the launch of PARC's object-oriented thinking. It is time to disclose to the software development industry. At first, the impact is just progressive, but it quickly jumped to the extent of hot. The hot air balloon does set sail, and the effect is far-reaching. Early SMALLTALK's research on development environments led to a series of progress: Window, Icon (ICON), Mouse, and drop-down Window environment. The SmallTalk language also affects the early 80s and the mid-object-oriented language, such as Object-C (1986), C (1986), Self (1987), Eiffl (1987), Flavors (1986). Object-oriented application It is also further widened. Objects are no longer just associated with nouns, as well as events and processes.
1980 Grady Booch first proposes the concept of object design (OOD). Then other people follow thereafter, the technique for object-oriented analysis begins publication. In 1985, the first commercially used object-oriented database came out. Since the 1990s, research-oriented analysis, testing, metrics, and management have been developed. Currently, the frontier topics of object technology include Design Patterns, distributed object systems, and network-based object applications. 2 What is the extent to which object-oriented motion develops? Part is a hope that people have long since the long history: people hope it, like the previous software development technology, can meet software development for productivity, reliability, easy maintenance, and management, etc., more faster, More urgent needs. In addition, there are many reasons that prompted its popularity. Object-oriented development emphasizes the concept of problem domains to direct mapping of software programs and interfaces; psychology research also shows that objective world is seen as many objects closer to human natural thinking. The object is more stable than the function; changes in software demand are often functional changes, while the executor of its function ---- Object ---- usually does not change. In addition, object-oriented development also supports, encouraging information hidden, data abstraction and packaging in software engineering practice. Modifications inside an object are locally isolated. Object-oriented software is easy to modify, expand, and maintain. Object-oriented is also expanded to be applied to each stage of the software lifecycle --- analysis to encoding. Moreover, the object-oriented method naturally supports the rapid prototyping method and RAD (Rapid Application Developments). The use of object-oriented development encourages reuse, not only software reuse, but also the reuse of the model, design. Further, OO technology is also convenient for software interchangeability, ie, an application on a network in the network can utilize resources on another node. Object-oriented development also supports concurrency, hierarchy, and complex phenomena in the current software system. Today, we often need to build some software systems ---- Not just a black box application. These complex systems typically contain hierarchies composed of multiple subsystems. Object-oriented development supports the construction of open systems; with different applications for software integration with greater flexibility. Finally, the use of object-oriented development can reduce the danger of developing complex systems, mainly because the system integrates various stages of the software life cycle. 3 Object-oriented modeling object-oriented modeling is not just a summary of new programming languages. It is a new way of thinking, a new thinking about calculation and information structure. Object-oriented modeling, the system is similar to each other, these objects are structural and behaviors package, which belong to a certain class, and those classes have a hierarchical structure. All functions of the system are obtained by transmitting messages between objects. Object-oriented modeling can be considered a conceptual framework containing the following elements: abstraction, package, modular, hierarchical, classification, parallel, stable, reusable and scalability. The emergence of object-oriented modeling cannot be considered a calculation revolution. More inappropriate, it is a gradual evolution result for a process and strict data-driven software development method. New methods for software development are driven by two aspects: the development of programming languages and the demand drive of increasingly complex issues. Although analyzing and design in the actual analysis and design, it is a change in design and analysis techniques from development history. Similarly, the evolution of language is also an increasingly complex natural response to the enhancement and demand of the computer system. In many factors affecting OO, the most important possibilities may be an advanced programming method. In the past few decades, the support of abstract mechanisms in programming languages has evolved to a higher level.
This abstract evolutionary from the address (machine language) to the name (assembly language), to the expression (first generation of advanced languages, such as fortran), to control (second-generation advanced language, such as COBOL), to process and functions ( The second generation and early third-generation advanced languages, such as Pascal, to modules and data (late third-generation advanced language, such as MODULA), last to object (based on object and object-oriented language). The development of SmallTalk and other object-oriented languages makes new analysis and design technology achieved possible. These new OO technologies are actually a combination of structured and database methods. In the OO method, it is also important to focus on data streams, such as coupling and polymerization. Similarly, the behavior inside the object is ultimately a process-oriented design method. Data Model (ER Figure) of the Database Technique Data Modeling Thought is also reflected in the OO method. The advancement of computer hardware architecture, the improvement of performance price ratio and the introduction of object concepts in hardware design have had a certain impact on OO development. OO procedures typically access memory more frequently and requires higher processing speed. They need and are also using powerful computer hardware features. The level and classification theory of philosophy and cognitive science have also promoted the production and development of OO. Finally, both computer systems grow significantly, complexity, and distribution of OO have played more or less. Because there are many factors affecting OO development, OO technology itself is not mature, so there are many different proposals on ideas and terminology. All OO languages are not born, equality, they are also different in terms of the purpose of the concept. Although there is also a unified trend, it is not fully reached with how to perform an object-oriented analysis, and there is no unified symbol to describe these activities. (Note: UML is working hard in this direction), however, OO development has proven to be success in the following areas: Air Traffic Management, Animation Design, Bank, Business Data Processing, Command and Control System, CAD, CIM, Database, Expert System, image recognition, mathematical analysis, music synthesis, operating system, process control, space station software, robot, remote communication, interface design and VLSI design. There is no doubt that OO technology has become the mainstream of software industry development. 4 Object-Oriented Programming <1> Concept In object-oriented programming, the program is considered as a collection of objects collaborative, each object is an instance of a class, and all classes constitute a hierarchy associated with inheritance relationships. Object-oriented language often has the following features: object generation functions, messaging mechanisms, classes, and genetic mechanisms. These concepts can of course also appear separately in other programming languages, but only in object-oriented languages, they together, in a unique cooperation, collaboration, complement each other. Process programming mode: Parameter input ----- | Code | ------ Result output is implemented for a function, the parameters are passed to a process, and finally return the calculation result. | Object ------ Data Structure Object-Oriented Programming Mode: Interface | Object ------ and | Object ------ Operation OOP, functionality is obtained by communication with objects. Objects can be defined as an entity that encapsulates state and behavior; or a data structure (or attribute) and operation. The status is actually data, information that must be stored in the object for execution behavior. The interface of the object, or the protocol, is a collection of messages that can respond to a set of objects. The message is the way object communication, and is therefore also a way of obtaining a function. After the object is sent to him, or execute an internal operation (sometimes a method or process), or then call the operation of other objects. All objects are an instance of a class.
Category is a collection of objects with the same features, or it can also be said that classes are a template that can be used to generate objects. The object is called by the object response, which is determined by the object that accepts the message. Classs can be arranged in a hierarchy. In this hierarchical structure, the subclass can inherit the state and method from the super class than him. When the object receives a message, the process of finding the corresponding method will start from the class from the object, and in the hierarchy where the class is located, finally until the method is found, or nothing is found (will Will report an error). In some languages, a given class can be inherited from more than one superclass, calling more inheritance. If you use a dynamic cable, inheritance results in a polymorphism. Multi-state descriptions are the following: If several subclasses redefine a function of the superclass (all the same function name), when the message is sent to a sub-class object, the message will be due to The subclass is determined to be interpreted as different operations. The method can also be included in the superclass interface inheritance, and actually does not really define him. Such superclars are also called abstract classes. The abstract class cannot be instantiated, so it can only be used to generate a subclass. <2> Language-oriented language contains 4 basic branches: 1 Based on SmallTalk; 5 versions including SmallTalk, represents SmallTalk-80. 2 Based on C; including Objective-C, C , Java 3 based on LISP; including Flavors, XLISP, LOOPS, CLOS 4 based on Pascal. Including Object Pascal, Turbo Pascal, Eiffel, ADA 95 Simula is actually an old ancestors in all of these languages. In these OO languages, the terms naming and supporting OO have different degrees of differences. Although the SmallTalk-80 does not support multi-inheritance, it is still considered to be the most object-oriented language (the Truest Oo language). In c-based oo language, Object-C is developed by BRAD COX, which has a rich library that has been successfully used for large systems development. C is written by Bjarne Stroustrup from Bell Lab. It extends the Struct in the C language into a Class with data hidden features. The polymorphism is achieved by virtual functions. C 2.0 supports multiple inheritance. In most software areas, especially in the UNIX platform, C is the preferred object-oriented programming language. A new generation of Internet-based object-oriented language-oriented language Java, similar to C and C , is developed by Sun Microsystems. It was popular in 1995 with the rise of the Internet. Applets written with Java can be embedded in HTML, which makes it cross-platform feature. Java and ADA support multi-threaded and concurrent mechanisms, as simple as C, portable. Based on Lisp-based language, mostly used in applications of knowledge expression and reasoning. Where CLOS (Common Lisp Object System) is a standard version of object-oriented LISP. In PASCAL-based languages, Object Pascal is developed by Apple and Niklaus Wirth, which is MacApp. Turbo Pascal is developed by Borland as an Object Pascal. Eiffel was released by Bertrand Meyer of the Interactive Software Engineering Company. Its syntax is similar to ADA, running on the UNIX environment. The ADA is just coming in 1983 and does not support inheritance and polymorphism, so it is not an object-oriented. By 1995, an object-oriented ADA finally came out, this is ADA 95.
In addition to the above-mentioned object-oriented language, some languages are considered to be objects based on object-based. They are: Alphard, Clu, Euclid, Gypsy, Mesa, Modula. 5 Object-Oriented Software Engineering Life Cycle Although object-oriented languages are making exciting progress, we all know that encoding is not the main source of issues in software development. In contrast, demand and analysis is more common, and their error correction cost is more expensive. Therefore, the attention to OO development technology cannot be concentrated on the encoding, which should focus on other aspects of software engineering. The application prospects in the analysis and design, analysis and design of the OO method are also very considerable. If we admit that OO's software development is not limited to coding activities, there must be a new development model, including new software life cycles. The most common life cycle is currently a "waterfall" model (structured). It is the first lifecycle model that appears after the "Software Crisis" in the late 1960s. As follows. Analysis ----- Design ----- Code ----- Test ------ Maintenance As shown in the figure, the development process of the waterfall lifecycle is sequential; the activity flow is basically one-way . It assumes that developers have a clear understanding of the system in the early days of development. Unfortunately, any software development activities inevitably involve a large number of iterative processes, no matter whether you are arranged in advance. Good designers refer to practices that can work at the same level and specific details. In general, the shortcomings of the waterfall life cycle are shown in three aspects: <1> Iterative changes, iteration, change difficulties <2> does not support the use of <3> without a unified model of each stage. Object-oriented methods start from the problem model, then the process of identifying objects, and constantly refining. It is essentially iterative and gradually. Here, the rapid prototype and feedback loop is a necessary standard structure. The development process is an iterative repetition process. With the iteration, the system's function is constantly improving. Here, the significant boundaries between various phases of analysis, design, and coding are made blurred in various phases of analysis, design, and encoding. The reason is because the concept of the object is filled throughout the development process. The relationship between objects and them has become a common expression medium of various phases of analysis, design, and coding. The gravity of development is offset from the coded to the analysis, from the function-center offset. Moreover, object-oriented iterations and seamlessness make reuse more natural. Recently, in order to improve the manageability of object-oriented development, Poland (Boehm, 1988) proposes a spiral development model combined with macro and microview. Macro includes 3 phases: 1 analysis --- Discovery and identification objects; 2 Design --- Inventions and design objects; 3 Implementation --- Create and implement objects. Each macro stage contains some microscopic iterative activities. 6 OOA and OOD are still new due to object-oriented technologies, and there are currently many object-oriented analysis and design methods. Object-oriented analysis (OOA) is based on previous information modeling technology, which can be defined as an analysis method for examining requirements in terms of the concept of classes and objects found in issues domain vocabulary. The results of OOA are a series of "black box" objects exported from the problem domain. OOA usually uses "Scenarios" to help determine basic object behavior. A plot is a continuous activity sequence that happens in the problem domain. When OOA is performed on a given problem domain, the concept of frameworks is very useful. The frame is a skeleton of an application or app subsystem, contains some specific or abstract classes. Alternatively, the frame is a specific hierarchy containing an abstract parent class describing a problem domain. One disadvantage of all OOA methods in the current popularity is that they have lack a fixed mode (FORALITY). In the object-oriented design (OOD) phase, the focus of attention is transferred from the problem space to the space. OOD is a description of the logic and physical process of the design system, as well as the design method of static and dynamic models of the system (Booch, 1994).
In OOA and OOD, there is a focus on reuse. At present, the researchers of OO technology are trying to define the concept of "Design Patterns". It is a reusable "wealth" that can be applied to different issues. Typically, the design pattern refers to a multi-segment design structure or solution. If you are classifying them, you can be reused, which can constitute the basis of communication between different designs. OOD technology actually appears as OOA technology. It is difficult to draw a clear boundaries in OOA and OOD. Therefore, the following description gives some (United) profiles of some common OOA / OD technology. Meyer uses the language as a tool for expression design. (1988) Booch's OOD technology expanded his previous work in ADA. He uses a method of "Round-Trip Gestalt", including the following procedure: identifying the object, identifying the semantic relationship between objects, identifying the relationship between objects, implementation, and includes a series of iterations. Booch is the one who first uses class diagrams, class classification, class templates, and object maps (1991). The OOD technology of WRIFS-BROCK's is driven by the responsibility agent. Class Responsibilities Cards is used to record classes responsible for specific functions. After determining classes and their duties, more detailed relationship analysis and sub-system implementation are performed. (1990) Rumbaugh uses three models to describe a system: 1 object model, describe the static structure of the object in the system; 2 dynamic model, describe the condition of system state over time; 3 function model, describe the transformation of each data value in the system . Object diagrams, state conversion graphs and data flow diagrams are used to describe these three models, respectively. (1991) COAD and YOURDON use the following OOA step to determine a multi-layer OO model (5 levels): Find out classes and objects, identify structure, and relationships, determine topics, define properties, definition services. 5 steps respectively correspond to the five levels of the model, namely, class and object layers, subject layers, structural layers, attribute layers, and service layers. Their OOD method is both a multi-level and multicomponent. The hierarchics is the same as OOA. Many aspects include: problem domain, people and human interactions, task management and data management. Ivar Jacobson proposed Objectory Method (or Jacbson), an object-oriented software engineering method developed in the Objective system in the Swedish Objective system. Jacbson's method emphasizes the use of "USE Case". Use case becomes the basis of the analysis model, and the design is formed after further describing the interactive diagram. Use copy also drives testing work in the test phase. So far, Jacbson method is the most complete industrial approach. (1992) The method described above has many variants, which cannot be listed one by one. In recent years, with the evolution of various methods, they are also integrated with each other. In 1995, Booch, Rumbaugh and Jacbson jointly worked together to propose the first version of UML (Unified Modelling Language), integrated modeling language. (Factual Standards Currently Being OO Modeling Language) 7 Management Problem When the organization is turned to object-oriented development technology, the management activities that support software development must also change. Commitment to use OO technology means changing development processes, resources, and organizational structures. (Goldberg 1995) OO development iteration, prototype, and seamlessness eliminates the boundaries between different stages of traditional development model. The new boundary must be re-determined. At the same time, some software measurements are not applicable. "The number of lines" LOC (LINES OF CODE) is absolutely outdated.