7 research outputs found
Working Notes from the 1992 AAAI Workshop on Automating Software Design. Theme: Domain Specific Software Design
The goal of this workshop is to identify different architectural approaches to building domain-specific software design systems and to explore issues unique to domain-specific (vs. general-purpose) software design. Some general issues that cut across the particular software design domain include: (1) knowledge representation, acquisition, and maintenance; (2) specialized software design techniques; and (3) user interaction and user interface
Feature-based methodology for supporting architecture refactoring and maintenance of long-life software systems
Zusammenfassung
Langlebige Software-Systeme durchlaufen viele bedeutende Veraenderungen im Laufe ihres Lebenszyklus,
um der Weiterentwicklung der Problemdomaenen zu folgen. Normalerweise ist es schwierig eine
Software-Systemarchitektur den schnellen Weiterentwicklungen einer Problemdomaene anzupassen und
mit der Zeit wird der Unterschied zwischen der Problemdomaene und der Software-Systemarchitektur
zu groß, um weitere Softwareentwicklung sinnvoll fortzufuehren. Fristgerechte Refactorings der Systemarchitektur
sind notwendig, um dieses Problem zu vermeiden.
Aufgrund des verhaeltnismaeßig hohen Gefahrenpotenzials und des zeitlich stark verzoegerten Nutzens
von Refactorings, werden diese Maßnahmen normalerweise bis zum letztmoeglichen Zeitpunkt hinausgeschoben.
In der Regel ist das Management abgeneigt Architektur-Refactorings zu akzeptieren,
außer diese sind absolut notwendig. Die bevorzugte Vorgehensweise ist, neue Systemmerkmale ad hoc
hinzuzufuegen und nach dem Motto ”Aendere nie etwas an einem funktionierenden System!” vorzugehen.
Letztlich ist das Ergebnis ein Architekturzerfall (Architekturdrift). Die Notwendigkeit kleiner
Refactoring-Schritte fuehrt zur Notwendigkeit des Architektur-Reengineerings. Im Gegensatz zum
Refactoring, das eine normale Entwicklungstaetigkeit darstellt, ist Reengineering eine Form der Software-
”Revolution”. Reengineeringprojekte sind sehr riskant und kostspielig. Der Nutzen des Reengineerings
ist normalerweise nicht so hoch wie erwartet. Wenn nach dem Reengineering schließlich die erforderlichen
Architekturaenderungen statt.nden, kann dies zu spaet sein. Trotz der enormen in das Projekt
gesteckten Bemuehungen erfuellen die Resultate des Reengineerings normalerweise nicht die Erwartungen.
Es kann passieren, dass sehr bald ein neues, kostspieliges Reengineering erforderlich wird.
In dieser Arbeit werden das Problem der Softwareevolution und der Zerfall von Softwarearchitekturen
behandelt. Eine Methode wird vorgestellt, welche die Softwareentwicklung in ihrer entscheidenden
Phase, dem Architekturrefactoring, unterstuetzt. Die Softwareentwicklung wird sowohl in technischer
als auch organisatorischer Hinsicht unterstuetzt. Diese Arbeit hat neue Techniken entwickelt,
welche die Reverse-Engineering-, Architecture-Recovery- und Architecture-Redesign-Taetigkeiten unterst
uetzen. Sie schlaegt auch Aenderungen des Softwareentwicklungsprozesses vor, die fristgerechte Architekturrefactorings
erzwingen koennen und damit die Notwendigkeit der Durchfuehrung eines Architektur-
Reengineerings vermeiden.
In dieser Arbeit wird die Merkmalmodellierung als Hauptinstrument verwendet. Merkmale werden
genutzt, um die Abstraktionsluecke zwischen den Anforderungen der Problemdomaene und der Systemarchitektur
zu fuellen. Merkmalmodelle werden auch als erster Grundriss fr die Wiederherstellung
der verlorenen Systemarchitektur genutzt. Merkmalbasierte Analysen fuehren zu diversen, nuetzlichen
Hinweisen fuer den erneuten Entwurf (das Re-Design) einer Architektur. Schließlich wird die Merkmalmodellierung
als Kommunikationsmittel zwischen unterschiedlichen Projektbeteiligten (Stakeholdern)
im Verlauf des Softwareengineering-Prozesses verwendet und auf dieser Grundlage wird ein neuer
Anforderungsde.nitionsprozess vorgeschlagen, der die erforderlichen Architekturrefactorings erzwingt.The long-life software systems withstand many significant changes throughout their life-cycle in order
to follow the evolution of the problem domains. Usually, the software system architecture can not
follow the rapid evolution of a problem domain and with time, the diversion of the architecture in
respect to the domain features becomes prohibiting for software evolution. For avoiding this problem,
periodical refactorings of the system architecture are required.
Usually, architecture refactorings are postponed until the very last moment, because of the relatively
high risk involved and the lack of short-term profit. As a rule, the management is unwilling to accept
architecture refactorings unless they become absolutely necessary. The preferred way of working is to
add new system features in an ad-hoc manner and to keep the rule ”Never touch a running system!”.
The final result is an architecture decay. The need of performing small refactoring activities turns into
need for architecture reengineering. In contrast to refactoring, which is a normal evolutionary activity,
reengineering is a kind of software ”revolution”. Reengineering projects are risky and expensive. The
effectiveness of reengineering is also usually not as high as expected. When finally after reengineering
the required architecture changes take place, it can be too late. Despite the enormous invested efforts,
the results of the reengineering usually do not satisfy the expectations. It might happen that very
soon a new expensive reengineering is required.
This thesis deals with the problem of software evolution and the decay of software architectures.
It presents a method, which assists software evolution in its crucial part, the architecture refactoring.
The assistance is performed for both technical and organizational aspects of the software evolution.
The thesis provides new techniques for supporting reverse engineering, architecture recovery and redesigning
activities. It also proposes changes to the software engineering process, which can force
timely architecture refactorings and thus avoid the need of performing architecture reengineering.
For the work in this thesis feature modeling is utilized as a main asset. Features are used to fill the
abstraction gap between domain requirements and system architecture. Feature models are also used
as an outline for recovering of lost system architectures. Through feature-based analyses a number of
useful hints and clues for architecture redesign are produced. Finally, feature modeling is used as a
communication between different stakeholders of the software engineering process and on this basis a
new requirements engineering process is proposed, which forces the needed architecture refactorings
Proceedings of the Workshop on Change of Representation and Problem Reformulation
The proceedings of the third Workshop on Change of representation and Problem Reformulation is presented. In contrast to the first two workshops, this workshop was focused on analytic or knowledge-based approaches, as opposed to statistical or empirical approaches called 'constructive induction'. The organizing committee believes that there is a potential for combining analytic and inductive approaches at a future date. However, it became apparent at the previous two workshops that the communities pursuing these different approaches are currently interested in largely non-overlapping issues. The constructive induction community has been holding its own workshops, principally in conjunction with the machine learning conference. While this workshop is more focused on analytic approaches, the organizing committee has made an effort to include more application domains. We have greatly expanded from the origins in the machine learning community. Participants in this workshop come from the full spectrum of AI application domains including planning, qualitative physics, software engineering, knowledge representation, and machine learning