122 research outputs found
(SAKM) Software Architecture Knowledge Management and its recent Practices, Models, Tools and Challenges
Management of knowledge for software architecture means to capture convenient experience and then translating it in generalized architectural knowledge. For refining the organizational architectural competences, architectural knowledge management is very much important. Architectural knowledge is valuable in the Software Architecture design process. This knowledge will help the stakeholders for communication in different phases of software development life cycle(SDLC). Properly managing the architectural knowledge is very much important as it is progressively more regarded the same as an organizational positive feature and that is why so many researchers around the world are proposing tools, methods, models and different frameworks for the effective knowledgemanagement [1]. This article contributes in exploring current work in field of software architectural knowledge management (AKM) from 2010 to 2017. This article highlights recent architectural AKM challenges and issues which are still not settled and here we also discuss different AKM tools, practicesand models
A Value-Driven Framework for Software Architecture
Software that is not aligned with the business values of the organization for which it
was developed does not entirely fulfill its raison d’etre. Business values represent what
is important in a company, or organization, and should influence the overall software
system behavior, contributing to the overall success of the organization. However, approaches
to derive a software architecture considering the business values exchanged
between an organization and its market players are lacking. Our quest is to address this
problem and investigate how to derive value-centered architectural models systematically.
We used the Technology Research method to address this PhD research question.
This methodological approach proposes three steps: problem analysis, innovation, and
validation. The problem analysis was performed using systematic studies of the literature
to obtain full coverage on the main themes of this work, particularly, business value
modeling, software architecture methods, and software architecture derivation methods.
Next, the innovation step was accomplished by creating a framework for the derivation
of a software reference architecture model considering an organization’s business values.
The resulting framework is composed of three core modules: Business Value Modeling,
Agile Reference Architecture Modeling, and Goal-Driven SOA Architecture Modeling.
While the Business value modeling module focuses on building a stakeholder-centric
business specification, the Agile Reference Architecture Modeling and the Goal-Driven
SOA Architecture Modeling modules concentrate on generating a software reference architecture
aligned with the business value specification. Finally, the validation part of
our framework is achieved through proof-of-concept prototypes for three new domain
specific languages, case studies, and quasi-experiments, including a family of controlled
experiments. The findings from our research show that the complexity and lack of rigor
in the existing approaches to represent business values can be addressed by an early requirements
specification method that represents the value exchanges of a business. Also,
by using sophisticated model-driven engineering techniques (e.g., metamodels, model
transformations, and model transformation languages), it was possible to obtain source
generators to derive a software architecture model based on early requirements value
models, while assuring traceability throughout the architectural derivation process. In conclusion, despite using sophisticated techniques, the derivation process of a software
reference architecture is helped by simple to use methods supported by black box
transformations and guidelines that facilitate the activities for the less experienced software
architects. The experimental validation process used confirmed that our framework
is feasible and perceived as easy to use and useful, also indicating that the participants
of the experiments intend to use it in the future
Assisting software architects in architectural decision-making using Quark
Non-Functional Requirements (NFRs) and constraints are among the principal drivers of architectural decision-making. NFRs are improved or damaged by architectural decisions (ADs), while constraints directly include or exclude parts of the architecture (e.g., logical components or technologies). We may determine the impact of an AD, or which parts of the architecture are affected by a constraint, but at the end it is hard to know if we are respecting the NFRs and the imposed constraints with all the ADs made. In the usual approach, architects use their own experience to produce software architectures
that comply with the NFRs and imposed constraints, but at the end, especially for crucial decisions, the architect has to deal with complex trade-offs between NFRs and juggle with possible incompatibilities raised by the imposed constraints. In this paper we present Quark, a method to assist software architects in architectural decision-making, and the conceptualization of the relationship between NFRs and ADs defined in Arteon, an ontology to represent and manage architectural knowledge. Finally, we provide an overview of the Quark and Arteon implementation, the ArchiTech tool.Peer ReviewedPostprint (published version
Quality Goal Oriented Architectural Design and Traceability for Evolvable Software Systems
Softwaresysteme werden heute z.B. aufgrund sich ändernder Geschäftsprozesse
oder Technologien mit häufigen Veränderungen konfrontiert. Die Software und
speziell ihre Architektur muss diese Ă„nderungen zur dauerhaften Nutzbarkeit
ermöglichen.Während der Software-Evolution können Änderungen zu einer
Verschlechterung der Architektur fĂĽhren, der Architekturerosion. Dies
erschwert oder verhindert weitere Ă„nderungen wegen Inkonsistenz oder
fehlendem Programmverstehen. Zur Erosionsvermeidung müssen Qualitätsziele
wie Weiterentwickelbarkeit, Performanz oder Usability sowie die
Nachvollziehbarkeit von Architekturentwurfsentscheidungen berĂĽcksichtigt
werden. Dies wird jedoch oft vernachlässigt.Existierende Entwurfsmethoden
unterstützen den Übergang von Qualitätzielen zu geeigneten
Architekturlösungen nur unzureichend aufgrund einer Lücke zwischen Methoden
des Requirements Engineering und des Architekturentwurfs. Insbesondere gilt
dies fĂĽr Weiterentwickelbarkeit und die Nachvollziehbarkeit von
Entwurfsentscheidungen durch explizite Modellabhängigkeiten.Diese Arbeit
präsentiert ein neues Konzept, genannt Goal Solution Scheme, das
Qualitätsziele über Architekturprinzipien auf Lösungsinstrumente durch
explizite Abhängigkeiten abbildet. Es hilft somit, Architekturlösungen
entsprechend ihrem Einfluss auf Qualitätsziele auszuwählen. Das Schema wird
speziell hinsichtlich Weiterentwickelbarkeit diskutiert und ist in ein
zielorientiertes Vorgehen eingebettet, das etablierte Methoden und Konzepte
des Requirements Engineering und Architekturentwurfs verbessert und
integriert. Dies wird ergänzt durch ein Traceability-Konzept, welches einen
regelbasierten Ansatz mit Techniken des Information Retrieval verbindet.
Dies ermöglicht eine (halb-) automatische Erstellung von Traceability Links
mit spezifischen Linktypen und Attributen fĂĽr eine reichhaltige Semantik
sowie mit hoher Genauigkeit und Trefferquote.Die Realisierbarkeit des
Ansatzes wird an einer Fallstudie einer Software fĂĽr mobile Serviceroboter
gezeigt. Das Werkzeug EMFTrace wurde als eine erweiterbare Plattform
basierend auf Eclipse-Technologie implementiert, um die Anwendbarkeit der
Konzepte zu zeigen. Es integriert Entwurfsmodelle von externen CASE-Tools
mittels XML-Technologie in einem gemeinsamen Modell-Repository, wendet
Regeln zur Linkerstellung an und bietet Validierungsfunktionen fĂĽr Regeln
und Links.Today software systems are frequently faced with demands for changes, for
example, due to changing business processes or technologies. The software
and especially its architecture has to cope with those frequent changes to
permanently remain usable.During software evolution changes can lead to a
deterioration of the structure of software architectures called
architectural erosion, which hampers or even inhibits further changes
because of inconsistencies or lacking program comprehension. To support
changes and avoid erosion, especially quality goals, such as evolvability,
performance, or usability, and the traceability of design decisions have to
be considered during architectural design. This however often is
neglected.Existing design methods do not sufficiently support the
transition from the quality goals to appropriate architectural solutions
because there is still a gap between requirements engineering and
architectural design methods. Particularly support is lacking for the goal
evolvability and for the traceability of design decisions by explicit model
dependencies.This thesis presents a new concept called Goal Solution
Scheme, which provides a mapping from goals via architectural principles to
solution instruments by explicit dependencies. Thus it helps to select
appropriate architectural solutions according to their influence on quality
goals. The scheme is discussed especially regarding evolvability, and it is
embedded in a goal-oriented architectural design method, which enhances and
integrates established methods and concepts from requirements engineering
as well as architectural design. This is supplemented by a traceability
concept, which combines a rule-based approach with information retrieval
techniques for a (semi-) automated establishment of links with specific
link types and attributes for rich semantics and a high precision and
recall.The feasibility of the design approach has been evaluated in a case
study of a software platform for mobile robots. A prototype tool suite
called EMFTrace was implemented as an extensible platform based on Eclipse
technology to show the practicability of the thesis' concept. It integrates
design models from external CASE tools in a joint model repository by means
of XML technology, applies rules for link establishment, and provides
validation capabilities for rules and links
Preserving the Quality of Architectural Tactics in Source Code
In any complex software system, strong interdependencies exist between requirements and software architecture. Requirements drive architectural choices while also being constrained by the existing architecture and by what is economically feasible. This makes it advisable to concurrently specify the requirements, to devise and compare alternative architectural design solutions, and ultimately to make a series of design decisions in order to satisfy each of the quality concerns.
Unfortunately, anecdotal evidence has shown that architectural knowledge tends to be tacit in nature, stored in the heads of people, and lost over time. Therefore, developers often lack comprehensive knowledge of underlying architectural design decisions and inadvertently degrade the quality of the architecture while performing maintenance activities. In practice, this problem can be addressed through preserving the relationships between the requirements, architectural design decisions and their implementations in the source code, and then using this information to keep developers aware of critical architectural aspects of the code.
This dissertation presents a novel approach that utilizes machine learning techniques to recover and preserve the relationships between architecturally significant requirements, architectural decisions and their realizations in the implemented code.
Our approach for recovering architectural decisions includes the two primary stages of training and classification. In the first stage, the classifier is trained using code snippets of different architectural decisions collected from various software systems. During this phase, the classifier learns the terms that developers typically use to implement each architectural decision. These ``indicator terms\u27\u27 represent method names, variable names, comments, or the development APIs that developers inevitably use to implement various architectural decisions. A probabilistic weight is then computed for each potential indicator term with respect to each type of architectural decision. The weight estimates how strongly an indicator term represents a specific architectural tactics/decisions. For example, a term such as \emph{pulse} is highly representative of the heartbeat tactic but occurs infrequently in the authentication. After learning the indicator terms, the classifier can compute the likelihood that any given source file implements a specific architectural decision.
The classifier was evaluated through several different experiments including classical cross-validation over code snippets of 50 open source projects and on the entire source code of a large scale software system. Results showed that classifier can reliably recognize a wide range of architectural decisions.
The technique introduced in this dissertation is used to develop the Archie tool suite. Archie is a plug-in for Eclipse and is designed to detect wide range of architectural design decisions in the code and to protect them from potential degradation during maintenance activities. It has several features for performing change impact analysis of architectural concerns at both the code and design level and proactively keep developers informed of underlying architectural decisions during maintenance activities.
Archie is at the stage of technology transfer at the US Department of Homeland Security where it is purely used to detect and monitor security choices. Furthermore, this outcome is integrated into the Department of Homeland Security\u27s Software Assurance Market Place (SWAMP) to advance research and development of secure software systems
Techniques and Practices for Software Architecture Work in Agile Software Development
Since the publishing of Agile Manifesto in 2001, the agile software development has taken the world by storm. Agile software development does not emphasize the importance of software architecture, even though software architecture is often seen as a key factor for achieving the quality goals set for the software system. It has been even said that agile software development and software architecture are a clash of two cultures.In many software projects there is no need to consider software architecture anymore. For example, when designing a mobile application, the ecosystem forces the developer to use certain architecture style provided by the platform. In web development ready-made frameworks and project templates are available offering complete software architecture designs for the application developer.There are still domains and systems where careful architecture design is needed. When developing complex systems or systems with a long lifecycle, diligent software architecture design is a key to avoid massive rework during the development. It cannot be a coincidence that companies developing these kinds of systems struggle with agile software development the most.On the one hand, the goal of this thesis was to study software architecture practices used in agile software development in the industry. On the other hand, the goal was to develop new methods and techniques to support incremental software architecture working practices which can be aligned with agile methods such as Scrum. The study applied case study, interviews and design science as the main research methods.The results show that there are four main ways to carry out software architecture work while using agile methods. Basing on this result, models for aligning software architec-ture knowledge management were developed. These models can be used as guidelines for selecting the appropriate software architecture practices in an organization.As a part of the research work, an architecture knowledge repository was developed for sharing the knowledge in agile projects and for automatic software architecture document generation. Additionally, the results of this study show that by taking a decision-centric approach to software architecture evaluation, the evaluation method can be lightweight enough to make incremental evaluation a viable option. Similarly, existing software architecture evaluation methods can be boosted to fit agile software development by utilizing domain knowledge
- …