The health state of a software ecosystem has been determined by its capacity of growth and longevity. Three health indicators represent a healthy software ecosystem: robustness, productivity, and niche creation. Studies focusing on understanding the causes and processes of the state of health of ecosystems have used these indicators largely. Researchers have intensified studies to understand how to achieve a good health state. Despite the growing number of studies, there is little knowledge about influences and actions to achieve health and, more specifically, that consider the effects of the software architecture on the ecosystem. This article presents a study exploring seven open source ecosystems within different domains to describe the influence of architectural practices on the software ecosystem health in terms of their motivations and effects. Our main goal was to understand how the software architecture and related practices can contribute to a healthy ecosystem. We conducted a netnography-based study to gather practices used to create and maintain the software architecture of these ecosystems. Our study brings evidence that architectural practices play a critical role in the achievement of ecosystems’ health. We found fifty practices that have influenced different aspects of health indicators. We highlight the importance of five influential factors – business goals, experience, requirements, resources, and time-to-market – for motivating the adoption of such practices. These factors may also contribute to understanding different strategies used to achieve a good health state. Moreover, we proposed a novel health indicator, trustworthiness, that accounts for the normal operation of a healthy software ecosystem.
One efficient way to perceive the effects of design decisions is by analyzing and evaluating Non-Functional Requirements (NFRs). A design decison can contribute positively or negatively toward specific NFRs. In their turn, NFRs describe how the software operates, representing essential quality characteristics of the software systems. In addition, the typical way of perceiving the “quality” of a software ecosystem is through the concept of ecosystem health and its health indicators. Considering the descriptive nature of NFRs representing a quality characteristic of the system, they could be a feasible way to know ecosystem health. Through their connection with the health indicators, it is possible to sketch paths to understand the influence of the NFRs on the health indicators and realize how the ecosystem health perceives the design decisions. This study aims to understand and map influences from NFRs to health indicators based on evidence found in KDE, a real-world ecosystem. We conducted mixed-methods research, including a survey with ecosystem experts and an adapted practitioner-evidence framework. Findings present a high-level descriptive mapping with connections between NFRs and health indicators, besides explaining evidence found in the KDE ecosystem.
Current modeling practices for software focus on functional aspects for behavior and structure. We are developing techniques that examine these functional aspects along with architecture issues through modeling, analysis, and virtual integration for assurance of performance properties. For embedded cyber-physical systems, the approach enables identification and removal of defects early in the design phase for verification of integrability, assurance that non-functional requirements are met, and flexibility in modeling and analysis at multiple levels of system fidelity.
The software architecture community has played a crucial role in the development of mobile software. Many of the ideas used in the design of these systems came from traditional software architecture and those ideas have contributed to mobile computing becoming ubiquitous. Mobile applications in the context of smart cities are very challenging since they need to operate within the power, processor, and capacity limitations of mobile devices, the exacting demands of life critical smart city requirements, and the constantly changing and exposed environment which may not always be trusted. Since there are no widely accepted design models for this type of software, developers must resort to primitive design decisions to meet all the needs of these applications, which takes additional time and expertise. For this reason, this study aims to investigate the design process for mobile applications in the context of smart cities. In order to address the lack of verified information about designing mobile apps, we conducted a multi-case study with 9 applications from 4 different development groups to build a grounded theory. The applications were reverse engineered to expose the architecture of each application. Based on all the data, an initial grounded theory was constructed to explain how the selected design process produces an app with the desired characteristics. The resulting theory offers explanations for how software engineering teams design mobile apps for smart cities. This knowledge will serve as a basis to further understand the phenomena and advances towards more effective design and development process definitions.
Architecture Description Languages (ADLs) have emerged over the past two decades as a means to abstract details of large-scale systems in order to enable better intellectual control over the complete systems. Recently, there has been an explosion in the number of ADLs created in the research community. However, industrial adoption of these ADLs has been rather limited. This has been attributed to various reasons, including the lack of support of some ADLs for: variability management, requirements traceability, architectural artefact reusability and multiple architectural views. To overcome these limitations, this paper is a report on ALI, an ADL that was designed to complement existing work by adding mechanisms to address the aforementioned limitations. The ALI design principles, concepts, notations and formal semantics are presented in this paper. The notation is illustrated using two distinct case studies, one from the information systems domain " an Asset Management System (AMS); and another from the embedded systems domain - a Wheel Brake System (WBS).
Safety-critical systems are those systems whose failure could result in loss of life. For that reason, it needs specific development activities in the software development life cycle to ensure that the system will operate safely. The overall objective of this research is to develop a theoretical framework that identifies unsafe functional behavior for each component in the system. Current safety analysis methods do not use formal methods to find hazardous conditions in a design. We provide guidance concerning mathematical notations to formalize an error ontology used in the architecture descriptions of systems represented in AADL (Architecture Analysis and Design Language) and to improve the rigor of STPA (Systems-Theoretic Process Analysis), a hazard analysis method. In this study, we investigated how a formalized error ontology could assist in identifying unsafe behavior. The ontology can aid in identifying mathematical expressions for each error flow in the canonical feedback control loop architecture. The results of our studies have shown that providing a formal notation for the feedback control loop and providing formal specification for the error ontology lead to finding hazards in the operational system context that other methods miss. By augmenting STPA with an error ontology described in a formal notation, we are able to find more hazards.
When developers contribute to an open source software ecosystem project, they follow practices defined by governing authorities, architects, maintainers, committers, and other stakeholders. Many of these practices are incorporated into training videos and guidelines for newcomers to guide the work of contributors, including architectural practices that influence the quality of the software product and the health of the open source ecosystem. This research is investigating architectural practices intended to orient and train newcomers during their first contacts with the ecosystem. This includes using the software architecture to trace a picture of how the education artifacts have been built to achieve a healthy ecosystem. This research identifies architectural practices spread by some training resources and analyzes how these practices contribute to achieving a healthy ecosystem. Our research method consisted of a qualitative study conducted with data obtained from various training sources. The findings show the connection between existing education for newcomers and their possible impact to achieve healthy open source ecosystems.
Architecture is the fundamental structure of a system. That structure is based on the relationships among the modules that provide the behaviour of the system. These structures appear, with variations, in many systems that address related problems. Because software is so malleable, much of this variation is implemented in the software portion of the product. These different architectures have different performance characteristics such as different levels of reliability and safety. In this chapter we will survey some of the popular architectures for cyber-physical systems, the quality attributes enhanced and degraded by each architecture and analysis techniques that are used to evaluate these qualities in the context of actual applications. Our intent is to provide the type of knowledge needed for the transportation engineer to participate in developing or acquiring software for smart transportation systems.
A healthy software ecosystem is capable of maintaining productivity and attractiveness, even in the face of problems and disruptions.Some studies have used software metrics to measure the health of a software ecosystem; however, there is little agreement on how to measure those aspects related to software architecture nor how to weigh their influence on the health state of the ecosystem.This paper introduces an approach to measuring and assessing the state of a software ecosystem's health that is aware of the architectural practices used.The approach uses a variation of the softgoal interdependence graph belonging to NFR (Non-Functional Requirements) framework on goal modeling.The key idea is to model and estimate influences of architectural practices on the health indicators.This research carried out an exploratory case study in the KDE ecosystem.KDE architectural practices were identified and analyzed with the support of our proposed practice-aware approach.The findings present the measurable influences that can be used to support decision-making processes related to architectural practices.
Software ecosystems have adopted many different strategies to achieve success and good health. The role of software architect is one of the main contributors to that success. Their activities are crucial for realizing the business strategy of their organization. Software ecosystems define multi-sided markets that require different strategies from a traditional two-sided market. The architectural practices in the multi-sided market must support the need for flexibility and rapid reaction. These new demands broaden our understanding of the software architect's role and the impact of their action on ecosystem structure. In particular the need to understand how to operate in a collaborative, cooperative environment to exploit competition. In this position paper, we discuss how software architect's actions influence the ecosystem health through their indicators: productivity, niche creation, and robustness.
The Internet of Things (IoT) continues to experience rapid growth, and its influence is extending into previously unreached domains. However, some of these new domains impose specific limitations that complicate the design and implementation of IoT systems. Examples of such limitations are the exclusion of specific protocols, restrictions on the types of data that can be collected, requirements about what information can be transmitted to the public and controls around how that communication occurs. Capturing, representing and designing for these limitations as well as reuse is essential for the quick and successful deployment of such projects. In this paper, we present a case study of an IoT human in the loop monitoring system built for use within an industrial setting. We report our experiences with both designing the first deployment of the system as well as designing variation points into the software architecture to account for future iterations and deployment into other environments.
This chapter introduces the concept of Systems Engineering and its role in designing systems for use in the Internet of Things (IoT), with particular emphasis on Intelligent Transportation Systems (ITS). Design is an essential step in the creation of a system as the design plots the course that later development steps will take. It involves the creation of an architecture that represents the system to be constructed, and this architecture is analyzed to ensure the system, as designed, is capable of successfully meeting requirements. Verification at this stage, as part of the architecture analysis, is important as it has been shown that the majority of errors (approximately 70%) are introduced in the design and are not caught until later development steps. In this chapter, we introduce an architecture description tool, the Architecture Analysis & Design Language (AADL), that facilitates the creation of architectures for embedded systems, like those found in the IoT and ITS. We provide an overview of the capabilities of the language and show how the architectures designed in AADL can be verified against the requirements.
The Special Edition for Software Reuse of the Workshop on Social, Human, and Economic Aspects of Software (WASHES) aims at bringing together researchers and practitioners who are interested in social, human, and economic aspects of software. WASHES is a forum to discuss models, methods, techniques, and tools to achieve software quality, improve reuse and deal with the existing issues in this context. This special edition's main topic is "Challenges of Reuse and the Social, Human, and Economic Aspects of Software". We believe it is important to investigate software reuse beyond the technical perspective and understand how the non-technical barriers of reuse affect practices, processes and tools in practice.
The health of the software ecosystems concerns to the growing and continuity to exist remaining variable and productive over time. Research on this area is becoming more important. Even today, no studies have been available summarizing the research on evaluation approaches for the health of software ecosystems. The objective of this study is to structure and analyze the available literature on this field identifying the state-of-the-art of the research. We conducted a systematic literature review to obtain an overview of the existing studies in this area. 23 studies were selected as primary studies by applying inclusion, exclusion and quality criteria. The findings show that the research area is quite immature. There are few approaches and tools to support the evaluation work. In these studies, only 3 reported a complete evaluation of the health of ecosystems, 5 studies were considered as initial proposals, and the others evaluated the health partially.
The emerging Internet of Things (IoT) has facilitated an explosion of everyday items now augmented with networking and computational features. Some of these devices are developed using a Software Product Line (SPL) approach in which each device, or product, is instantiated with unique features while reusing a common core. The need to rapidly develop and deploy these systems in order to meet customer demand and reach niche markets first requires shortened development schedules. However, many of these systems perform roles requiring thorough verification, for example, securing homes. In these systems, the detection and correction of errors early in the development life cycle is essential to the success of such projects, with particular emphasis on the requirements and design phases where approximately 70% of faults are introduced. Tools such as the Architecture Analysis & Design Language (AADL) and its verification utilities aid in the development of an assured design for embedded systems. However, while AADL has excellent support for the specification of SPLs, current verification utilities for AADL do not fully support SPLs, particularly SPL models utilizing composition. We introduce an extended version of AGREE, a verification utility for AADL, with support for compositional verification of SPLs.
Studies have shown that 70% of all defects are inserted during the very early phases of development, but most of those defects are not found until very late in development. The Architecture Analysis and Design Language (AADL) provides the basis for creating highly detailed models that support a “virtual integration” approach to architecture development. Through a set of domain specific languages, which support requirements definition, verification activities, and architectural modeling, the development team is able to incrementally design and analyze a system model. Those analyses are used to identify functional and nonfunctional requirements that are not satisfied at the time of the analysis by the architecture described in the model. This early “virtual integration” of the system using architectural-level components has been shown to facilitate early defect detection and a reduction of overall development effort by as much as 30%. This tutorial will survey this environment, present a specific example, and set the attendee up to explore the role of the tools in defining systems. This is a new tutorial although a similar tutorial at Saturn 2016 received very good reviews.
Open source software ecosystems have adjusted and evolved a set of practices over the years to support the delivery of sustainable software. However, few studies have investigated the impacts of such practices on the health of these ecosystems. In this paper, we present the results of an ethnographic-based study conducted during the Latin-American KDE users and contributors meeting (LaKademy 2015) with the goal of collecting practices used within the KDE ecosystem and understanding how they affect ecosystem health. The analysis was based on softgoal interdependency graphs adapted to represent practices and relate them to non-functional requirements and goals. Our results provide a preliminary insight to understand how KDE ecosystem community interacts, which working practices have been adopted and how they affect ecosystem health.
Decision Support Frameworks, information systems that guide business and organization choices, are often used to help planners and designers make complex choices. These frameworks provide a means of aggregating the data needed to successfully reach a decision while providing a means of logically analyzing the compiled information. The framework can also provide additional information to help acclimate a planner or designer to special considerations of a domain if they are unfamiliar with the area. Dynamic Software Product Lines, product lines which can self adapt their architecture at run-time, are complex systems usually constructed to cope with high levels of run-time uncertainty. During construction, selecting an appropriate design from among the set of possible designs for a Dynamic Software Product Line is a non-trivial task, and no existing Decision Support Framework provides guidance for this process. In this paper, we present a framework, Structured Intuitive Model for Dynamic Adaptive System Economics, for comparing and selecting between designs for a Dynamic Software Product Line.
Studies have shown that 70% of all defects are inserted during the very early phases of development, but most of those defects are not found until very late in development. The Architecture Analysis and Design Language (AADL) provides the basis for creating highly detailed models that support a "virtual integration" approach to architecture development. Through a set of domain specific languages, which support requirements definition, verification activities, and architectural modeling, the development team is able to incrementally design and analyze a system model. Those analyses are used to identify functional and nonfunctional requirements that are not satisfied at the time of the analysis by the architecture described in the model. This early "virtual integration" of the system using architectural-level components has been shown to facilitate early defect detection and a reduction of overall development effort by as much as 30%. This tutorial will survey this environment, present a specific example, and set the attendee up to explore the role of the tools in defining systems. This is a new tutorial although a similar tutorial at Saturn 2016 received very good reviews.
Nowadays the software ecosystem health has received increasing attention as an important field for managing software ecosystems. Researchers have intensified studies in this area with the goal of assessing ecosystem health and possible causes for the success achieved. However, none of them have considered directly the effects of the software architecture on the ecosystem health. There are some architectural aspects weighting considerably on the balance of the whole ecosystem. So, software ecosystem health should be addressed based on different perspectives, aligned with novel assumptions and ways of thinking. In this paper, we exploit intersections between architecture and software ecosystem health. We consider the concept of the "software ecosystem architectural health" from the perspective of key areas and practices, which affect the state of the ecosystem health. We also identify some research challenges and outline future work.
Eduardo Santana De Almeida合作论文数Computer Science Department, Federal University of Bahia15
Judith Stafford合作论文数Department of Computer Science,University of Colorado at Boulder3