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]   |
|
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]   |
|
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]   |
|
Solution Architecture
Solution architecture is a term used in information technology with various definitions, such as "a description of a discrete and focused business operation or activity and how IS/ IT supports that operation". Definitions The Open Group's definition of solution architecture, as provided above, is accompanied by the following three from Scaled Agile, Gartner and Greefhorst/Proper. The Open Group does not recognize the role "solution architect" in its TOGAF skills framework; on the other hand, Glassdoor advertised 55,000 Solution Architect roles in August 2020. * Scaled agile (2020): ''Solution Architect/Engineering is responsible for defining and communicating a shared technical and architectural vision across a "Solution Train" to help ensure the system or Solution under development is fit for its intended purpose.'' * Gartner (2013): ''A solution architecture (SA) is an architectural description of a specific solution. SAs combine guidance from different enterprise architectur ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Requirements Engineering
Requirements engineering (RE) is the process of defining, documenting, and maintaining requirements in the engineering design process. It is a common role in systems engineering and software engineering. The first use of the term ''requirements engineering'' was probably in 1964 in the conference paper "Maintenance, Maintainability, and System Requirements Engineering", but it did not come into general use until the late 1990s with the publication of an IEEE Computer Society tutorial in March 1997 and the establishment of a conference series on requirements engineering that has evolved into the International Requirements Engineering Conference. In the waterfall model, requirements engineering is presented as the first phase of the development process. Later development methods, including the Rational Unified Process (RUP) for software, assume that requirements engineering continues through a system's lifetime. Requirements management, which is a sub-function of Systems En ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Non-functional Requirement
In systems engineering and requirements engineering, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted with functional requirements that define specific behavior or functions. The plan for implementing ''functional'' requirements is detailed in the system ''design''. The plan for implementing ''non-functional'' requirements is detailed in the system ''architecture'', because they are usually architecturally significant requirements. In software architecture, non-functional requirements are known as "architectural characteristics". Note that synchronous communication between software architectural components entangles them, and they must share the same architectural characteristics. Definition Broadly, functional requirements define what a system is supposed to ''do'' and non-functional requirements define how a system is supposed to ''be''. Func ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
List Of System Quality Attributes
Within systems engineering, quality attributes are realized non-functional requirements used to evaluate the performance of a system. These are sometimes named architecture characteristics, or "ilities" after the suffix many of the words share. They are usually architecturally significant requirements that require architects' attention. In software architecture, these attributed are known as "architectural characteristic" or non-functional requirements. Note that it's software architects' responsibility to match these attributes with business requirements and user requirements. Note that synchronous communication between software architectural components, entangles them and they must share the same architectural characteristics. Quality attributes Notable quality attributes include: * accessibility * accountability * accuracy * adaptability * administrability * affordability * agility * auditability * autonomy * availability * compatibility * composability * con ... [...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
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]   |
|
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]   |
|
Technical Debt
In software development and other information technology fields, technical debt (also known as design debt or code debt) refers to the implied cost of additional work in the future resulting from choosing an expedient solution over a more robust one. While technical debt can accelerate development in the short term, it may increase future costs and complexity if left unresolved. Analogous to monetary debt, technical debt can accumulate "interest" over time, making future changes more difficult and costly. Properly managing this debt is essential for maintaining software quality and long-term sustainability. In some cases, taking on technical debt can be a strategic choice to meet immediate goals, such as delivering a proof-of-concept or a quick release. However, failure to prioritize and address the debt can result in reduced maintainability, increased development costs, and risks to production systems. Technical debt encompasses various design and implementation decisions that ... [...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]   |
|
Software Requirement
In engineering, a requirement is a condition that must be satisfied for the output of a work effort to be acceptable. It is an explicit, objective, clear and often quantitative description of a condition to be satisfied by a material, design, product, or service. A specification or spec is a set of requirements that is typically used by developers in the design stage of product development and by testers in their verification process. With iterative and incremental development such as agile software development, requirements are developed in parallel with design and implementation. With the waterfall model, requirements are completed before design or implementation start. Requirements are used in many engineering fields including engineering design, system engineering, software engineering, enterprise engineering, product development, and process optimization. Requirement is a relatively broad concept that can describe any necessary or desired function, attribute, capability, ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |