Architectural Decision
   HOME





Architectural Decision
In software engineering and software architecture design, architectural decisions are design decisions that address architecturally significant requirements; they are perceived as hard to make and/or costly to change. Characteristics Architectural decisions influence and impact the non-functional characteristics of a system. Each architectural decision describes a concrete, architecturally significant design issue (a.k.a. design problem, decision required) for which several potential solutions (a.k.a. options, alternatives) exist. An architectural decision captures the result of a conscious, often collaborative option selection process and provides design rationale for the decision making outcome, e.g., by referencing one or more of the quality attributes addressed by the architectural decision and answering "why" questions about the design and option selection. Architectural decisions concern a software system as a whole, or one or more of the core components of such a system. Typ ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Software Architecture
Software architecture is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The ''architecture'' of a software system is a metaphor, analogous to the architecture of a building. It functions as the blueprints for the system and the development project, which project management can later use to extrapolate the tasks necessary to be executed by the teams and people involved. Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices include specific structural options from possibilities in Software design, the design of the software. There are two fundamental laws in software architecture: # Everything is a trade-off # "Why is more important than how" "Architectural Kata" is a teamwork which can be used to produce an ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Code Reviews
Code review (sometimes referred to as peer review) is a software quality assurance activity in which one or more people examine the source code of a computer program, either after implementation or during the development process. The persons performing the checking, excluding the author, are called "reviewers". At least one reviewer must not be the code's author. Code review differs from related software quality assurance techniques like static code analysis, self-checks, testing, and pair programming. Static analysis relies primarily on automated tools, self-checks involve only the author, testing requires code execution, and pair programming is performed continuously during development rather than as a separate step. Goal Although direct discovery of quality problems is often the main goal, code reviews are usually performed to reach a combination of goals: * ''Improving code quality'' Improve internal code quality and maintainability through better readability, uniformity ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Knowledge Management
Knowledge management (KM) is the set of procedures for producing, disseminating, utilizing, and overseeing an organization's knowledge and data. It alludes to a multidisciplinary strategy that maximizes knowledge utilization to accomplish organizational goals. Courses in business administration, information systems, management, libraries, and information science are all part of knowledge management, a discipline that has been around since 1991. Information and media, computer science, public health, and public policy are some of the other disciplines that may contribute to KM research. Numerous academic institutions provide master's degrees specifically focused on knowledge management. As a component of their IT, human resource management, or business strategy departments, many large corporations, government agencies, and nonprofit organizations have resources devoted to internal knowledge management initiatives. These organizations receive KM guidance from a number of consulting ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Design Rationale
A design rationale is an explicit documentation of the reasons behind decisions made when designing a system or artifact. As initially developed by W.R. Kunz and Horst Rittel, design rationale seeks to provide argumentation-based structure to the political, collaborative process of addressing wicked problems. Overview A design rationale is the explicit listing of decisions made during a design process, and the reasons why those decisions were made.Jarczyk, Alex P.; Löffler, Peter; Shipman III, Frank M. (1992), "Design Rationale for Software Engineering: A Survey", ''25th Hawaii International Conference on System Sciences'', 2, pp. 577-586 Its primary goal is to support designers by providing a means to record and communicate the argumentation and reasoning behind the design process.Horner, J.; Atwood, M.E. (2006), "Effective Design Rationale: Understanding the Barriers", in Dutoit, A.H.; McCall, R.; Mistrík, I. et al., Rationale Management in Software Engineering, Spr ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Attribute-driven Design
Attribute-driven design (also called ADD or Attribute-driven design method) is a methodology to create software architectures that takes into account the quality attributes of the software. It was previously known as the Architecture Based Design Method (or ABD), but due to trademark issues the name was changed to Attribute-driven design around 2001. The attribute-driven design method In the book ''Software architecture in practice'' the authors describe ADD as an iterative method that, at each iteration, helps the architect to do the following steps: * Choose a part of the system to design. * Marshal all the architecturally significant requirements for the selected part. This means that you select all quality attributes and business goals that could affect the architecture of this phase. * Create an architecture for the selected part that meets the selected architecturally significant requirements and test this design. Required input ADD can only be started successfully when ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Architectural Pattern (computer Science)
Software architecture pattern is a reusable, proven solution to a specific, recurring problem focused on architectural design challenges, which can be applied within various architectural styles. Examples Some examples of architectural patterns: * Publish–subscribe pattern * Message broker See also * List of software architecture styles and patterns * Process Driven Messaging Service * Enterprise architecture Enterprise architecture (EA) is a business function concerned with the structures and behaviours of a business, especially business roles and processes that create and use business data. The international definition according to the Federation of ... * Common layers in an information system logical architecture References Bibliography * * * {{Design Patterns patterns Software design patterns ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Group Polarization
In social psychology, group polarization refers to the tendency for a group to make decisions that are more extreme than the initial inclination of its members. These more extreme decisions are towards greater risk if individuals' initial tendencies are to be risky and towards greater caution if individuals' initial tendencies are to be cautious. The phenomenon also holds that a group's attitude toward a situation may change in the sense that the individuals' initial attitudes have strengthened and intensified after group discussion, a phenomenon known as attitude polarization. Overview Group polarization is an important phenomenon in social psychology and is observable in many social contexts. For example, a group of women who hold moderately feminist views tend to demonstrate heightened pro-feminist beliefs following group discussion. Similarly, studies have shown that after deliberating together, mock jury members often decided on punitive damage awards that were either larger ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Groupthink
Groupthink is a psychological phenomenon that occurs within a group of people in which the desire for harmony or conformity in the group results in an irrational or dysfunctional decision-making outcome. Cohesiveness, or the desire for cohesiveness, in a group may produce a tendency among its members to agree at all costs. This causes the group to minimize conflict and reach a consensus decision without critical evaluation. Groupthink is a construct of social psychology but has an extensive reach and influences literature in the fields of communication studies, political science, management, and organizational theory, as well as important aspects of deviant religious cult behaviour. Overview Groupthink is sometimes stated to occur (more broadly) within natural groups within the community, for example to explain the lifelong different mindsets of those with differing political views (such as "conservatism" and "liberalism" in the U.S. political context or the purported benefits of ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Software Evolution
Software evolution is the continual development of a piece of software after its initial release to address changing stakeholder and/or market requirements. Software evolution is important because organizations invest large amounts of money in their software and are completely dependent on this software. Software evolution helps software adapt to changing businesses requirements, fix defects, and integrate with other changing systems in a software system environment. General introduction Fred Brooks, in his key book ''The Mythical Man-Month'', states that over 90% of the costs of a typical system arise in the maintenance phase, and that any successful piece of software will inevitably be maintained. In fact, Agile methods stem from maintenance-like activities in and around web based technologies, where the bulk of the capability comes from frameworks and standards. Software maintenance addresses bug fixes and minor enhancements, while software evolution focuses on adaptation and ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Software Design
Software design is the process of conceptualizing how a software system will work before it is implemented or modified. Software design also refers to the direct result of the design process the concepts of how the software will work which consists of both design documentation and undocumented concepts. Software design usually is directed by goals for the resulting system and involves problem-solving and planning including both high-level software architecture and low-level component and algorithm design. In terms of the waterfall development process, software design is the activity of following requirements specification and before coding. General process The design process enables a designer to model various aspects of a software system before it exists. Creativity, past experience, a sense of what makes "good" software, and a commitment to quality are success factors for a competent design. However, the design process is not always a straightforward procedure ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Architecturally Significant Requirements
Architecturally significant requirements are those requirements that have a measurable effect on a computer system’s architecture. This can comprise both software and hardware requirements. They are a subset of requirements that affect a system architecture in measurably identifiable ways. Relation to non-functional requirements and quality attributes Architecturally significant requirements were only recently, as of 2016, recognized as an important notion. When discussing architecture, the terms non-functional requirements or quality attributes are often used. However, recent empirical studies show that, for a software system, not all non-functional requirements affect its architecture, and functional requirements can also affect its architecture. This research suggests distinguishing which software requirements are architecturally significant and whether they are functional when discussing software architecture is worth it. Characteristics Architecturally significant requir ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Dialogue Mapping
The issue-based information system (IBIS) is an argumentation-based approach to clarifying wicked problems—complex, ill-defined problems that involve multiple Stakeholder (corporate), stakeholders. Diagrammatic visualization using IBIS notation is often called issue mapping. IBIS was invented by Werner Kunz and Horst Rittel in the 1960s. According to Kunz and Rittel, "Issue-Based Information Systems (IBIS) are meant to support coordination and planning of political decision processes. IBIS guides the Problem finding, identification, Problem shaping, structuring, and Problem solving, settling of issues raised by problem-solving groups, and provides information pertinent to the discourse." Subsequently, the understanding of planning and design as a process of argumentation (of the designer with himself or with others) has led to the use of IBIS in design rationale, Originally presented to the ACADIA '88 Conference, Association for Computer Aided Design in Architecture, Universit ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]