If today's software developers use models at all, they use them mostly as simple sketches of design ideas, often discarding them once they've written the code. This is sufficient for traditional code-centric d...
详细信息
If today's software developers use models at all, they use them mostly as simple sketches of design ideas, often discarding them once they've written the code. This is sufficient for traditional code-centric development. With a model-driven approach, however, the models themselves become the primary artifacts in the development of software. In this case, a clear, common understanding of the semantics of our modeling languages is at least as. important as a clear, common understanding of the semantics of our programming languages. There has been, and continues to be, a great deal of discussion within the software community on modeling and metamodeling and the relationships between modeling languages and metamodeling languages. Such relationships' circular nature makes them particularly hard to discuss clearly, often hiding many important but subtle issues at the foundation of what we do when we model. To address these issues as clearly as possible, I examine a set of questions whose answers, taken together, will help us understand the fundamental question, "What do models mean?" The result is a set of careful definitions for key terms that will let us cut through some of this topic's more confusing aspects. To understand the intent behind these definitions, we must also look at how other disciplines use models. After all, we should realize that, with a true model-driven approach to software development, we are using models in much the same way that other scientific and engineering disciplines use them. So, I've illustrated the definitions with simple (nontechnical) discussions of modeling in Newtonian physics and its application to engineering. The article's primary goal is, however, to discuss the modeling of software. Since the object Management Group first specified the Unified Modeling Language in 1997, UML has become the common modeling language of the software development community. (UML's current version is 1.5;(1) the draft specifications for Version 2.0 are
We propose to use modal logic as a logic for coalgebras and discuss it in view of the work done on coalgebras as a semantics of object-oriented programming. Two approaches are taken: First, standard concepts of modal ...
详细信息
We propose to use modal logic as a logic for coalgebras and discuss it in view of the work done on coalgebras as a semantics of object-oriented programming. Two approaches are taken: First, standard concepts of modal logic are applied to coalgebras. For a certain kind of functor it is shown that the logic exactly captures the notion of bisimulation and a complete calculus is given. Examples of verifications of object properties are given. Second, we discuss the relationship of this approach with the coalgebraic logic of Moss (Coalgebraic logic, Ann. pure Appl. Logic 96 (1999) 277-317.). (C) 2001 Elsevier Science B.V. All rights reserved.
Given that corrective-maintenance costs already dominate the software life cycle and look set to increase significantly, reliability in the form of reducing such costs should be the most important software improvement...
详细信息
Given that corrective-maintenance costs already dominate the software life cycle and look set to increase significantly, reliability in the form of reducing such costs should be the most important software improvement goal. Yet the results are not promising when we review recent corrective-maintenance data for big systems in general and for OO in particular-possibly because of mismatches between the OO paradigm and how we think.
Emerald is a general-purpose language with aspects of traditional object-oriented languages, such as Smalltalk, and abstract data type languages, such as Modula-2 and Ada. It is strongly typed with a nontraditional ob...
详细信息
Emerald is a general-purpose language with aspects of traditional object-oriented languages, such as Smalltalk, and abstract data type languages, such as Modula-2 and Ada. It is strongly typed with a nontraditional object model and type system that emphasize abstract types, allow separation of typing and implementation, and provide the flexibility of polymorphism and subtyping with compile-time checking. This paper describes the Emerald language and its programming methodology. We give examples that demonstrate Emerald's features, and compare and contrast the Emerald approach to programming with the approaches used in other similar languages.
The burden of organizational learning surrounding software process innovations (SPIs)-and complex organizational technologies in general-creates a ''knowledge barrier'' that inhibits diffusion. Attewel...
详细信息
The burden of organizational learning surrounding software process innovations (SPIs)-and complex organizational technologies in general-creates a ''knowledge barrier'' that inhibits diffusion. Attewell (1992) has suggested that many organizations will defer adoption until knowledge barriers have been sufficiently lowered;however, this leaves open the question of which organizations should be more likely to innovate, even in face of high knowledge barriers. It is proposed here that organizations will innovate in the presence of knowledge barriers when the burden of organizational learning is effectively lower, either because much of the required know-how already exists within the organization, or because such knowledge can be acquired more easily or more economically. Specifically, it is hypothesized that organizations will have a greater propensity to initiate and sustain the assimilation of SPIs when they have a greater scale of activities over which learning costs can be spread (learning-related scale), more extensive existing knowledge related to the focal innovation (related knowledge), and a greater diversity of technical knowledge and activities (diversity). An empirical study using data on the assimilation of object-oriented programming languages (OOPLs) by 608 information technology organizations strongly confirmed the importance of the three hypothesized factors in explaining the assimilation of OOPLs.
An interesting and little documented problem is the influence of a design methodology on the program architecture. In this case study, we compared two design methodologies and their impact on both development process ...
详细信息
An interesting and little documented problem is the influence of a design methodology on the program architecture. In this case study, we compared two design methodologies and their impact on both development process and the resulting program architecture. The methodologies are object-based variants of refinement methodology and structured design, respectively. Both methodologies were applied to the same problem (a library system of less than 1000 lines of Ada code), and the results were compared. Substantial differences between the two resulting architectures are analysed and discussed.
Method schemas were proposed as a formal model of object-oriented languages. A method schema S is called consistent if, for each method invocation during the execution of S, a method definition to be bound to the invo...
详细信息
Method schemas were proposed as a formal model of object-oriented languages. A method schema S is called consistent if, for each method invocation during the execution of S, a method definition to be bound to the invoked method name is uniquely determined. However, the consistency testing problem is known to be undecidable in general. This paper presents an algorithm which analyzes the consistency of a given method schema. The algorithm decides the consistency problem in polynomial time for monadic method schemas. We also provide an incremental algorithm for testing consistency after updates of a method schema.
An architecture for an expert-system shell that mixes declarative nd procedural knowledge, overcoming a major problem of conventional shells, is presented. The prototype shell uses structured knowledge representations...
详细信息
An architecture for an expert-system shell that mixes declarative nd procedural knowledge, overcoming a major problem of conventional shells, is presented. The prototype shell uses structured knowledge representations and its built-in database interface not only allows automatic extraction of data from a database management system but also provides a fuzzy database query facility. The shell's object-oriented approach to knowledge representation supports data and knowledge acquisition and management. Another feature is encapsulation which prevents object manipulation except by defined operations. A comparison of representation methods and two case studies showing System X-I's power and flexibility are included
A product database for a design and manufacturing enterprise serves as a repository for the data needed to manufacture a product. This paper discusses how an object-oriented persistent object manager named ROSE, under...
详细信息
A product database for a design and manufacturing enterprise serves as a repository for the data needed to manufacture a product. This paper discusses how an object-oriented persistent object manager named ROSE, under development at Rensselaer. has been used in the Rensselaer CIM program to develop a STEP/PDES-compliant product database for its research test bed. In so doing, it provides an overview of the requirements for a product database system in an integrated design and manufacturing facility, and it discusses how the chosen system meets these requirements.
object-oriented languages have recently become common, making register indirect jumps more important than ever. In object-oriented languages, virtual functions are heavily used because they improve programming product...
详细信息
object-oriented languages have recently become common, making register indirect jumps more important than ever. In object-oriented languages, virtual functions are heavily used because they improve programming productivity greatly. Virtual function calls usually consist of register indirect jumps, and consequently, programs written in object-oriented languages contain many register indirect jumps. The prediction of the targets of register indirect jumps is more difficult than the prediction of the direction of conditional branches. Many predictors have been proposed for register indirect jumps, but they cannot predict the jump targets with high accuracy or require very complex hardware. We propose a method that resolves jump targets by forwarding execution results. Our proposal dynamically finds the producers of register indirect jumps in virtual function calls. After the execution of the producers, the execution results are forwarded to the processor's front-end. The jump targets can be resolved by the forwarded execution results without requiring prediction. Our proposal improves the performance of programs that include unpredictable register indirect jumps, because it does not rely on prediction but instead uses actual execution results. Our evaluation shows that the IPC improvement using our proposal is as high as 5.4% on average and 9.8% at maximum.
暂无评论