1/36
A comprehensive set of Q&A flashcards covering key concepts from the Week 4 Software Architecture notes.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
What is software architecture?
The high-level structures of a software system and the discipline of creating such structures, including decisions about the organization of the system, its components and their relationships, and the design principles guiding its behavior.
What are the factors of software architecture design?
A plan or specification for construction of the system; quality attributes; IT environment; human dynamics; and business strategy.
Name some quality attributes of software architecture.
Correctness, reliability, adequacy, learnability, maintainability, readability, testability, efficiency, and portability.
What is IT Environment?
An integrated collection of technology components that serves the needs of users and the owner of the system.
What is Human Dynamic in software architecture?
A team-oriented activity involving engineers, developers, business analysts, domain experts, data/infrastructure architects, project managers, and other stakeholders.
What does Business Strategy mean in this context?
The actions and decisions a company takes to reach business goals and stay competitive.
What is the purpose of Software Design?
To provide a design plan that describes the elements of a system, how they fit and work together to fulfill the system's requirements.
What are the objectives of having a design plan?
To negotiate system requirements, set expectations with customers, marketing, and management; act as a blueprint during development; guide implementation tasks.
What are the Goals of Architecture?
Expose the structure of the system but hide its implementation details; realize all use-cases and scenarios; address stakeholder requirements; handle functional and quality requirements; reduce ownership and improve market position; improve quality and functionality; improve external confidence.
Name a limitation of software architecture regarding representation.
Lack of tools and standardized ways to represent architecture.
Name a limitation related to analysis.
Lack of analysis methods to predict whether architecture will meet requirements in the final implementation.
Name a limitation related to awareness and communication.
Lack of awareness of the importance of architectural design; lack of understanding of the software architect's role; poor communication among stakeholders.
Name a limitation related to the design process.
Lack of understanding of the design process, design experience, and evaluation of design.
What is the Role of a Software Architect?
A Software Architect provides a solution that the technical team can create for the entire application.
What are the four areas of expertise for a Software Architect?
Design Expertise; Domain Expertise; Technology Expertise; Methodological Expertise.
What does Design Expertise include?
Expertise in software design, including diverse methods such as object-oriented design and event-driven design.
What does Domain Expertise include?
Expert on the system being developed and plan for software evolution.
What does Technology Expertise include?
Expert on available technologies that help in the implementation of the system.
What does Methodological Expertise include?
Expert in software development methodologies that may be adopted during the SDLC.
Name three Design Qualities.
Conceptual Integrity; Maintainability; Reusability.
What are Run-time Qualities?
Interoperability; Manageability; Reliability; Scalability; Security; Performance; Availability.
What are System Qualities?
Supportability; Testability; Usability.
What does Correctness mean in Architecture Quality?
Accountability for satisfying all the requirements of the system.
What does Portability mean in Architecture Quality?
Ability of the system to run under different computing environments.
What does Integrality mean in Architecture Quality?
Ability of separately developed components to work correctly together.
What does Modifiability mean in Architecture Quality?
Ease with which each software system can accommodate changes to its software.
What is Architectural Style?
A set of principles shaping an application; an abstract framework for a family of systems; provides a lexicon of components and connectors and guidance for partitioning and reuse.
Name common architectural design categories.
Communication (Message bus); Service-Oriented Architecture (SOA); Deployment (Client/server); 3-tier or N-tier.
Name architectural design categories including Domain Driven Design, Structure, Component Based, Layered, Object Oriented.
Domain Driven Design; Structure; Component Based; Layered; Object Oriented.
What are the four types of architecture?
Business architecture; Application (software) architecture; Information architecture; IT architecture.
What is Business architecture?
Defines the business strategy, governance, organization, and key business processes within an enterprise and focuses on business-process design.
What is Application (software) architecture?
Serves as the blueprint for individual application systems, their interactions, and their relationships to business processes.
What is Information architecture?
Defines the logical and physical data assets and data management resources.
What is IT architecture?
Defines the hardware and software building blocks that make up the overall information system of the organization.
What are the steps in the Architecture Design Process?
Understand the problem; Identify design elements and their relationships (DSM); Evaluate the architecture design; Transform the architecture design.
What are Key Architecture Principles?
Build to Change Instead of Building to Last; Reduce Risk and Model to Analyze; Use Models and Visualizations as a Communication and Collaboration Tool; Use an Incremental and Iterative Approach.
What are Key Design Principles?
Separation of Concerns; Single Responsibility Principle; Principle of Least Knowledge; Minimize Large Design Upfront; Do not Repeat the Functionality; Prefer Composition over Inheritance; Identify Components and Group them in Logical Layers; Define the Communication Protocol between Layers; Define Data Formats for a Layer; System Service Components should be Abstract; Design Exceptions and Exception Handling Mechanism; Naming Conventions.