Agile Project Management Overview
37 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Which of the following is NOT a method to break foreign key relationships?

  • Use a single table for all services
  • Expose data via API to main table
  • Create a shared mutable data service
  • Implement a centralized database structure (correct)
  • What does an architectural smell indicate?

  • The system architecture is performing optimally
  • A necessity for immediate system expansion
  • The system design aligns perfectly with the principles
  • A divergence from the design principles affecting qualities (correct)
  • Which refactoring method is associated with the principle of Independent Deployability?

  • Pack each service in one container (correct)
  • Add a message broker
  • Merge services
  • Add a circuit breaker
  • Which addition is NOT a suggested refactoring for improving Horizontal Scalability?

    <p>Add an API gateway</p> Signup and view all the answers

    Which of the following is a refactoring strategy for the principle of Isolation of Failures?

    <p>Use bulkheads</p> Signup and view all the answers

    What is the main purpose of the Agile project management framework?

    <p>To split project development into several dynamic phases for quick product shipping.</p> Signup and view all the answers

    Which principle emphasizes the importance of continuous delivery in Agile development?

    <p>Early and continuous delivery of software.</p> Signup and view all the answers

    In the context of Scrum, what is the role of the Product Owner?

    <p>To determine the product features and review the team's work.</p> Signup and view all the answers

    Which of the following is NOT a pillar of Scrum?

    <p>Iteration.</p> Signup and view all the answers

    What is the main focus of Extreme Programming (XP) in the software development process?

    <p>Emphasizing incremental planning and user stories.</p> Signup and view all the answers

    What does 'self-organizing teams' imply in Agile principles?

    <p>Teams are responsible for their own organization and effectiveness.</p> Signup and view all the answers

    Which statement best describes the concept of 'Continuous Integration' in Extreme Programming?

    <p>Features are integrated as soon as they are completed and tested.</p> Signup and view all the answers

    Which aspect is prioritized according to the Agile Manifesto?

    <p>Working software over extensive documentation.</p> Signup and view all the answers

    Which of the following are advantages of using Software as a Service (SaaS)?

    <p>Users can access the service from multiple devices</p> Signup and view all the answers

    What is a primary drawback of multi-tenant systems?

    <p>Fixed database schema for all users</p> Signup and view all the answers

    Which of the following best describes microservices architecture?

    <p>Small-scale stateless services that focus on a single responsibility</p> Signup and view all the answers

    What is a potential issue with multi-instance systems?

    <p>They offer inflexible security measures for individual customers</p> Signup and view all the answers

    Which of the following describes synchronous service interaction?

    <p>A calls B and waits for the response</p> Signup and view all the answers

    What is a common security concern with multi-tenant systems?

    <p>Single point of failure in data protection</p> Signup and view all the answers

    What are the implications of using asynchronous service communication?

    <p>A request is put into a queue without waiting for a response</p> Signup and view all the answers

    Which of the following is a feature of container-based systems?

    <p>They offer adaptability to customer's specific needs</p> Signup and view all the answers

    What is the characteristic of data sharing among microservices?

    <p>Most sharing should be read-only, and updates should be limited.</p> Signup and view all the answers

    According to the CAP Theorem, what can a web service not provide at the same time?

    <p>Consistency, Availability, and Partition-tolerance</p> Signup and view all the answers

    What is a key feature of the Saga Pattern?

    <p>It sequences local transactions and manages failures.</p> Signup and view all the answers

    How can compensating transactions be handled when a transaction fails?

    <p>Using a backward model to undo past transactions.</p> Signup and view all the answers

    Which type of failure is characterized by issues affecting the availability of a service?

    <p>External failure</p> Signup and view all the answers

    What is a common problem with monolithic applications?

    <p>Updates may necessitate redeployment of the entire application.</p> Signup and view all the answers

    What is the first step in splitting a monolithic application into microservices?

    <p>Finding the separation points or 'seams' between services.</p> Signup and view all the answers

    What is the purpose of using tools like Hibernate in database management?

    <p>To detect and manage database constraints effectively.</p> Signup and view all the answers

    What contributes to feature creep in software development?

    <p>Gradual increase of features based on user growth and demands</p> Signup and view all the answers

    Which of the following best describes a service in software architecture?

    <p>A coherent unit of functionality provided by a module</p> Signup and view all the answers

    What is meant by 'Separation of Concerns' in software design?

    <p>Keeping different aspects of software development distinct from each other</p> Signup and view all the answers

    Which non-functional quality attribute is related to the software’s ability to perform under expected conditions?

    <p>Reliability</p> Signup and view all the answers

    How does software compatibility affect software design?

    <p>It requires constant updates and maintenance to ensure functionality</p> Signup and view all the answers

    In a Model-View-Controller (MVC) architecture, which component is responsible for updating the views?

    <p>The controller mediates between the model and the view</p> Signup and view all the answers

    What is a critical factor when choosing technologies for a system?

    <p>They must align with the intended system architecture and be adaptable</p> Signup and view all the answers

    What does controlling complexity in a software system require as components increase?

    <p>Decomposing the system to maintain simplicity</p> Signup and view all the answers

    Study Notes

    Agile

    • Agile is a project management framework.
    • It breaks down project development into dynamic phases, focusing on rapid product delivery.
    • Key principles focus on individuals, working software, customer collaboration, and responding to change.
    • Based on incremental development and delivery.

    Agile Manifesto

    • Values individuals and interactions over processes and tools.
    • Prioritizes working software over comprehensive documentation.
    • Emphasizes customer collaboration over contract negotiation.
    • Values responding to change over following a plan.

    Software Development Process

    • Define a product feature list.
    • Select one feature for the next development increment.
    • Refine the feature description.
    • Implement the feature and write automated tests.
    • Integrate the feature into the system and run general tests.
    • Deliver the system increment or a full system release if all features are complete.

    12 Agile Principles

    • Deliver software early and continuously.
    • Welcome changing requirements, even late in the development cycle.
    • Deliver working software frequently, using it as the primary measure of progress.
    • Business people and developers must work together throughout the project.
    • Simplicity – the art of maximizing the amount of work not done – is essential.
    • Self-organizing teams are the best way to build software.
    • The team reflects on how to become more effective and adjusts its behavior accordingly.

    Extreme Programming (XP)

    • A development technique based on incremental planning and user stories.
    • User stories are written with a customer representative.
    • Small releases, with minimal features, are implemented first.
    • Frequent and small releases follow the initial release.
    • Test-driven development is emphasized, writing tests before code to define expected behavior.
    • Continuous integration ensures that as soon as a task is completed, it is integrated into the system and automatically tested.
    • Refactoring, improving code structure, readability, efficiency, and security, is continuously performed.

    Scrum

    • A lightweight framework for organizing projects.
    • Defines roles, including the Development Team, Product Owner, and Scrum Master.
    • Uses a Product Backlog as a to-do list of items (PBIs), such as bug fixes, features, and improvements.
    • Implements Sprints, which are 1-4 weeks long development cycles for product increments.
    • Holds daily Scrum meetings to assess progress and discuss daily work.

    Scrum Pillars

    • Transparency: All information should be readily available to everyone.
    • Inspection: Artifacts and progress should be frequently inspected.
    • Adaptation: Adjust actions to improve effectiveness.

    Knowledge Sources

    • User: User stories and scenarios.
    • Technology: Utilizing new technologies.
    • Product: Experience with existing products and research on them.
    • Domain: Expertise in the relevant work area (e.g., finance, event booking).

    Tradeoff Factors

    • Simplicity vs. Functionality
    • Control vs. Automation
    • Familiarity vs. Novelty

    Feature Creep

    • The tendency for features to grow exponentially as user needs and demands increase, often leading to issues with complexity and project scope.

    Software Architecture

    Definitions:

    • Component: An element of a project implementing a set of features. It may be a collection of services used by other components.
    • Module: A set of components providing a specific service.
    • Service: A coherent unit of functionality.

    Design Issues:

    • Non-functional product characteristics: Security, performance, maintainability, etc.
    • Product lifetime: The product's ability to evolve.
    • Software reuse: Leverage existing components or open-source software.
    • Number of users: Scalability for varying user populations.
    • Software compatibility: Maintaining compatibility with existing systems.

    Non-Functional Quality Attributes

    • Responsiveness: How quickly the system responds to requests.
    • Reliability: Consistent performance as expected.
    • Availability: Continuous service delivery.
    • Security: Protecting the system and user data.
    • Maintainability: Ease of updating and adding features.
    • Resilience: Continued operation despite failures or attacks.

    Controlling Complexity

    • Complexity increases rapidly as the number of components grow.
    • Decomposition of components is essential for managing complexity.
    • Technology choices should be made carefully, considering their impact on the overall system architecture.

    Design Guidelines

    • Separation of Concerns: Assign distinct responsibilities to different components.
    • Implement Once: Avoid redundant code by reusing existing components.
    • Stable Interfaces: Ensure consistent interactions between components.

    Distribution Architecture

    Client-Server:

    • Clients access shared databases to perform logic operations on the data.
    • Example: Web applications with a server managing data requests from clients.

    Model-View-Controller (MVC):

    • Client: Browser – Controller – View
    • Server: Model
    • The model is decoupled from its presentation.
    • Each view registers with the model, requiring refreshing when the model changes.

    Technology Choices

    • Influences the overall system architecture and can be costly and difficult to change during development.

    Salesforce Example

    SaaS (Software as a Service) Benefits:

    • Periodic cash flow from subscriptions, providing payment flexibility.
    • Updates are automatically received by all clients simultaneously.
    • New versions can be deployed immediately after testing.
    • User data collection is simplified.

    SaaS Customer Perspective:

    • Pros: Accessible from multiple devices, no upfront costs, immediate updates.
    • Cons: Privacy regulations, security concerns, network constraints, vendor lock-in.

    Multi-Tenant Systems

    • Users share a single database schema.
    • Items are tagged with user identifiers to provide isolation.

    Pros:

    • Resource utilization optimization.
    • Simplified update management for a single database.
    • Customizable user interfaces through user profiles.

    Cons:

    • Infexibility due to a fixed schema for all users.
    • Security concerns as the database is a single point of failure.
    • Limited scalability.

    Multi-Instance Systems

    • Individuals have their own customized systems, including database type and security controls.

    VM-Based:

    • Software and database operate on client virtual machines.
    • Suitable for 24/7 data access and frequent data sharing.

    Container-Based:

    • Isolated software and database running in containers.
    • Suitable for microservices architectures with minimal data sharing.

    Pros:

    • Greater flexibility and scalability for customer-specific needs.
    • Enhanced security and resilience through data isolation.

    Cons:

    • Higher cost due to the use of cloud virtual machines.
    • Complex update management that affects multiple instances.

    Microservices Architecture

    • Microservices are small, stateless services with a single responsibility.
    • Low coupling ensures minimal dependencies between services.
    • High cohesion reduces inter-service communication requirements.
    • Individual services are scalable and can be independently developed.
    • Development time for a microservice is estimated at 2 weeks with a team of 8-10 developers.

    Service Interaction:

    • Synchronous: One service directly calls another and waits for a response.
    • Asynchronous: A request is pushed into a queue, with the response given later through a different queue.

    Service Communication:

    • Direct: Messages are directly sent to a service's address.
    • Indirect: Messages are sent to a message broker that forwards them to recipients.

    Data Distribution and Sharing:

    • Each microservice manages its own data.
    • Data sharing should be minimal and primarily read-only, with dedicated services responsible for updates.
    • Mechanisms to update replicated data should be in place.
    • Tolerance to some data inconsistency is expected.

    CAP Theorem

    • It's impossible for a web service to simultaneously guarantee:
    • Consistency: All services return the correct response to each request.
    • Availability: All requests eventually receive a response.
    • Partition-tolerance: Tolerance for delayed or lost messages between services.

    Saga Pattern

    • Each business transaction spanning multiple services is implemented as a Saga.
    • A Saga is a sequence of local transactions within a larger transaction.
    • If a local transaction fails, compensating transactions are used.

    Saga Coordination:

    • Choreography: Local transaction publishes an event, triggering subsequent transactions.
    • Orchestration: A coordinator manages the execution of local transactions.

    Compensating Failed Transactions:

    • Backward model: Undo changes made by previously executed transactions.
    • Forward model: Implement a "retry later" policy for the failed transaction.

    Failure Management

    • Unexpected failures are inevitable.

    Types of Service Failures:

    • Internal: Detected by the service and reportable to the requestor.
    • External: Impact the availability of the service.
    • Performance: Heavy loads leading to slow or unresponsive service.

    Splitting the Monolith

    • Monolithic applications are appropriate only when updates are infrequent.

    Problems with Monolithic Applications:

    • Long lifetime requires inevitable updates.
    • Low code cohesion, even if unrelated code is kept together.
    • Small changes may require redeployment of the entire monolith.

    Solution:

    • Identify separation points between services, representing "seams" within the monolith.
    • Create packages for each service context and move the code accordingly.

    Splitting Databases

    • Understand which parts of the code read and write from the database.
    • Detect database constraints.
    • Break foreign key relationships using techniques like exposing data via APIs, shared static data, or shared mutable data handled by a dedicated service.

    Architectural Smells and Refactoring

    • Architectural Smell: A commonly used architectural decision that negatively impacts system quality attributes.
    • Design Principles: Blueprint for architectural design.
    • Architectural Smells: Indicator that the design deviates from principles.
    • Refactoring: Strategies to align code with design principles.

    Example Smell-Refactoring Pairs:

    • Independent Deployability: Refactoring: Pack each service into a separate container.

    • Horizontal Scalability:

      • Refactoring: Add service discovery.
      • Refactoring: Add a message router (load balancer).
      • Refactoring: Add a message broker (message queue).
    • No API Gateway:

      • Refactoring: Add an API gateway at the edge of the architecture.
    • Isolation of Failures:

      • Refactoring: Add a message broker (failure tolerance).
      • Refactoring: Implement a circuit breaker.
      • Refactoring: Use timeouts.
      • Refactoring: Implement a bulkhead.
    • Decentralization:

      • Refactoring: Split the database (eventual consistency).
      • Refactoring: Add a data manager.
      • Refactoring: Merge services.
      • Refactoring: Split teams by service.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    This quiz covers the fundamentals of Agile project management, including its key principles and the Agile Manifesto. Learn about the software development process in Agile and the 12 guiding principles that help teams deliver software effectively. Test your understanding of how Agile enhances collaboration and adaptability in projects.

    More Like This

    Use Quizgecko on...
    Browser
    Browser