Software components need to be evaluated at several points during their life cycle, by different actors and for different purposes. Besides the quality assurance performed by component developers, there are two main activities which include evaluation of components: component selection (i.e. evaluation performed by the system developer in order to select the best fit component to use in a system) and an envisioned component certification (i.e. evaluation made by an independent actor in order to increase the trust in the component). This paper examines the fundamental similarities and differences between these two types of component evaluations and elaborates how these fit in the overall process views of component-based development for both COTS-based development and software product line development.
Teaching Distributed Software Development (DSD) is a challenging task. A convincing simulation of distributed environment in a local environment is practically impossible. Teaching DSD in distributed environment is more realistic since the students directly experience all its specifics. However, teaching in distributed environment, in which several geographically separated teams participate, is very demanding. Different types of obstacles occur, from administrative and organizational to technical ones. This paper describes some of the challenges, lessons learned, but also success stories of the DSD course performed now eight year in a row.
In this paper we discuss challenges faced in conducting distributed student projects within a scope of a distributed software development university course. Student motivation and demotivation factors, along with perceived cultural differences, are identified and analyzed on the basis of data collected from a number of student projects.
This paper describes different aspects of teaching distributed software development, regarding the types of project customers: industry and academia. These approaches enable students to be more engaged in real-world situations, by having customers from the industry, local or distributed customers in universities, distributed customers in software engineering contests or being involved in an ongoing project, thus simulating the company merging. The methods we describe are used in a distributed project-oriented course, which is jointly carried out by two universities from Sweden and Croatia. The paper presents our experiences of such projects being done during the course, the differences in each approach, issues observed and ways to solve them, in order to create a more engaging education for better-prepared engineers of tomorrow.
Teaching Distributed Software Development with real distributed settings is a challenging and rewarding task. Distributed courses are idiosyncratically more challenging than standard local courses.We have experienced this during our distributed course, which has been run for 14 consecutive years. In this paper, we present and analyze the emerging diversities specific to distributed project-based courses. We base our arguments on our experience and we exploit a three-layered distributed course model, which we use to analyze several course elements throughout the 14-years lifetime of our distributed project-based course. In particular, we focus on the changes that the course underwent throughout the years, combining findings obtained from the analyzed data with our own teaching perceptions. Additionally, we propose insights on how to manage the various diversity aspects.
Cloud Computing is changing the services consumption and delivery platform as well as the way businesses and users interact with IT resources. It represents a major conceptual shift that introduces new elements in programming models and development environments that are not present in traditional technologies. The evolution of Cloud Computing motivates teaching Cloud Computing to computer science senior students and graduate students so that they can gain broad exposure to the main body of knowledge of Cloud Computing and get prepared for occupations in industry. There is thus a strong need for having a Cloud Computing education course that (i) has a broad coverage of different roles interacting with a cloud; and (ii) leverages Cloud Computing concepts, technology and architecture topics at both introductory and advanced level. In this paper, we describe the demand for understanding the impact of Cloud Computing in computer science higher education. We propose education strategies for teaching Cloud Computing, including key knowledge areas for an enduring Cloud Computing course. © 2014 IEEE.
Software evolvability is a multifaceted quality attribute that describes a software system's ability to easily accommodate future changes. It is a fundamental characteristic for the efficient implementation of strategic decisions, and the increasing economic value of software. For long life systems, there is a need to address evolvability explicitly during the entire software lifecycle in order to prolong the productive lifetime of software systems. However, designing and evolving software architectures are the challenging task. To improve the ability to understand and systematically analyze the evolution of software system architectures, in this paper, we describe software architecture evolution characterization, and propose an architecture evolvability analysis process that provides replicable techniques for performing activities to aim at understanding and supporting software architecture evolution. The activities are embedded in: (i) the application of a software evolvability model; (ii) a structured qualitative method for analyzing evolvability at the architectural level; and (iii) a quantitative evolvability analysis method with explicit and quantitative treatment of stakeholders' evolvability concerns and the impact of potential architectural solutions on evolvability. The qualitative and quantitative assessments manifested in the evolvability analysis process have been applied in two large-scale industrial software systems at ABB and Ericsson, with experiences and reflections described. (c) 2012 Elsevier Inc. All rights reserved.
Cloud Computing has emerged as a new paradigm in the field of network-based services within many industrial and application domains. The major benefits that it provides in terms of IT efficiency and business agility represent a huge competitive advantage for an organization. However, building new services in the cloud or designing cloud-based solutions into existing business context in general is a complex decision process involving many factors. In this paper, we undertake a systematic review to obtain an overview of the existing studies in designing cloud-based solutions. In particular, we investigate the main challenges and concerns when building cloud-based architectures and different architectural approaches and design considerations that are proposed in literatures to meet these specific concerns. The search strategy identified 72 studies that were catalogued as primary studies for this review after using multi-step selection process. The main challenges and concerns are classified into four main categories: security and trustworthiness, elasticity, portability and interoperability, and cloud resilience. We have also categorized studies that describe architectural approaches and design considerations when architecting for the cloud. Implications for research and practice are presented as well.
This report describes the component model developed within PROGRESS. In addition to defining the syntax and semantics, it also gives some background and motivation, and describes how this work relates to the overall PROGRESS vision and to the work in other areas of the project.
Distributed Software Development course is a joint project-based course involving three universities, from Croatia, Sweden and Italy, running each year since 2003. Distributed student teams work on all phases of a complex software engineering project, solving several challenges of working in a global environment, thus obtaining a valuable experience for their future careers. The course is very well received
The need for educating future software engineers in the field of global software engineering is recognized by many educational institutions. In this paper we outline the characteristics of an existing global software development course run over a period of nine years, and present a flexible project framework for conducting student projects in a distributed environment. Based on data collected from fourteen distributed student projects, a set of collaboration patterns is identified and their causes and implications described. Collaboration patterns are a result of the analysis of collaboration links within distributed student teams, and can assist teachers in better understanding of the dynamics found in distributed projects.
Mission-critical Internet of Things (MC-IoT) systems involve heterogeneous things from both the digital and physical worlds. They run applications whose failure might cause significant and possibly dramatic consequences, such as interruption of public services, significant business losses, and deterioration of enterprise operations. These applications require not only high availability, reliability, safety, and security but also regulatory compliance, scalability, and serviceability. At the same time, they're exposed to various facets of uncertainty, spanning from software and hardware variability to mission planning and execution in possibly unforeseeable environments. Model-driven engineering can potentially meet these challenges and better enable the adoption of MC-IoT systems.
Embedded systems are becoming more and more complex, thus demanding innovative means to tame their challenging development. Among others, early architecture optimization represents a crucial activity in the development of embedded systems to maximise the usage of their limited resources and to respect their real-time requirements. Typically, architecture optimization seeks good architecture candidates based on model-based analysis. Leveraging abstractions and estimates, this analysis usually produces approximations useful for comparing architecture candidates. Nonetheless, approximations do not provide enough accuracy in estimating crucial extra-functional properties. In this article, we provide an architecture optimization framework that profits from both the speed of model-based predictions and the accuracy of execution-based measurements. Model-based optimization rapidly finds a good architecture candidate, which is refined through optimization based on monitored executions of automatically generated code. Moreover, the framework enables the developer to leverage her optimization experience. More specifically, the developer can use runtime monitoring of generated code execution to manually adjust task allocation at modelling level, and commit the changes without halting execution. In the article, our architecture optimization mechanism is first described from a general point of view and then exploited for optimizing the allocation of software tasks to the processing cores of a multicore embedded system; we target extra-functional properties that can be concretely represented and automatically compared for different architectural alternatives (such as memory consumption, energy consumption, or responsetime).
In a component-based development process the selection of components is an activity that takes place over multiple lifecycle phases that span from requirement specifications through design to implementation-integration. Automated tool support for component selection would be very helpful in each phase. In this paper we introduce a framework that supports the selection of COTS componentsin the requirements phase. The framework lays on a tool that builds and solves an optimization model, whose solution provides the optimal COTS component selection. The selection criterion is based on cost minimization of the whole system while assuring a certain degree of satisfaction of the system requirements. The output of the model solution indicates the optimal combination of single COTScomponents and assemblies of COTS that satisfy the requirements while minimizing costs.
In a component-based development process the selection of components is an activity that takes place over multiple lifecycle phases that span from requirement specifications through design to implementation and integration. In different phases, different assumptions are valid and different granularity of information is available, which has a consequence that different procedure should be used in the selection process and an automated tool support for an optimized component selection would be very helpful in each phase. In this paper we analyze the assumptions and propose the selection procedure in the requirements phase. The selection criterion is based on cost minimization of the whole system while assuring a certain degree of satisfaction of the system requirements that can be considered before designing the whole architecture. For the selection and optimization procedure we have adopted the DEER (DEcision support for componEnt-based softwaRe) framework, previously developed to be used in the selection process in the design phase. The output of DEER indicates the optimal combination of single COTS (Commercial-Off-The-Shelf) components and assemblies of COTS that satisfy the requirements while minimizing costs. In a case study we illustrate the selection and optimization procedure and an analysis of the model sensitivity to changes in the requirements.
Ultra Large Systems are characterized by its complexity, size, diversity of concerns and missions. As complexity of systems grows and the demands on interoperability between them grow, the concerns of how to build, maintain and manage them becomes more important. It is however a question how this complexity can be managed, or how the complexity can be simplified. A second question is related to a question whether an ultra-large system is the same as ultra-large integration of systems, i.e. systems of systems? In this short position paper we exploit a hypothesis that ultra-large systems are either loosely integrated systems and in that case they should be treated as systems of systems, or tight-coupled systems and in that case they should have an layered architecture. As illustration, the paper shows some examples from Scandinavian industry that manage systems which are approaching the size of ultra-large systems.
This talk presents needs, challenges and experience of education of Global Software engineering. In Global Software Development the developers and other stakeholders are acting in a distributed environment, with different contexts and with different assumptions. This usually causes different understanding of the same information and different reactions of the stakeholders which may lead to different problems during the development process. What can be done to avoid these problems? This talk addresses these questions through an analysis of education for distributed development, performed in a distributed environment. In particular, experiences from a course "Distributed Software Development” (DSD) will be discussed. DSD course was organized and performed between the School for Innovation, Design and Engineering at Mälardalen University (MDH), Sweden, the University of Zagreb, Faculty of Electrical Engineering and Computing (FER), Croatia, and partially joined by the Politecnico di Milano, Italy. The talk will discuss the challenges in creating and performing a joint DSD course due to misunderstanding of information and the solutions implemented at DSD, lessons learned, and success stories.
The primary role of component-based software engineering is to address the development of systems as an assembly of parts (components), the development of parts as reusable entities, and the maintenance and upgrading of systems by customising and replacing such parts. This requires established methodologies and tool support covering the entire component and system lifecycle including technological, organisational, marketing, legal, and other aspects. The traditional disciplines from software engineering need new methodologies to support component-based development.
Component-based development (CBD) is established as a standard approach in many domains. The most attractive parts of CBD come from its business side: increasing reuse and development efficiency. On other side many technical aspects are still remaining as challenges. This is in particular true in domains of embedded and dependable systems. The seminar will give the basic characteristics of component-based software development, then challenges and current practice and research directions.
Due to increasing complexity of software in embedded systems, the software development requires approaches that can manage that complexity in a similar way as this is done in general-purpose software, but at the same time provide support for embedded systems specifics. In this paper we give a short overview of a component-based approach that meets these requirements.
This paper gives a short overview of the talk related to the challenges in software development of resilient systems. The challenges come of the resilience characteristic as such; it a system emerging lifecycle property, neither directly measurable nor computable. While software is an essential part of a system, its analysis not enough for determining the system resilience. The talk will discuss about system resilience reasoning, its limitations, and possible approaches in the software design that include resilience analysis. © 2011 Springer-Verlag.
In the research, education and in everyday practice, a need for and general understanding and a holistic approach is becoming more and more important. Still in concrete cases such approaches meet many challenges, mostly in form of misunderstanding between involved partners experts from different disciplines. Edu-cation in general does not provide training for such approach. This paper describes a case - a course which goal was to transfer knowledge from one area to another: A software Engineer-ing and management of software development projects was taught to students of management and economy. In addition to this the course pro-vided new teaching methods that students were not used to. Finally the course has been taught as a distance course, using internet-based tech-nology. All this elements made the course very challenging. The paper gives an overview of the case, identifies the challenges and discusses the lessons learned.
The most effective setting for training in Global Software Engineering is to provide a distributed environment for students. In such an environment, students will meet challenges in recognizing problems first-hand. Teaching in a distributed environment is, however, very demanding, challenging and unpredictable compared to teaching in a local environment. Based on nine years of experience, in this paper we present the most important issues that should be taken into consideration to increase the probability of success in teaching a Global Software Engineering course.
The process of component- and component-based system development differs in many significant ways from the "classical" development process of software systems. The main difference is in the separation of the development process of components from the development process of systems. This fact has a significant impact on the development process. Since the component-basedapproach is a relatively young approach in software engineering, the main emphasis in the area has been in development of technologies, while process modeling is still an unexplored area. This paper analyses the basic characteristics of the component-based approach and its impact on the development process and lifecycle models. The generic lifecycle of component-based systems and thelifecycle of components are discussed, and the different types of development processes are discussed in detail: architecture-driven component development, productline development and COTS-based development. Finally a short case study illustrates the principles and specifics of component-based processes.
The essence of component-based software engineering is embodied in component models. Component models specify the properties of components and the mechanism of component compositions. In a rapid growth, a plethora of different component models has been developed, using different technologies, having different aims, and using different principles. This has resulted in a number of models and technologies which have some similarities, but also principal differences, and in many cases unclear concepts. Component-based development has not succeeded in providing standard principles, as for example object-oriented development. In order to increase the understanding of the concepts, and to easier differentiate component models, this paper provides a Component Model Classification Framework which identifies and quantifies basic principles of component models. Further, the paper classifies a certain number of component models using this framework.
Component-Based Development (CBD) is established in many application domains. There is a strong trend in applying the same approach in different domains of dependable systems. However, a precondition of a successful use of CBD in these domains is the utilization of theories, methods and technologies to predict and evaluate dependability attributes. This tutorial gives an analysis of current methodologies of attribute-specific evaluation methods for dependable component-based systems. We identify limitations of the current technologies, discusses existing and possible new solutions to overcome these limitations both from a esearch-oriented and practical perspective.
Most software engineering courses focus exclusively on the software development process, often referring to problems related to the complexity of software products and processes. In practice, however, many problems of a complex nature arise in which system engineering and other engineering disciplines are important in the development of systems. In such cases software engineers may have difficulty in coping with the entire problem, in the same way that engineers in other fields may have difficulty in understanding the software part. This suggests that the software engineering education of today is inadequate in certain respects. This paper presents a case study of a software engineering course and discusses the difficulty for computer science students to understand and to develop a system which also requires skills in engineering of a non-software nature.
One of the main objectives of developing component-based software systems is to enable efficient building of systems through the integration of components. All component models define some form of component inter-face standard that facilitates the programmatic integration of components, but they do not facilitate or provide theories for the prediction of the quality attributes of the component compositions. This decreases significantly the value of the component-based approach to building dependable systems. If it is not possible to predict the value of a particular attribute of a system prior to integration and deployment to the target environment the system must be subjected to other procedures, often costly, to determine this value empirically. For this reason one of the challenges of the component-based approach is to obtain means for the "composition" of quality attributes. This challenge poses a very difficult task because the diverse types of quality attributes do not have the same underlying conceptual characteristics, since many factors, in addition to component properties, influence the system properties. This paper analyses the relation between the quality attributes of components and those of their compositions. The types of relations are classified according to the possibility of predicting properties of compositions from the properties of the components and according to the influences of other factors such as software architecture or system environment. The classification is exemplified with particular cases of compositions of quality attributes, and its relation to dependability is discussed. Such a classification can indicate the efforts that would be required to predict the system attributes which are essential for system dependability and in this way, the feasibility of the component-based approach in developing dependable systems.
This panel session discusses which qualities are of particular importance for SOA and it explores the possible ways to guarantee them. Presentations in the session will explore the use of different techniques and approaches in order to foster the adoption of quality modeling techniques by industrial software systems.
By focussing on Cyber Physical Systems (CPS), this paper investigates how component-based principles and practices are used and support the activity of architecting CPS. For doing so, by running a systematic process, we selected 49 primary studies from the most important publishers search engines. Those papers have been analyzed and their contents classified according to the Classification Framework for Component Models proposed in our previous work. The results show that the main concerns handled by CPS component models are those of integration, performance, and maintainability. The instruments to satisfy those concerns, while architecting CPS, are ad-hoc software/system architecture, model-based approaches, architectural and component languages, and design. The IEC 61499 standard with its functions block is remarkably used to drive the work on six papers. Java is the most frequently used programming language used for implementing the components. Components are deployed mostly at compile time. Interfaces are almost equally distributed into port-based and operation-based. Overall, the results show a transition of technologies and approaches used in Embedded Systems to CPS, but still lacking methods for integrated architecting, in particular in incremental development.
A multitude of component models exist today, characterized by slightly different conceptual architectural elements, focusing on a specific operational domain, covering different phases of component life-cycle, or supporting analysis of different quality attributes. When dealing with different variants of products and in evolution of systems, there is a need for transformation of system models from one component model to another one. However, it is not obvious that different component models can accurately exchange models, due to their differences in concepts and semantics. This paper demonstrate an approach to achieve that. The paper proposes a generic framework to interchange models among component models. The framework, named DUALLY allows for tool and notations interpretability easing the transformation among many different component models. It is automated inside the Eclipse framework, and fully-extensible. The DUALLY approach is applied to two different component models for real-time embedded systems and observations are reported.
This report presents a complete list of papers published on the CBSE Syposium events (including Interational Workhop on Component Based Software Engineering 1998 - 2003, and International Symposium on Component Based Software Engineering 2004 - 2011). Each reference is accompanied with a unique identifier in the form of S-YY-Index.
East and South European countries are going through a process of intensive changes and ICT plays an important role in supporting these changes. Most of the East and South European countries have a tradition of high quality education, in particular in natural and traditional technical sciences and thus have a good potential to take the new challenges. Today there is a strong need for advances and excellence in Software Engineering education and research, which are crucial for effective development of software industry in the region.
In recent years new paradigms of software development have emerged in many industrial and application domains: component-based and service-based software engineering.Component-based software engineering (CBSE) provides support for building systems through the composition and assembly of software components. CBSE is an established approach in many engineering domains, such as distributed and web based systems, desktop and graphical applications and recently in embedded systems domains. CBSE technologies facilitate effective management of complexity, significantly increase reusability and shorten time-to-market. On the other hand, the growing demands for Internet computing and emerging network-based business applications and systems are the driving forces for the evolvement of service-oriented software engineering (SOSE) . SOSE utilizes services as fundamental elements for developing applications and software solutions. SOSE technologies offer great feasibility in integrating distributed systems that are built on various platforms and technologies and further push focus on reusability and development efficiency.CBSE and SOSE are similar paradigms; they use similar approaches and technologies. Both CBSE and SOSE have a common source: Software Architecture with its basic concept that have been further developed and specialized. SOSE has evolved from CBSE frameworks and object oriented computing to face the challenges of open environments. Still CBSE and SOSE have continued developing in parallel, keeping different foci, which also has resulted in confusion in developing and applying similar concepts, or the same concepts designated differently. For example there is a general misunderstanding in what a component and a service are. This leads to less efficient utilization and combination of these approaches. For this reason, it is important to bring these worlds together and make researchers and practitioners aware of both sides; how can we take advantages of the strengths of these two paradigms, how can we adapt and integrate the component-based and service oriented technologies, concepts and their strengths to overcome the weaknesses in each separate technology.The aim of this tutorial is to show an integrated approach in utilization of CBSE and SOSE. The tutorial will start with providing an overview of software architecture with emphasis on architecture modeling and analysis, including CBSE and SOSE techniques from software architecture perspective. Subsequently, the tutorial will present analyses of the two techniques from multiple perspectives, such as their correlation from software architecture perspective, quality attribute analysis in respective technique, advantages and disadvantages of the two techniques, the possible directions in the adaptation of the two techniques and an indication on how to combine the strengths of both techniques. During the tutorial, some industrial context examples will be presented to illustrate CBSE and SOSE approaches and their integration.
This paper describes PRIDE, an integrated development environment for efficient component-based software development of embedded systems. PRIDE uses reusable software components as the central development units, and as a means to support and aggregate various analysis and verification techniques throughout the whole lifecycle - from early specification to deployment and synthesis. This paper focuses on support provided by PRIDE for the modeling and analysis aspects of the development of embedded systems based on reusable software components.
In the last decade a large number of different software component models have been developed, with different aims and using different principles and technologies. This has resulted in a number of models which have many similarities, but also principal differences, and in many cases unclear concepts. Component-based development has not succeeded in providing standard principles, as has, for example, object-oriented development. In order to increase the understanding of the concepts, and to differentiate component models more easily, this paper identifies, discusses and characterises fundamental principles of component models, and provides a Component Model Classification Framework based on these principles. Further, the paper classifies a large number of component models using this framework.
Embedded Systems are the dominate type of computer systems today; they span a range from small systems that include a simple platform integrated with sensors and actuators, to large distributed systems consisting of hundreds, or possibly thousand, intensely interactive nodes. In recent years Software has become the most important part of Embedded Systems – it implements the complex system functionality, is a currier of the system integration, and it is enabler of important extra-functional system properties. In many aspects, software for Embedded Systems has reached functional complexity of general-purpose software but faces severe constraints. This special issue includes six research papers that address some of the mentioned challenges.
Software engineering (SE) conference in 1968, Doug Mc Ilroy introduced the concept of software components during his keynote speech, "Mass-Produced Software Components." That components hold such an esteemed place in SE history should come as no surprise: componentization is a fundamental engineering principle. Top-down approaches decompose large systems into smaller parts-components and bottom-up approaches compose smaller parts components into larger systems. Since 1968, components have played a role in both SE research and practice. For example, components have been an immanent part of software architecture from its early days.2 In 1998, the In ternational Conference on Software Engineering introduced component based software engineering (CBSE) as a specific area within SE at the first workshop on CBSE.
As component-based software engineering is growing and its usage expanding, more and more component models are developed. In this paper we present a survey of software component models in which models are described and classified respecting the classification framework for component models proposed by Crnković et. al. This framework specifies several groups of important principles and characteristics of component models: lifecycle, constructs, specification and management of extra-functional properties, and application domain. This paper gives examples three component models using the classification framework.
The Software Product Lines (SPL) paradigm has arisen for taking advantage of existing common aspects between different products, while also considering product-specific features. The architecture of a SPL comprises a model that will result in product architectures, and may include solutions leading to bad (architectural) design. One way to assess such design decisions is through the identification of architectural bad smells, which are properties that prejudice the overall software quality, but are not necessarily faulty or errant.Inthis paper, we conduct an exploratory study that aims at characterizing bad smells in the context of product line architectures. We analyzed an open source SPL project and extracted its architecture to investigate the occurrence or absence of four smells initially studied in single systems. In addition, we propose a smell specific to the SPL context and discuss possible causes and implications of having those smells in the architecture of a product line. The results indicate that the granularity of the SPL features may influence on the occurrence of smells.