CSS 422 - Software Architecture Flashcards
Software Architecture is
description of the subsystems or components of a software system and the relationships between them
A more formal description of Software Architecture is
Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution
What four common, recurring themes make up software architecture?
System
Structure
Environment
Stakeholder
System
A collection of componenets organized in specific ways to achieve specific functionality
Environment
A context or circumstance in which a software system is built and has a direct influence on its architecture
Structure
A set of elements that are grouped or organized together according to a guiding rule or principle
Stakeholder
A person or group of persons who has an interest or concern in a system and its success
An Architecture of a system is best represented as
structural details of the system.
Deployment architecture is strongly connect to the quality attributes of
scalabililty, performance, security, and interoperability
An architecture
Defines a structure
Picks a core set of elements
Caputures early design decisions
Manages stakeholder requiremenets
Influences the organizational structure
Is influenced by its environment
Documents the system
Conforms to a pattern
Architectural patterns
certain patterns and sets of styles for system architecture that have had success in practice
Examples of architectural patterns
client-server
pipes
filters
data-based architectures
Why create a formal Architecture
Every system already has an architecture, whether formal or not, so you can’t have a system without also having an architecture
documenting the architecture allows it to be shared
Makes changes and iterative development possible
Makes the system extensible and modifiable
Technical architect
Technical architect is concerned with the core technology used in an organization
Security architect
a Technical architect that tunes the security strategy used in applications to fit the organizations information security goals
Information architect
A technical architect that comes up with the architecture to make information available to/from applications in a way tha tfacilitates the organizations business goals
System architect
is worried about how the core system architecture maps to the software and hardware architecture and the various details of human interatctions with the components in the system
Enterprise architect
is concerned with how the different elements in an organization and their interplay is tuend twoards achieveing the goals of the organization in an efficient manner.
Software design
A blueprint of the details at the implementation level of the various subsystems and components that make up those subsystems
Modifiability
a software quality attribute
quality attribute
A measurable and testable property of a system which can be used to evaluate the performance of a system within its prescribed environment with respect to its nonfunctional aspects
nonfunctional requirements
global constraints that describe how a system should operate.
ex: things like speed, reliability, data integrity, etc.
The opposite of functional requirements like.
like: this needs to be able to access the database and pull back information on billing accounts
quality attributes
modifiability
testability
scalability
availability
security
deployability
modifiability
the ease with which changes can be made to a system and the flexibility with which the system adapts to such changes
testability
how much a software system is amenable to demonstrating its faults through testing
scalability
a system’s capacity to accommodate increasing workload on demand
performance
the amount of work accompmliished by a system using a given unit of computing resource. higher the work/unit ratio, the higher the performance
availability
the property of readiness of a software system to carry out its operations when the need arises
security
the degree of ability of a system to avoid damage to its data and logic from unauthenticated access
deployability
the degree of ease with which software can be taken from the development to the production environment
coupling
the degree of interdependence between software modules
high coupling means that the modules are closely connected and changes in one module may affect other modules
it can also be defined as the number of dependencies that modules share between them
cohesion
the degree to which elements within a module work teogether to fulfill a single, well-defined process
the degree to which the elements belong together
the aspects of modifiability
readability
modularity
reusability
maintainability
readability
the ease with which a program’s logic can be followed and understood