Inheritance provides object-oriented programming with much of its great reusability power. When inheritance is single, its specifications are simple and everybody roughly agrees on them. In contrast, multiple inherita...
详细信息
Inheritance provides object-oriented programming with much of its great reusability power. When inheritance is single, its specifications are simple and everybody roughly agrees on them. In contrast, multiple inheritance yields ambiguities that have prompted long-standing debates, and no two languages agree on its specifications. In this paper, we present a semantics of multiple inheritance based on metamodeling. A metamodel is proposed which distinguishes the "identity" of properties from their "values" or "implementations". It yields a clear separation between syntactic and semantic conflicts. The former can be solved in any language at the expense of a common syntactic construct, namely full name qualification. However, semantic conflicts require a programmer's decision, and the programming language must help the programmer to some extent. This paper surveys the approach based on linearizations, which has been studied in depth, and proposes some extensions. As it turns out that only static typing takes full advantage of the metamodel, the interaction between multiple inheritance and static typing is also considered, especially in the context of virtual types. The solutions proposed by the various languages with multiple inheritance are compared with the metamodel results. Throughout the paper, difficulties encountered under the open-world assumption are stressed. (C) 2010 Elsevier B.V. All rights reserved.
This manuscript focuses the attention on the possibility that some basic programs for solving numerical problems have to be revised. The fundamental case of linear system solution and related concepts is proposed as e...
详细信息
This manuscript focuses the attention on the possibility that some basic programs for solving numerical problems have to be revised. The fundamental case of linear system solution and related concepts is proposed as example of the different ways to approach a problem using object-oriented programming and procedural approaches. The different points of view shows that the traditional approach adopted to deem the conditioning of a system as well as all existing programs to solve linear systems need to be revised. A brief discussion deals with the possibility of parallelizing programs for personal computers and with interaction of parallel computing and object-oriented programming. (c) 2010 Published by Elsevier Ltd.
Finding an appropriate turbulence model for a given flow case usually calls for extensive experimentation with both models and numerical solution methods. This work presents the design and implementation of a flexible...
详细信息
Finding an appropriate turbulence model for a given flow case usually calls for extensive experimentation with both models and numerical solution methods. This work presents the design and implementation of a flexible, programmable software framework for assisting with numerical experiments in computational turbulence. The framework targets Reynolds-averaged Navier-Stokes models, discretized by finite element methods. The novel implementation makes use of Python and the FEniCS package, the combination of which leads to compact and reusable code, where model- and solver-specific code resemble closely the mathematical formulation of equations and algorithms. The presented ideas and programming techniques are also applicable to other fields that involve systems of nonlinear partial differential equations. We demonstrate the framework in two applications and investigate the impact of various linearizations on the convergence properties of nonlinear solvers for a Reynolds-averaged Navier-Stokes model. (C) 2011 Elsevier Ltd. All rights reserved.
Software cost estimation is important for budgeting, risk analysis, project planning and software improvement analysis. There are numerous estimation techniques. During the past three decades there had been some signi...
详细信息
Software cost estimation is important for budgeting, risk analysis, project planning and software improvement analysis. There are numerous estimation techniques. During the past three decades there had been some significant developments in effort estimation, size of software and cost estimation methodology. Current software cost estimation models have been experiencing increasing difficulties in estimating the costs of software, as new software development methodologies and technologies are emerging very rapidly. Most of the software cost models generally rely on such inputs as estimates of lines of source code, delivered sets of instructions, function points and processing complexity or experience levels to produce cost estimates. These models generally produce inaccurate results when used to estimate the cost of software development in current development environments such as those that use component-based software development environments like visual languages. The authors present in this study a new technique for software cost estimation that can be used for software projects developed using component-based fourth-generation-language environment. The model was calibrated using the empirical data collected from 19 software systems. Efficiency of the model was also compared with an existing model used for such environment. The proposed model achieved better predictive accuracy.
Since Java is one of the most popular languages in the academic and research community a lot of robust and effective scientific libraries have been developed. However, the utilisation of these libraries is very awkwar...
详细信息
Since Java is one of the most popular languages in the academic and research community a lot of robust and effective scientific libraries have been developed. However, the utilisation of these libraries is very awkward especially for the average scientist that does not expertise in software development. The study presents the framework that has constructed for the utilisation of Java scientific libraries within the ScalaLab environment. The flexibility and extensibility of the Scala language allows the implementation of simple, coherent and efficient Matlab-like interfaces to those libraries. Moreover, other specialised Java libraries can be exploited much more easily and productively from within ScalaLab with the toolbox import mechanism that this work describes. Additionally, the system offers facilities such as on-line help, code completion, graphical control of the class-path and a specialised text editor with code colouring facilities that greatly facilitate the development of scientific software.
Bounded existential types are a powerful language feature for modeling partial data abstraction and information hiding. However, existentials do not mingle well with subtyping as found in current object-oriented langu...
详细信息
Bounded existential types are a powerful language feature for modeling partial data abstraction and information hiding. However, existentials do not mingle well with subtyping as found in current object-oriented languages: the subtyping relation is already undecidable for very restrictive settings. This paper considers two subtyping relations defined by extracting the features specific to existentials from current language proposals (JavaGI, WildFJ, and Scala) and shows that both subtyping relations are undecidable. One of the two subtyping relations remains undecidable even if bounded existential types are restricted to the equivalent of interface types. With the goal of regaining decidable type checking for the JavaGI language, the paper also discusses various restrictions including the elimination of bounded existentials from the language as well as possible amendments to regain some of their features.
ISO/IEC 19505-1:2012 defines the Unified Modeling Language (UML), revision 2. The objective of UML is to provide system architects, software engineers, and software developers with tools for analysis, design, and impl...
详细信息
标准号:
ISO/IEC 19505-1-2012
ISO/IEC 19505-1:2012 defines the Unified Modeling Language (UML), revision 2. The objective of UML is to provide system architects, software engineers, and software developers with tools for analysis, design, and implementation of software-based systems as well as for modeling business and similar processes.
In maintenance, assuring code quality and operation, software metrics is widely used by the various software organizations. Software metrics quantify different types of software complexity like size metrics, control f...
详细信息
ISBN:
(纸本)9781457715808;9781457715839
In maintenance, assuring code quality and operation, software metrics is widely used by the various software organizations. Software metrics quantify different types of software complexity like size metrics, control flow metrics and data flow metrics. These software complexities must be continuously calculated, followed and controlled. One of the main objectives of software metrics is that measures static and dynamic metrics analysis. It is always considered that high degree of complexity in a fragment is bad in comparison to a low degree of complexity in a fragment. Software metrics can be used in different phases of the software lifecycle. In this paper we will discuss the different metrics and comparison between both static and dynamic metrics. We try to evaluate and analyze different aspects of software static and dynamic metrics in regression testing which offers of estimating the effort needed for testing.
ISO/IEC 19505-2:2012 defines the Unified Modeling Language (UML), revision 2. The objective of UML is to provide system architects, software engineers, and software developers with tools for analysis, design, and impl...
详细信息
标准号:
ISO/IEC 19505-2-2012
ISO/IEC 19505-2:2012 defines the Unified Modeling Language (UML), revision 2. The objective of UML is to provide system architects, software engineers, and software developers with tools for analysis, design, and implementation of software-based systems as well as for modeling business and similar processes.
Current trend of systems of virtual learning is development of mobile communications in the technological level, and integration of constructivist approaches to education in the educational level of. Constructivist pe...
详细信息
ISBN:
(纸本)9781457717475
Current trend of systems of virtual learning is development of mobile communications in the technological level, and integration of constructivist approaches to education in the educational level of. Constructivist pedagogy in addition to the benefits of digital communication points to the problem of the virtual learning such as missing forms of social interactions of elements that are common in the real school environment, lack of immediate feedback for students and teachers, and other aspects. The current concept inclined to more general system approach of virtual university, such comprehensive set of digital communication solutions with a focus on education. Virtual university cannot therefore be understood only as a computer system with access to the text and exercises that students complete by ticking presented options. The paper focuses on solution of distance learning course in programming, especially on elimination the problems associated with the practical skill and techniques of structured and object-oriented programming.
暂无评论