Guideliness for Identifying Obstacles When Composing Distributed Systems from Components [chapter]

Mehmet Akşit, Lodewijk Bergmans
2002 Software Architectures and Component Technology  
Component-oriented programming enables software engineers to implement complex applications from a set of pre-defined components. Although this technique has several advantages, experiences show that effective composition of components remains a difficult task. This is especially true if the software system is physically distributed. This chapter provides a set of guidelines to identify the obstacles that software engineers may experience while designing distributed systems using the current
more » ... ponent technology. To this aim, the computer science domain is divided into several sub-domains, and each subdomain is described using its important aspects. Further, each aspect is analyzed with respect to the current component technology. This analysis helps software engineers to identify the possible obstacles for each aspect of a sub-domain. The chapter concludes with references to the relevant research activities that are presented in this book. Software applications, integration and specialization of components Distributed services Available middleware technology (CORBA and WW) and networks Distributed applications, e.g. in education, healthcare, commerce GUIDELINES FOR IDENTFYING OBSTACLES 3 required by most applications likely to be installed on the middleware. Accordingly, the middleware system should provide these services. The Obstacles Caused by Complexity and Evolution of Applications Unfortunately, complexity and evolution of applications make designing distributed applications a difficult task. Complexity may hinder a proper decomposition of the software systems into autonomous modules. Moreover, some aspects of the applications may not be expressed sufficiently by the adopted design and/or language models. We term the first problem as the decomposition problem and the latter as the lack of expression problem. We observe the following three affects of evolution: Firstly, the application domain of the middleware technology grows steadily. For instance, nomadic and agent-based computing are some examples of new developments in the area of distributed systems. These new applications generally require extensions to the current middleware services. Secondly, demands for extensions to existing services require modifications to middleware. For example, most business applications today require support for flexible transactions, whereas current middleware systems generally provide strict serialization and recovery. Finally, it is becoming more and more common that middleware systems offer services of different quality. These, the so-called quality of services can be defined in terms of various parameters such as performance, reliability, and security. The users of a system can be allowed to select the required quality of a service with respect to a certain cost. The middleware designers may attempt to solve the above-mentioned problems by implementing a dedicated service for each particular service demand. Since demands are evolving and diverse, this would require continuous implementations of many services, which is unfeasible. Instead of implementing a dedicated set of application services, it may be more feasible to compose application services from simpler components that correspond to the fundamental aspects of the application being designed. Obviously component composition here plays a major role. The difficulties that the designers may experience in composing components are termed as the composition problem.
doi:10.1007/978-1-4615-0883-0_2 fatcat:2ab7bfst2rd3rbvisvygnrtyzq