It has become common practice to build programs by using libraries. While the benefits of reuse are well known, an often overlooked risk are system runtime failures due to API changes in libraries that evolve independ...
详细信息
ISBN:
(纸本)9781479937523
It has become common practice to build programs by using libraries. While the benefits of reuse are well known, an often overlooked risk are system runtime failures due to API changes in libraries that evolve independently. Traditionally, the consistency between a program and the libraries it uses is checked at build time when the entire system is compiled and tested. However, the trend towards partially upgrading systems by redeploying only evolved library versions results in situations where these crucial verification steps are skipped. For Java programs, partial upgrades create additional interesting problems as the compiler and the virtual machine use different rule sets to enforce contracts between the providers and the consumers of APIs. We have studied the extent of the problem on the qualitas corpus, a data set consisting of Java open-source programs widely used in empirical studies. In this paper, we describe the study and report its key findings. We found that the above mentioned issues do occur in practice, albeit not on a wide scale.
An identifier is one of the crucial elements for program readability. Method names in an object-oriented program are important identifiers because method names are used for understanding the behavior of the methods wi...
详细信息
ISBN:
(纸本)9781479937523
An identifier is one of the crucial elements for program readability. Method names in an object-oriented program are important identifiers because method names are used for understanding the behavior of the methods without reading a part of the program. It is well-known that each method name should consist of a verb and objects according to general guidelines. However, it is not easy to name methods consistently since each of the developers may have a different understanding of the verbs and objects used in the method names. As a first step to enable developers to name methods consistently and easily, we focus on the verbs used in the method names. In this paper, we present a technique to recommend candidate verbs for a method name so that developers can use consistent verbs for method names. Given a method, we recommend a list of verbs used in many other methods similar to the given method, by using association rules. We have extracted association rules from 445 OSS projects and applied these rules to two projects. As a result, the extracted rules could recommend the current verbs in the top 10 candidates for 60.6% of the methods covered by our approach. Furthermore, we have identified four meaningful groups of rules for verb recommendation.
Hard-wired control systems are increasingly replaced by program-controlled embedded systems. The programming languages currently employed for their implementation lack constructs and design patterns enforcing intellig...
详细信息
ISBN:
(纸本)9781479950812
Hard-wired control systems are increasingly replaced by program-controlled embedded systems. The programming languages currently employed for their implementation lack constructs and design patterns enforcing intelligible code fostering its verification by certification authorities. Recommendations for such constructs necessary to guarantee safety integrity are given in the international standard IEC 61508-3. One of the recommendations refers to object-oriented programming (OOP). Therefore, we analyse both basic and advanced properties of OOP like encapsulation, polymorphism, inheritance, prototyping, delegation etc. with respect to functional safety. In a resulting programming language based on PEARL90 [1] we demonstrate coding with examples from hard real-time systems.
This paper summarizes our experiences integrating topics in the software development fundamentals (SDF), programming languages (PL), and software engineering (SE) knowledge areas of the ACM 2013 curriculum within a si...
详细信息
ISBN:
(纸本)9781450326056
This paper summarizes our experiences integrating topics in the software development fundamentals (SDF), programming languages (PL), and software engineering (SE) knowledge areas of the ACM 2013 curriculum within a single course. It is novel in combining object-oriented programming and software development practices with fundamental analytical reasoning about software correctness. The aim is to integrate and cover the topics in an effective fashion. The course description in this paper represents an approach we have applied successfully for over 5 years. Students tend to consider this course to be one of the more challenging encountered in the first two years of study. Interestingly, the challenge appears to stem equally from mastering object-oriented programming and design pattern components of the course, as it does from learning to use specifications for analytical reasoning of component correctness.
Automation systems must primarily be deterministic and reliable, especially in safety-critical environments. With recent trends such as mass customization or Industry 4.0, there is an increasing need for automation sy...
详细信息
ISBN:
(纸本)9781479948451
Automation systems must primarily be deterministic and reliable, especially in safety-critical environments. With recent trends such as mass customization or Industry 4.0, there is an increasing need for automation systems to be dynamic. Changing parts of the software of today's automation systems, however, typically requires rebooting the controller, which makes software updates a complex and costly endeavor often despised by operators. This article presents an approach to updating the software of automation systems at runtime without disrupting the system's operation. This is achieved with a combination of a component-based architecture, cyclic application execution, and a state transfer mechanism between the original and the updated version of a component. We validate our solution with a case study in which we update the control algorithm of a magnetic levitation device running at cycles of 1 kHz without dropping the ball.
The CBSE enables to reduce the time required for the development and testing, to create robust systems. However not all existing component-based software synthesis methods focus on the software quality. There is the n...
详细信息
ISBN:
(纸本)9781479971220
The CBSE enables to reduce the time required for the development and testing, to create robust systems. However not all existing component-based software synthesis methods focus on the software quality. There is the need for the method which can ensure software quality (in terms of consistence of specification and implementation) preserving short time required for software development at the same time. The component-based system synthesis method based on the Curry-Howard protocol is presented in this paper as the solution for this problem. Authors presents some implementation details of this method also and argue that the component-based software synthesis problem and the solution can be stated in terms of abstract component model.
By software reusing we can expedite the development of a software product by re-using the components of another software product in a different behaviour. The concept of systematic software reuse is simple: the idea o...
详细信息
ISBN:
(纸本)9781479949106
By software reusing we can expedite the development of a software product by re-using the components of another software product in a different behaviour. The concept of systematic software reuse is simple: the idea of building and using "software preferred parts." By building systems out of carefully designed, pre-tested components, one will save the cost of designing, writing and testing new code. The practice of reuse has not proven to be this simple however, and there are many misconceptions about how to implement and gain benefit from software reuse. This paper briefly summarizes software reuse research and discusses major research contributions.
Usage of model-driven and component-based development approaches in embedded systems allows timing analysis to be performed using system models. One of the problems rarely addressed by model-level analysis is support ...
详细信息
ISBN:
(纸本)9781479957958
Usage of model-driven and component-based development approaches in embedded systems allows timing analysis to be performed using system models. One of the problems rarely addressed by model-level analysis is support for analysis of cyclic execution paths. In this paper we present a method which allows compositional worst-case execution time analysis to be performed on software models containing such cycles. Our method allows defining cycle bounds for components and connections, and provides an algorithm to analyze cyclic paths containing such bounds. Additionally, we provide a possibility to propagate cycle bound definitions through the component hierarchy. The method is applied to the IEC 61499 component model and its applicability has been tested using a prototype tool.
In component-based and model-driven development it is common to model embedded applications in a platform-independent manner. As an example, some approaches allow development of distributed applications while abstract...
详细信息
ISBN:
(纸本)9781479948451
In component-based and model-driven development it is common to model embedded applications in a platform-independent manner. As an example, some approaches allow development of distributed applications while abstracting away from details of communication between platform nodes. Using such an approach requires to implement this communication before an executable system is deployed. Currently it is common to automatically implement this communication on the level of code, while providing it on the model level is mostly a task that needs to be done manually. In this paper we present a framework for automatic generation of inter-node communication by adding communication components to software models. The framework provides flexibility in the level of automation of generation decisions, and is defined in a way which allows adding support for new communication media or protocols. We have implemented the generation framework for the IEC 61499 standard and provide a prototype generation tool, which we use for examining the applicability of the approach.
Service oriented Architectures and service-centric models arose in the last years as a standard de-facto in IT enterprises for offering practically any kind of services to users world-wide. Heterogeneity (of operating...
详细信息
ISBN:
(纸本)9781479941711
Service oriented Architectures and service-centric models arose in the last years as a standard de-facto in IT enterprises for offering practically any kind of services to users world-wide. Heterogeneity (of operating systems, programming languages, software and hardware infrastructures etc.) and transparency (for users) are the key issues of the actual trends in developing and providing services. In particular Cloud-based models provide means for realizing and distributing everything-asa-service, including infrastructures, hardware and software platforms and services. Even if at the moment Service-centric models and technologies are mature in the IT scenario, Composition, analysis and validation of Cloud services is an open research challenge. In this work we describe a methodology based on Multi-Agent Models which allows for description, composition and verification of requirements of Cloud-based services. The methodology uses a modeling profile able to describe services as agents in a multi-agent environment and it is based on Model Driven Engineering (MDE) techniques. The proposed methodology includes a verification process for requirements that exploits formal methods during the whole life cycle of services. An example of the application of the proposed techniques will be reported also.
暂无评论