Understand the basics Flashcards
What is the core idea of software architecture?
Software architecture is about capturing decisions, not just describing structure. It’s a dynamic, evolving process driven by empirical testing of hypotheses to meet quality attributes.
Why is ‘Architect’ as a formal role problematic in agile teams?
‘Architect’ is a skill, not a role. Agile teams embody architectural decisions collectively, focusing on quality attributes and continuous exploration.
What is the key activity of architecting in software?
Forming hypotheses about how the system meets quality goals, testing them empirically, and iterating until goals are achieved.
Why is the building architecture metaphor flawed for software?
Buildings are static; software is dynamic. Software architecture requires continuous adaptation, and decisions are compromises between alternatives.
What critical skills do effective software architects need?
Focus on quality attributes (scalability, security, etc.).
System-wide thinking.
Lifecycle experience (development to maintenance).
Balancing trade-offs.
Leadership and experimentation.
How should architectural decisions be documented?
Capture:
Why a decision was made (rationale).
Rejected alternatives.
Assumptions/constraints.
Technical debt incurred.
Links to tests proving QARs.
What’s wrong with traditional ‘Software Architect’ titles?
They imply architecture is a top-down role, not a shared skill. Developers make architectural decisions daily (e.g., modular design, performance fixes).
How does technical debt relate to architecture?
Architectural decisions intentionally incur debt (e.g., Y2K date shortcuts). Documenting debt helps future teams manage trade-offs.
What’s the solution to improving software architecture practices?
Put architecture in the hands of developers, not disconnected committees. Emphasize continuous exploration, empiricism, and team ownership.
What is software architecture?
The high-level structure of a software system and the discipline of creating it. It involves:
- Significant decisions about system organization.
- Selection of structural elements and their interactions.
- Focus on external properties (not implementation details).
Why is software architecture important?
Handles complexity in design/development.
- Ensures quality attributes (performance, scalability, etc.).
- Guides collective engineering activities.
- Provides an abstract view for stakeholder communication.
What are the key aspects of software architecture?
- Abstraction: Hides unimportant details.
- Decomposition: Separates concerns.
- Composition: Coordinates elements.
- Trade-offs: Balances competing quality attributes.
What is the purpose of architecture documentation?
- Provides a common understanding for stakeholders.
- Captures design decisions, components, and patterns.
- Guides implementation and future evolution.
- Avoids reliance on reverse engineering (which often diverges from intent).
What are architectural views? Give examples.
Representations of the system from different perspectives:
- Logical view: Components and relationships.
- Development view: Module organization.
- Process view: Runtime behavior.
- Physical view: Deployment.
Name common architectural styles/patterns.
- Layered pattern (e.g., OSI model).
- Pipe-and-filter (e.g., data pipelines).
- MVC (Model-View-Controller).
- Client-server.
What is an architecture framework? Give examples.
Standardized methods for describing architectures:
- DoDAF (Department of Defense).
- TOGAF (The Open Group).
- Zachman Framework.
What is enterprise architecture?
The architecture of an entire organization’s IT systems, aligning IT strategy with business objectives. It guides integration, standardization, and evolution.
What are key considerations in architectural design?
- Functional requirements.
- Quality attributes (performance, security).
- Business drivers.
- Technology constraints.
- Trade-offs (e.g., performance vs. security).
How is architecture evaluated?
- Metrics: Coupling, cohesion, defect density.
- Techniques: Prototyping, simulations, expert reviews.
- Questions: Does it meet requirements? Is it flexible?
- Benchmarking: Compare against similar systems.
What is Software Architect?
An expert developer who design software solutions from the ground up, making high-level decisions about each stage of the process including technical standards, tools, design principles, platforms to be used, etc., leading a team of engineers to create the final product.
What are the primary responsibilities of a Software Architect?
Provide technical leadership & direction.
Own the full software development lifecycle (problem definition → design → release).
Balance 50% technical leadership and 50% hands-on development.
What are the hard skills required for a Software Architect?
UML (Unified Modeling Language) for diagramming architectures.
Deep knowledge of programming languages (e.g., Java, Python, Go).
DevOps practices (CI/CD, automation, collaboration).
What soft skills are critical for a Software Architect?
Leadership (guiding teams).
Problem-solving & conflict resolution.
Communication (clear expectations).
Negotiation (timelines, trade-offs).
Why is negotiation an undervalued skill for Software Architects?
They negotiate:
Timelines with developers.
Trade-offs (features vs. cost vs. deadlines) with stakeholders.
How can you transition into a Software Architect role?
Expand technical skills (become a full-stack developer).
Manage projects/people (take on leadership roles).
Find a mentor (learn from experienced architects).
Pursue certifications/continuing education.
What is the best opportunity to move into a Software Architect role?
Within your current organization—express your goals to managers and seek proving opportunities.
What makes Software Architects highly in demand?
Broad + deep technical knowledge.
Leadership + soft skills.
Scarcity of qualified candidates (18,500+ job openings).
What educational background do employers typically require?
Degree in Computer Science/Engineering or
Equivalent hands-on experience.
What organizational skills are needed for Software Architects?
Systematic thinking (e.g., managing UML diagrams).
Prioritization (tasks, team assignments).
Attention to detail (code quality, objectives).
Why is creative thinking important for Software Architects?
To find alternative solutions when facing obstacles in development.
What are the three levels of architecture?
Application Level (lowest)
Solution Level (mid-level)
Enterprise Level (highest)
What is the focus of Application Level Architecture?
Single application
Detailed, low-level design
Communication within one development team
What is the focus of Solution Level Architecture?
One or more applications fulfilling a business need
Mix of high and low-level design
Communication between multiple development teams
What is the focus of Enterprise Level Architecture?
Multiple solutions
High-level, abstract design (detailed by lower-level architects)
Communication across the organization
Which architecture level is most detailed?
Application Level (focuses on low-level design of a single application)
Which architecture level deals with business solutions?
Solution Level (addresses one or more applications that solve a business need)
Which architecture level is the most abstract?
Enterprise Level (focuses on high-level design across multiple solutions)
What type of communication happens at the Application Level?
Within a single development team
What type of communication happens at the Solution Level?
Between multiple development teams
What type of communication happens at the Enterprise Level?
Across the entire organization
Who typically handles the detailed design in Enterprise Level Architecture?
Solution or Application Architects (they break down high-level enterprise designs)
Which architecture level requires the broadest perspective?
Enterprise Level (must align multiple solutions with organizational goals)
Which architecture level is most technically focused?
Application Level (deals with implementation details of a single system)
What is application architecture?
The blueprint defining a software system’s structure, components, interactions, and technical/operational requirements.
The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team.
What three elements comprise application architecture decisions?
1) Structural elements
2) Their interfaces
3) Composition/interplay between them
What factors guide architectural decisions?
Functionality, resilience, performance, reusability, economic/technology constraints.
How does good architecture reduce costs?
By identifying and eliminating redundancies in components/functionalities.
How does architecture improve efficiency?
By identifying gaps (missing functionalities, bottlenecks) early in design phase.
What advantage do modular systems provide?
Independent yet interoperable components enable easier maintenance/upgrades.
Difference between architecture and design patterns?
Architecture: high-level system structure (e.g., microservices). Design: component-level solutions (e.g., Singleton).
Key characteristic of layered architecture?
Horizontal separation (presentation, business logic, data layers).
Main drawback of monolithic architecture?
Components are interdependent - failure in one affects whole system.
How does SOA(service oriented architecture) differ from microservices?
SOA shares services across applications, microservices are independently deployable.
When is event-driven architecture ideal?
For real-time systems where flow depends on user actions/sensor outputs.
Key benefit of PWAs? Progressive web app
Cross-platform compatibility with native app-like experience.
First consideration when choosing architecture?
Required functionality and future expansion needs.
Why consider performance vs. scalability?
High performance = efficient tasks, scalability = handles growing workloads.
Cloud vs on-premise tradeoffs?
Cloud: flexible/scalable but security concerns. On-premise: more control but costly.
How does team skill level affect architecture choice?
Complex architectures (e.g., microservices) require specialized skills.
Key features of architecture tools like CodeSee?
Interactive diagrams, real-time collaboration, code dependency visualization.
Why might layered architecture become problematic?
High coupling between layers makes changes difficult.
When would microservices be overkill?
For small, simple applications where operational overhead outweighs benefits.
Why document architectural decisions?
To preserve rationale for future maintenance/updates.
What makes architecture “well-designed”?
Balances current needs with future adaptability and team capabilities.
Solution Level Architecture
The mid-level of architecture. Focus on one or more applications which fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams.
What is Solution Architecture (SA)?
The process of tailoring IT solutions to specific business needs by defining functional requirements and implementation stages. Acts as a bridge between enterprise strategy and technical execution.
How does SA differ from Enterprise Architecture (EA)?
EA: Big-picture strategy, lifecycle management, cost reduction.
SA: Detailed planning, solves specific business problems, aligns with EA.
What is the primary goal of SA?
Translate business needs into practical IT solutions while managing implementation risks and ensuring alignment with enterprise goals.
Key responsibilities of a Solution Architect?
Design technical solutions using industry standards.
Create solution diagrams/documentation.
Manage project timelines/risks.
Liaise between business leaders and dev teams.
Critical skills for a Solution Architect?
Technical expertise (systems, apps, cloud).
Communication (stakeholders + devs).
Project management (budget/timeline).
How does a Solution Architect add value?
Increases ROI by selecting cost-effective tech, ensuring on-time delivery, and aligning solutions with market trends.
Top 3 benefits of SA?
Reduced costs (avoids redundant solutions).
Faster implementation (clear guidelines).
Risk mitigation (addresses gaps early).
Example of Information Security Architecture in SA?
Ensuring new systems comply with security regulations (e.g., GDPR) and documenting compliance measures.
How does SA improve Business Architecture?
Maps solutions to business capabilities (e.g., usability, security) to directly impact outcomes.
What deliverables does SA produce?
Solution architecture diagrams.
Risk assessments.
Implementation roadmaps.
Cost/resource estimates.
Why is SA documentation critical?
Provides a single source of truth for dev teams, ensuring alignment with business goals and reducing miscommunication.
How do EA, SA, and Technical Architects collaborate?
EA sets strategy → SA designs solutions → Technical Architects implement.
All ensure tech investments drive business value.
Why can’t EA replace SA?
EA lacks granularity; SA provides the detailed blueprints needed for execution.
When might SA fail?
If business requirements are unclear, or if architects lack technical/communication skills.
How does SA handle evolving tech trends?
Continuous evaluation of new tools (e.g., cloud/AI) to recommend scalable solutions.
Enterprise Level Architecture
The highest level of architecture. Focus on multiple solutions. High level, abstract design, which needs to be detailed out by solution or application architects. Communication is across the organization.
What are the 4 key responsibilities of an Enterprise Architect?
Align IT strategy with business goals
Design/maintain enterprise architecture
Develop IT standards/policies
Manage architectural risks
What are the 3 types of requirements architects must consider?
Vision (future direction)
Functional (system capabilities)
Performance (quality metrics)
Name 4 categories of quality attributes with examples
Business: Adaptability, compliance
Security: Confidentiality, integrity
Performance: Scalability, throughput
Data: Interoperability, durability
What are the two main UML categories and their purposes?
Structural: Static system design (class/component diagrams)
Behavioral: Dynamic interactions (sequence/activity diagrams)
Match Kruchten’s views to their focus
Logical: End-user functionality
Process: System concurrency/flow
Development: Programmer perspective
Physical: Network topology
+1 Scenarios: Validation use cases
What do these symbols represent?
(Show circle, arrow, nested boxes)
Circle: Provided interface
Arrow: Required interface
Nested boxes: Component decomposition
Decode these class diagram elements:
(Show +name(), -attribute, #method())
Public, - Private, # Protected
Underline = Static
What are key drawbacks of
Multi-tier
Client-Server
SOA
Microservices
Multi-tier: Monolithic risk
Client-Server: Single point of failure
SOA: Management complexity
Microservices: Integration overhead
Compare these patterns’ strengths
Layered
MVC
Microservices
Event-Driven
Layered: Separation of concerns
MVC: UI/data separation
Microservices: Independent scaling
Event-Driven: Real-time processing
What are the 3 key object types in DDD?
- Value objects (immutable)
- Entities (identity)
- Aggregate roots (ownership)
Compare publish-subscribe vs event streaming
- Pub/sub: Immediate forwarding
- Streaming: Persistent log
How should architects communicate with
devs
Stakeholders
- Devs: Clear technical rationale
- Stakeholders: Business-focused presentations
What tools support these tasks?
Back:
- UML:
- Documentation:
- Analysis:
- UML: Lucidchart
- Documentation: ArchiMate
- Analysis: SWOT frameworks
What factors drive architectural choices?
- Business objectives
- Quality attributes
- Team capabilities
- Cost/risk analysis
When would you choose microservices over monolith?
When needing:
- Independent scaling
- Polyglot persistence
- Team autonomy
(Not for simple systems)
What architecture fits:
- E-commerce platform
- IoT sensor network
- Legacy modernization
- Layered + microservices
- Event-driven
- Strangler pattern
How assess technology risks?
- Impact analysis
- Vendor stability
- Team skills gap
- Compliance checks
How adapt architecture for
- AI/ML
- Edge computing
- Quantum
- AI/ML: Data pipeline design
- Edge computing: Distributed nodes
- Quantum: Post-quantum crypto
What are the 4 main types of architects in software development?
Enterprise Architect
Solution Architect
Software/Application Architect
Technical Architect
What is the primary focus of an Enterprise Architect?
Aligning end-to-end technology strategies with business goals across the entire organization.
What types of questions does an EA typically address?
“Should we adopt SOA-based solutions?”
“What’s the benefit of unifying our ERP solution?”
“What are the implications of hybrid cloud?”
What unique perspective does an EA bring?
Views the company holistically in terms of business entities, their relationships, and technology lifecycles
What distinguishes a Software Architect from other types?
Hands-on technical leadership focused on a specific application/project’s design and standards.
What responsibilities does a Software Architect typically have?
Defining development standards
Establishing design patterns
Setting integration standards
Answering technical implementation questions
How does a Solution Architect bridge between EA and Technical Architects?
Designs high-level solutions for specific business requirements within EA’s framework, potentially spanning multiple applications.
What is the Solution Architect’s main concern?
Ensuring product consistency across requirements, design, implementation and maintenance.
What characterizes a Technical Architect’s role?
Deep expertise in a specific technology (e.g., Java, .NET) and responsibility for its implementation.
How does a Technical Architect differ from a Software Architect?
More focused on a single technology stack rather than overall application design.
Compare scope of work:
EA
- Solution
- Software
- Technical
EA: Entire enterprise
- Solution: Multiple applications
- Software: Single application
- Technical: Specific technology
Match the architect to their time horizon:
EA
Solution
Software
Technical
EA: Long-term (3-5 years)
Solution: Medium-term (1-2 years)
Software: Project lifecycle
Technical: Immediate implementation
How do these architects typically collaborate?
EA sets strategy → Solution designs within it → Software implements design → Technical handles specific tech
What types of decisions does each architect make?
- EA: Strategic technology direction
- Solution: Integration approaches
- Software: Application architecture
- Technical: Implementation patterns
Which architect roles are typically found in
- Startups
- Mid-size
- Enterprises
- Startups: Software Architect
- Mid-size: Solution + Software
- Enterprises: All four types
“ARCH” Role Summary
A - Aligns (Enterprise)
R - Requirements (Solution)
C - Code-level (Software)
H - Hands-on-tech (Technical)
Typical career path progression
Developer → Technical → Software → Solution → Enterprise
What artifacts does each produce?
- EA: Technology roadmaps
- Solution: Architecture diagrams
- Software: Design patterns
- Technical: Implementation guides
Who does each architect primarily work with?
- EA: C-level executives
- Solution: Business units
- Software: Dev teams
- Technical: Engineers
How are these roles evolving?
- More overlap in agile organizations
- Cloud specialization emerging
- Increased need for business acumen