this paper presents a method of teaching OO design based on modeling the software design process. Design is essentially about making choices as an initial idea is extended to construct an executable system. the paper ...
详细信息
A simple alternative to Mockobjects is presented. Given the interface of an object required by a class-under-test, a Pseudo-Class is created implementing all methods such that they immediately fail. A test-specific su...
详细信息
ISBN:
(纸本)1581138334
A simple alternative to Mockobjects is presented. Given the interface of an object required by a class-under-test, a Pseudo-Class is created implementing all methods such that they immediately fail. A test-specific sub-class of the Pseudo-Class is created locally in the test (ex. as an anonymous inner-class in Java), over-riding only the methods required by the interaction between the object and the class-under-test for the test-scenario. Typically, the method implementations are extremely simple (a few lines, at most), and the number of methods overridden is small. this mechanism was found adequate for more than 90% of our unit-tests (in a 1000-class system with over 2000 test methods, we finally ended up with about four real Mockobject classes and more than 40 Pseudo-Classes).
In 1994 Wells Fargo Bank was the first large financial services company to invest heavily in distributed object-orientedapplications for high-volume, mission-critical applications using version 1 of OMG's Common ...
详细信息
ISBN:
(纸本)1581138334
In 1994 Wells Fargo Bank was the first large financial services company to invest heavily in distributed object-orientedapplications for high-volume, mission-critical applications using version 1 of OMG's Common object Request Broker Architecture. Wells Fargo continued to improve upon its distributed applications technology leadership by launching a Model Driven Architecture [MDA] initiative in 1999. the technology provided a consistent middle-tier for retail applications such as the award-winning Wells Internet Bank and various phone-bank applications. Between 2001 and 2003 the original CORBA-based solution was completely replaced with new Web-Services-based distributed applications. this report contrasts the past and the present approach to such applications and discusses the lessons learned while transitioning from CORBA-based "Service oriented Architecture" to one based on Web-Services. the final section of this report utilizes lessons learned from using CORBA & Web-Services for Intranet applications and proposes the "application transparent distribution" as a potential paradigm shift which may lead to radically faster and more efficient distributed application development.
A novel method for identifying dense communities of classes (clusters) within an object-oriented system has been developed. Such communities might possibly imply relevance of functionality and thus be used as Reusable...
详细信息
ISBN:
(纸本)1581138334
A novel method for identifying dense communities of classes (clusters) within an object-oriented system has been developed. Such communities might possibly imply relevance of functionality and thus be used as Reusable Components. the term "Reusable Components" is used to refer to a set of interrelated classes that represent a module that can be used in different software systems. To accomplish this identification we employ Algebraic Graph theory (Spectral Graph Partitioning Techniques). From a modified class diagram of the software system we create a graph in which classes stand for the nodes and the discrete messages exchanged between the classes stand for the edges. Our approach is based on an iterative method for partitioning the graph in order to identify possible reusable components within the system. the eigenvectors of the Laplacian matrix derived from the graph are used for the partitioning.
Both model and program refactorings are usually proposed in an ad hoc way because it is difficult to prove that they are sound with respect to a formal semantics. Even developers using refactoring tools have to rely o...
详细信息
Every problem has a context, which can include l community and culture implementation constraints language and system and probably other things too. A good design will take its context into account. If the culture dem...
详细信息
ISBN:
(纸本)0897917219
Every problem has a context, which can include l community and culture implementation constraints language and system and probably other things too. A good design will take its context into account. If the culture demands it, that may mean, for example, using object-oriented techniques where they don't really apply or not using them in a case that seems to cry out for them. It may mean choosing a programming language without regard for its usual advantages or disadvantages. It may mean using a set of tools that some people may find cumbersome or outdated, It may call for all kinds of things that may seem nonsensical when viewed in isolation. But software systems do not exist in isolation. they would not be systems if they did. Any useful system must take its context into account. Unless we can answer the question "Good for what?" we cannot say whether or not a design is good.
Programs that manipulate physical quantities typically represent these quantities as raw numbers corresponding to the quantities' measurements in particular units (e.g., a length represented as a number of meters)...
详细信息
ISBN:
(纸本)1581138318
Programs that manipulate physical quantities typically represent these quantities as raw numbers corresponding to the quantities' measurements in particular units (e.g., a length represented as a number of meters). this approach eliminates the possibility of catching errors resulting from adding or comparing quantities expressed in different units (as in the Mars Climate Orbiter error ), and does not support the safe comparison and addition of quantities of the same dimension. We show how to formulate dimensions and units as classes in a nominally typed object-oriented language through the use of statically typed metaclasses. Our formulation allows both parametric and inheritance polymorphism with respect to both dimension and unit types. It also allows for integration of encapsulated measurement systems, dynamic conversion factors, declarations of scales (including nonlinear scales) with defined zeros, and nonconstant exponents on dimension types. We also show how to encapsulate most of the "magic machinery" that handles the algebraic nature of dimensions and units in a single meta-class that allows us to treat select static types as generators of a free abelian group.
the confluence of component based development, model driven development and software product lines forms an approach to application development based on the concept of software factories. this approach promises greate...
详细信息
ISBN:
(纸本)1581137516
the confluence of component based development, model driven development and software product lines forms an approach to application development based on the concept of software factories. this approach promises greater gains in productivity and predictability than those produced by incremental improvements to the current paradigm of object orientation, which have not kept pace with innovation in platform technology. Software factories promise to make application assembly more cost effective through systematic reuse, enabling the formation of supply chains and opening the door to mass customization.
Static analysis of object-orientedapplications has become widespread over the last decade, mainly in the context of compile-time optimizations. the paper describes how static analysis of virtual method calls can be e...
详细信息
ISBN:
(纸本)1581137516
Static analysis of object-orientedapplications has become widespread over the last decade, mainly in the context of compile-time optimizations. the paper describes how static analysis of virtual method calls can be employed to provide a high-level view of Java applications. the result is a method call graph that can be built from either source or bytecode, and a graphical browser that enables the user to analyze control flow and the coupling between classes and packages in an intuitive fashion, thereby supporting application design as well as refactoring and debugging. In order to achieve the necessary bijection between source and bytecode representations of classes, we implement a new approach based on source code pre-processing.
Organic programming (OP) is our proposed and already emerging programming model which overcomes some of the limitations of current practice in software development in general and of object-orientedprogramming (OOP) i...
详细信息
暂无评论