College research paper writers
This significantly reduces the specification burden.
But even assuming that an evolution style is available to an architect, the architect still has to define the evolution space, including the initial architecture, the target architecture, the intermediate architectures, the evolution transitions (and their 157 8 Conclusion decomposition into operators), and the candidate evolution paths. In our initial prototype tools, very little automation was available to support the definition of college research paper writers the evolution space. In subsequent work, we have demonstrated that much of this can be automated, at least in principle. The architect will still need to define the initial and target states, but if the evolution style provides an adequate palette of operators and specifies adequate college research paper writers constraints and evaluation functions to define what constitute a legal and high-quality evolution path, then an automated planner can generate evolution paths by composing these operators automatically, as explained in section 6. However, there are still unanswered questions about how this could be integrated with an architecture evolution tool in practice. Future work might be able to reduce the specification burden further, including the burden of defining evolution styles. For example, instead of requiring operators to be specified in some kind of code, it might be possible to support graphical specification of operators, or to infer operators from examples of architectural transformation.
Similarly, constraints must currently be specified in temporal logic, which may seem a bit arcane to practicing architects. But in the future, an intelligent user interface might allow architects to build constraints from a library of constraint templates capturing common classes of constraints such as ordering constraints, timing constraints, and integration constraints. The approach requires adequate tool support in order to be adopted for practical use, but such tool support does not yet exist.
Without good tools to provide support for constructing and analyzing evolution models, the framework we have defined is of little use. But while demonstrating the implementability of the approach in principle is one goal of this thesis work, actually producing a mature tool that could be readily adopted by practitioners is not. None of the prototype tools we have developed are sufficiently complete, usable, or mature that they could actually be adopted for use in a real, industrial-scale evolution project. This is not a limitation of our approach in principle, but it is a limitation of this thesis. Further tool development would be necessary to make the approach adoptable by practitioners. The empirical work justifying the applicability of this approach consists of just two case studies. I have given particularly careful attention to issues college research paper writers of reliability and validity so as to strengthen this claim. Even so, case studies have their limitations, and in attempting to generalize from the results of investigations of just two organizations, we can go only so far. Future empirical work on this kind of approach to software architecture evolution would be 158 8. A survey-based study (examining a statistical sample of many software organizations) or a multicase study (examining a number of different software organizations in some depth) might be particularly useful in this respect. There may be some kinds of software organizations for which our approach is less suitable. The two case studies featured in this dissertation were conducted at two very different software organizations. But they were similar in at least one important respect: both organizations featured an architecture group of significant size and maturity. The relevance of our approach to organizations where architecture is not formally practiced is unclear.
Reasoning at an architectural level allows us to model high-level concerns such as integration issues and evolution stages. Taking an architectural perspective also grants our approach a kind of generality that is usually not available to code-level approaches, which are frequently programming-language-specific. Code-level approaches tend to operate at a more limited scale. However, an architectural approach also carries with it certain limitations. One important limitation is that an architectural model is not necessarily tied to the reality of the software system.
That is, there can be problems of architecture conformance. In this section, I focus on a few major future areas of work where I believe a number of significant research challenges remain. In my estimation, each of the following veins is sufficiently rich to be potentially worthy of a PhD thesis itself! Formally, an evolution style is simply a collection of operators, constraints, and evaluation college research paper writers functions specialized to some domain. First, they unify the various evolution elements, relating operators and constraints and evaluation functions.
Second, they permit our approach to be specialized to particular domains, which we view as one of the key strengths of the approach. Finally, they help to justify the adoptability of the approach by reducing the burden of specifying evolution elements, since evolution styles provide a systematic way for evolution elements to be defined once but used many times. Flowever, evolution styles have not figured prominently in our empirical work or our tooling work to date. In our case studies and prototype development, we have college research paper writers examined the applicability and implementability of the individual elements of our approach—operators, constraints, and evaluation functions—but we have not specifically examined the usefulness of the evolution style concept for capturing domains of evolution. Aside from the need for further empirical and tooling work, however, there are more fundamental questions about evolution styles that need to be answered— questions which we have skirted by defining an evolution style as simply a collection of operators, constraints, and evaluation functions. How can we make use of multiple evolution styles in a single project? However, there are many good reasons one might want to combine multiple evolution styles. Consider a situation in which there are two evolution styles that are relevant to an evolution scenario. For example, if an evolution incorporates a client-server system evolving to a decentralized peer-to-peer model, as well as a SQL database being migrated to a cloud storage system such as Amazon S3 (so that any of the peers can access the data store), we might want to leverage two evolution styles: one for evolving a client-server system to a peer-to-peer system, and one for data migration. Scenarios analogous to this one arise often in heterogeneous systems in which different subsystems have different architectural styles. Another possibility is the definition of mix-in evolution styles that are designed specifically to supplement conventional evolution styles—for example, mix-in styles to support specialized analyses such as performance analysis. Supporting this sort of style composition intelligently is harder than it seems.
It might also need to enrich the architectural style used to define intermediate states, augmenting architectural element types with properties such as latency and throughput. Defining a system for composing evolution styles ad hoc in this way poses formidable research 160 8.