Websites to type papers
How can an operator specification such as the one shown in figure 1 on page 15 be automatically converted into a PDDL action? How can a constraint written in our extended temporal logic be realized in PDDL? And perhaps most difficult, how can an evaluation function, defined in a general-purpose programming language, be translated into a PDDL metric?
But even so, automating the translation of an architecture evolution scenario into a planning problem would remain a websites to type papers formidable research challenge. How can evolution styles be incorporated into an automated-planning approach? One concept that was not examined in the work in section 6. If we take an automated-planning approach, can we use the idea of evolution styles to facilitate reuse of portions of planning specifications within domains of evolution? The obvious idea is to equate PDDL domain files with evolution styles and PDDL problem files with individual evolution scenarios. We have focused on automated planning using PDDL as a method for automatically generating evolution paths. This was a natural choice, given the straightforward correspondence between the architecture evolution problem and the planning problem. Other approaches not yet explored, websites to type papers such as constraint satisfaction or techniques from operations research, might be fruitful avenues for exploration. But is there anything fundamentally different about specifying architecture evolution operators, as opposed to other kinds of architectural transformation? There are a variety of subfields of software architecture research where specifying operators is useful: run-time adaptation, architecture differencing and merging, and model-driven architecture, for example. But there has been little work on unifying or distinguishing these different approaches to architecture transformation. Or are there fundamental reasons that different fields of research and practice require their own formalisms? The question of what approaches exist to support representation of software architecture transformations in general is quite different from the question that these existing reviews have examined. Based on the answers to the first two questions in this list, it should be possible to define a set of requirements for such a specification language and to design a language that meets a wider range of needs than the ad hoc operator specification language described in section 2. A little debt speeds development so long as it is paid back promptly with a rewrite. Every minute spent on not-quite-right code counts as interest on that debt. Technical debt is often thought of as something negative, something to be avoided— a way of understanding the chaotic state into which some systems fall. In this sense, technical debt can be understood as a cause of evolution. When time is of the essence, favoring expediency at the expense of architectural quality may be exactly the right choice—provided that the technical debt is promptly repaid. This suggests the possibility of evaluation functions to analyze technical debt. An architect could model two potential paths—one in which a feature is implemented slowly and carefully, and another in which the feature is implemented as expeditiously as possible and problems of architectural quality are addressed later—and explore trade-offs between them. How can we specify evaluation functions to analyze technical debt? Technical debt is often referenced as a metaphor, but it is seldom quantified and formally evaluated. Can we define technical debt in terms of the properties and architectural structures present in an evolution path?
What are the right abstractions and models for reasoning about 170 8. Can we develop a general, broadly applicable theory of technical debt? Can we create an evolution websites to type papers style for technical debt analysis? How can technical debt be managed in the presence of uncertainty? The initial and target states are known with perfect certainty, as are the effects of operators, and it is assumed that an architect will be able to carry out an evolution path without deviation or misadventure.
In reality, of course, there are all kinds of uncertainties and risks in any major evolution effort. To take a concrete example, an evolution effort websites to type papers may have a dependency on a system with which it is supposed to integrate, and the date on which that system is to be delivered is uncertain.
But from a modeling perspective, we can abstractly think of them all as instances of something more general: modifications to the architectural model that may occur nondeterministically at certain points in an evolution. By thinking about the uncertainty problem in this very abstract way, we can gain significant generality (in terms of the kinds of uncertainty we can address). With this in mind, I propose that we add uncertainty to our model through the introduction of pseudo-operators that may occur nondeterministically at various points in an evolution path.
Just like regular operators, pseudo-operators are defined by the evolution style designer and comprise the same basic parts: a definition of their preconditions, a specification of their architectural effects, and some analytical properties. Unlike operators, however, which represent tasks for an engineering team to carry out, pseudo-operators occur nondeterministically. Whenever the preconditions of a pseudo-operator are met, that pseudo-operator occurs randomly with some probability that is defined as part of the pseudo-operator specification. Pseudo-operators can be conceived as operators that are applied by the environment and are beyond the control of the people carrying out the evolution. Instead, an evolution plan is a strategy or policy that defines, for any possible evolution state, what operator we should apply next to optimize our expected outcome. Observe the similarities to Markov decision processes, which also have as their solution a policy that determines, for any state, which action a decision maker should select. In this case, we can introduce an architecture recovery operation that transforms the architectural model. In this case, an operator may be followed by a pseudo-operator that transforms the architectural model. This property could then be used as a precondition for other operators that may rely on that resource. I believe an approach like this one is promising because it is simple, general, and easy to model.
But this is just one possible way of modeling uncertainty, which I present in the interest of stimulating future research.
Many other approaches are also possible and worthy of investigation. As a result, the exact set of questions cannot be known in advance. Rather, this protocol provides guidance on the overall form of the interview, the topics to be covered, and examples of key questions.