23,176 research outputs found

    Reusable Knowledge-based Components for Building Software Applications: A Knowledge Modelling Approach

    Get PDF
    In computer science, different types of reusable components for building software applications were proposed as a direct consequence of the emergence of new software programming paradigms. The success of these components for building applications depends on factors such as the flexibility in their combination or the facility for their selection in centralised or distributed environments such as internet. In this article, we propose a general type of reusable component, called primitive of representation, inspired by a knowledge-based approach that can promote reusability. The proposal can be understood as a generalisation of existing partial solutions that is applicable to both software and knowledge engineering for the development of hybrid applications that integrate conventional and knowledge based techniques. The article presents the structure and use of the component and describes our recent experience in the development of real-world applications based on this approach

    Avoiding WSDL Bad Practices in Code-First Web Services

    Get PDF
    Service-Oriented Computing allows software developers to structure applications as a set of standalone and reusable components called services. The common technological choice for materializing these services is Web Services, whose exposed functionality is described by using the Web Services Description Language (WSDL). Methodologically, Web Services are often built by first implementing their behavior and then generating the corresponding WSDL document via automatic tools. Good WSDL designs are crucial to derive reusable Web Services. We found that there is a high correlation between well-known Object-Oriented metrics taken in the code implementing services and the occurrences of bad design practices in their WSDL documents. This paper shows that some refactorings performed early when developing Web Services can greatly improve the quality of generated WSDL documents.Sociedad Argentina de Informática e Investigación Operativ

    Avoiding WSDL Bad Practices in Code-First Web Services

    Get PDF
    Service-Oriented Computing allows software developers to structure applications as a set of standalone and reusable components called services. The common technological choice for materializing these services is Web Services, whose exposed functionality is described by using the Web Services Description Language (WSDL). Methodologically, Web Services are often built by first implementing their behavior and then generating the corresponding WSDL document via automatic tools. Good WSDL designs are crucial to derive reusable Web Services. We found that there is a high correlation between well-known Object- Oriented metrics taken in the code implementing services and the occurrences of the WSDL anti-patterns in their WSDL documents. This paper shows that some refactorings performed early when developing Web Services can greatly improve the quality of generated WSDL documents.Sociedad Argentina de Informática e Investigación Operativ

    Designing Software Architectures As a Composition of Specializations of Knowledge Domains

    Get PDF
    This paper summarizes our experimental research and software development activities in designing robust, adaptable and reusable software architectures. Several years ago, based on our previous experiences in object-oriented software development, we made the following assumption: ‘A software architecture should be a composition of specializations of knowledge domains’. To verify this assumption we carried out three pilot projects. In addition to the application of some popular domain analysis techniques such as use cases, we identified the invariant compositional structures of the software architectures and the related knowledge domains. Knowledge domains define the boundaries of the adaptability and reusability capabilities of software systems. Next, knowledge domains were mapped to object-oriented concepts. We experienced that some aspects of knowledge could not be directly modeled in terms of object-oriented concepts. In this paper we describe our approach, the pilot projects, the experienced problems and the adopted solutions for realizing the software architectures. We conclude the paper with the lessons that we learned from this experience

    An overview of very high level software design methods

    Get PDF
    Very High Level design methods emphasize automatic transfer of requirements to formal design specifications, and/or may concentrate on automatic transformation of formal design specifications that include some semantic information of the system into machine executable form. Very high level design methods range from general domain independent methods to approaches implementable for specific applications or domains. Applying AI techniques, abstract programming methods, domain heuristics, software engineering tools, library-based programming and other methods different approaches for higher level software design are being developed. Though one finds that a given approach does not always fall exactly in any specific class, this paper provides a classification for very high level design methods including examples for each class. These methods are analyzed and compared based on their basic approaches, strengths and feasibility for future expansion toward automatic development of software systems

    Identifying and improving reusability based on coupling patterns

    Get PDF
    Open Source Software (OSS) communities have not yet taken full advantage of reuse mechanisms. Typically many OSS projects which share the same application domain and topic, duplicate effort and code, without fully leveraging the vast amounts of available code. This study proposes the empirical evaluation of source code folders of OSS projects in order to determine their actual internal reuse and their potential as shareable, fine-grained and externally reusable software components by future projects. This paper empirically analyzes four OSS systems, identifies which components (in the form of folders) are currently being reused internally and studies their coupling characteristics. Stable components (i.e., those which act as service providers rather than service consumers) are shown to be more likely to be reusable. As a means of supporting replication of these successful instances of OSS reuse, source folders with similar patterns are extracted from the studied systems, and identified as externally reusable components
    corecore