Software Architecture Flashcards
What is software architecture?
Software architecture defines the structure of a software system, including components, relationships, design principles, and reasoning.
Why is software architecture important?
Scalability: Handles growing demands.
Maintainability: Simplifies updates and fixes.
Reliability: Minimizes vulnerabilities.
Flexibility: Adapts to new requirements easily.
What are the key types of software architecture?
Monolithic: Simple development, limited scalability.
Microservices: Independent scaling, complex infrastructure.
Layered: Separation of concerns, potential rigidity.
Event-Driven: Loose coupling, debugging complexity.
SOA: Integrates through reusable services.
What are the software design principles?
DRY: Avoid redundancy.
SOLID: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
KISS: Keep it simple.
YAGNI: Don’t over-engineer.
What are common design patterns?
Creational: Singleton, Factory Method, Abstract Factory.
Structural: Adapter, Decorator, Composite.
Behavioral: Observer, Strategy, Command.
What are the stages of the Software Development Life Cycle (SDLC)?
Planning and Requirement Analysis.
Defining Requirements.
Designing Product Architecture.
Building the Product.
Testing.
Deployment and Maintenance.
What is the difference between Waterfall and Agile approaches?
Waterfall: Linear, low flexibility, best for stable requirements.
Agile: Iterative, high adaptability, best for frequent changes.
What are common project management tools?
Jira, Trello, Asana. Features:
Planning/Scheduling: Tasks, workflows.
Collaboration: Dashboards, approvals.
Documentation: File management, versioning.
Evaluation: Productivity tracking.