Inför tenta Flashcards
What does it mean for microservices to be highly maintainable and testable?
Microservices are designed to be highly maintainable and testable, meaning they are structured in a way that allows developers to easily understand, update, and enhance them. This structure also facilitates testing, enabling quick validation and bug fixing.
What is meant by microservices being loosely coupled?
Microservices are loosely coupled, meaning each service is independent and interacts with other services through simple, well-defined interfaces. This independence allows for changes in one service without impacting others, enhancing flexibility in development and deployment.
Why is independent deployability important for microservices?
Microservices are independently deployable, which allows each service to be deployed, updated, scaled, and restarted without affecting the operation of other services. This feature supports continuous deployment and integration practices, enabling more agile responses to market changes.
How are microservices organized?
Microservices are organized around business capabilities, which means each service is designed to achieve a specific business function or requirement. This organization aligns development with business goals and enables more intuitive scaling and enhancement of services based on business needs.
What does it mean that microservices are owned by a small team?
Each microservice is owned by a small team that is responsible for the full development lifecycle of the service—from design through production and maintenance. This ownership allows for focused expertise, faster development cycles, and more personalized accountability in service management.
What are agile software engineering methods and their primary focus?
Agile software engineering methods prioritize rapid product development and delivery. They are based on iterative development with minimal overhead, enabling quick adaptation and continuous improvement throughout the software development lifecycle.
What is Extreme Programming (XP) and what key practices did it introduce?
Extreme Programming (XP) is an agile method that enhances software quality and responsiveness to changing customer requirements. It introduced key agile practices such as user stories, test-first development, and continuous integration, which are now mainstream in software development.
What is Scrum and how does it differ from Extreme Programming?
Scrum is an agile method focused on planning and management without defining specific engineering practices. Unlike XP, Scrum allows the development team to choose technical practices that are most suitable for the product, emphasizing flexibility in the method’s application.
What is the product backlog in Scrum?
In Scrum, the product backlog is a prioritized list of work items that the team needs to address. It serves as the primary planning artifact from which tasks are pulled into sprints for execution.
What are sprints in Scrum?
Sprints are fixed-time periods, usually two to four weeks long, during which specific work items from the product backlog are developed into a potentially shippable product increment. Each sprint aims to produce a completed increment that requires no further work to be deployable.
What is a self-organizing team in the context of Scrum?
A self-organizing team in Scrum is a group of developers that determines how to address work items by consensus and collaboration. They manage their own workload and methodology, fostering ownership and accountability within the team.
What is incremental development in Scrum?
Incremental development involves building the software in small, manageable increments. Each increment encompasses a set of features from the backlog that are completed during sprints and are ready for delivery at the end of each sprint.
What is a software product feature?
A software product feature is a fragment of functionality that fulfills a specific need or desire of the user when using the product. It is an essential part of the product’s capabilities.
What is the first stage of product development regarding features?
The first stage of product development is to identify and list the product features. Each feature is named and given a brief description of its functionality to clarify what it does and why it’s necessary.
What are personas in product development?
Personas are fictional character portraits of potential users who might use your product. They are crafted based on user research to represent different user types and their respective needs and behaviors.
What should a persona description include?
A persona description should provide a vivid picture of a typical product user, including their educational background, technology experience, and motivations for using the product.
What is a scenario in product development?
A scenario is a narrative that describes a specific situation in which a user interacts with the product’s features to achieve something they desire. It helps visualize how the product is used in real life.
How should scenarios be written?
Scenarios should always be written from the user’s perspective and should be based on personas or real users to ensure they accurately reflect user needs and how the product is intended to be used.
What are user stories?
User stories are concise, structured narratives that detail specific functionalities or features a user expects from the software. They help to refine and add details to scenarios or describe system features.
What influences feature identification and design?
Feature identification and design are influenced by user research, domain knowledge, existing product knowledge, and technology expertise. These elements guide the development of relevant and feasible features.
How can features be identified from scenarios and stories?
Features can be identified by analyzing user actions described in scenarios and stories, thinking about what functionalities are needed to support these actions within the software product.
What is software architecture?
Software architecture is the fundamental organization of a system, defined by its components, the relationships among those components, and their interactions with the environment, guided by principles for its design and evolution.
How does the architecture of a software system influence its properties?
The architecture significantly impacts non-functional system properties such as reliability, efficiency, and security, shaping how well the system meets these critical operational criteria.
What does architectural design involve?
Architectural design involves understanding the critical issues for the product and creating system descriptions that outline components and their relationships.
What is the principal role of architectural descriptions?
Architectural descriptions provide a basis for the development team to discuss and make informed decisions about the system’s organization. They are crucial for communicating design intentions and decisions.
Why are informal architectural diagrams effective in architectural description?
Informal diagrams are fast and easy to draw and share, making them effective for quickly communicating and iterating on architectural ideas during discussions
What is system decomposition?
System decomposition involves breaking down architectural components into a set of finer-grain components, helping to manage complexity by detailing the subsystems and elements that compose them.
How should you minimize complexity in system design?
To minimize complexity, it is crucial to separate concerns, avoid functional duplication, and focus on clearly defined component interfaces, which enhance modularity and maintainability.
What is a common architectural structure for web-based systems?
Web-based systems often utilize a layered structure, typically including a user interface layer, application-specific layers, and a database layer.
What is distribution architecture in a system?
Distribution architecture defines how servers are organized within the system and how components are allocated across these servers, influencing system scalability and performance.
What are the most commonly used architectures for web-based systems?
Multi-tier client-server and service-oriented architectures (SOA) are commonly used due to their flexibility, scalability, and ability to effectively separate concerns among different system layers.
What role do technology decisions play in architectural design?
Deciding on technologies such as databases and cloud platforms is a vital part of the architectural design process, as these decisions directly impact the capabilities, performance, and scalability of the system.
What is the cloud in computing?
The cloud consists of numerous virtual servers available for rent. Users access these servers remotely over the Internet and pay based on the amount of server time used.
What is virtualization in cloud computing?
Virtualization is a technology that allows multiple server instances to run on the same physical computer, enabling the creation of isolated software instances for deployment in the cloud.
What are virtual machines?
Virtual machines are replicas of physical servers that host their own operating system, technology stack, and applications, functioning as independent servers.
What are containers in cloud computing?
Containers are a lightweight virtualization technology that allows for rapid replication and deployment of server environments. Unlike virtual machines, all containers on a host share the same operating system. Docker is a prominent example of container technology.
What does “everything as a service” mean in cloud computing?
In the cloud, “everything as a service” implies that various resources (computing, storage, applications) can be delivered over the Internet and rented rather than owned, shared with other users.