Inför tenta Flashcards

1
Q

What does it mean for microservices to be highly maintainable and testable?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is meant by microservices being loosely coupled?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Why is independent deployability important for microservices?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

How are microservices organized?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What does it mean that microservices are owned by a small team?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are agile software engineering methods and their primary focus?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is Extreme Programming (XP) and what key practices did it introduce?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is Scrum and how does it differ from Extreme Programming?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is the product backlog in Scrum?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are sprints in Scrum?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is a self-organizing team in the context of Scrum?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is incremental development in Scrum?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is a software product feature?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is the first stage of product development regarding features?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are personas in product development?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What should a persona description include?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What is a scenario in product development?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

How should scenarios be written?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What are user stories?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What influences feature identification and design?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

How can features be identified from scenarios and stories?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What is software architecture?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

How does the architecture of a software system influence its properties?

A

The architecture significantly impacts non-functional system properties such as reliability, efficiency, and security, shaping how well the system meets these critical operational criteria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What does architectural design involve?

A

Architectural design involves understanding the critical issues for the product and creating system descriptions that outline components and their relationships.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

What is the principal role of architectural descriptions?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Why are informal architectural diagrams effective in architectural description?

A

Informal diagrams are fast and easy to draw and share, making them effective for quickly communicating and iterating on architectural ideas during discussions

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

What is system decomposition?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

How should you minimize complexity in system design?

A

To minimize complexity, it is crucial to separate concerns, avoid functional duplication, and focus on clearly defined component interfaces, which enhance modularity and maintainability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

What is a common architectural structure for web-based systems?

A

Web-based systems often utilize a layered structure, typically including a user interface layer, application-specific layers, and a database layer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

What is distribution architecture in a system?

A

Distribution architecture defines how servers are organized within the system and how components are allocated across these servers, influencing system scalability and performance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

What are the most commonly used architectures for web-based systems?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

What role do technology decisions play in architectural design?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

What is the cloud in computing?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

What is virtualization in cloud computing?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

What are virtual machines?

A

Virtual machines are replicas of physical servers that host their own operating system, technology stack, and applications, functioning as independent servers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

What are containers in cloud computing?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

What does “everything as a service” mean in cloud computing?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

What is Infrastructure as a Service (IaaS)?

A

IaaS provides fundamental computing resources like servers, storage, and networking in the cloud, eliminating the need for physical servers.

39
Q

What is Platform as a Service (PaaS)?

A

PaaS involves using cloud platform services to automatically scale software applications in response to demand, simplifying many of the challenges associated with application scaling.

40
Q

What is Software as a Service (SaaS)?

A

SaaS delivers application software directly to users over the Internet, offering benefits like reduced capital costs for users and easier deployment for vendors.

41
Q

What is the difference between multi-tenant and multi-instance systems in SaaS?

A

In multi-tenant systems, all users share the same database which can be adapted at runtime to meet individual needs. In multi-instance systems, each user has a separate database, offering enhanced isolation and customization.

42
Q

What are key architectural issues for cloud-based software?

A

Deciding on the cloud platform, and choosing between multi-tenant or multi-instance deployment models are critical architectural considerations that impact scalability, privacy, and cost.

43
Q

What are multi-tenant systems?

A

Multi-tenant systems are a type of software architecture where a single instance of the software serves multiple customers, or tenants. All tenants share the same infrastructure and database, with the system dynamically adapting data and configuration to meet each tenant’s specific needs. This setup maximizes resource efficiency and cost-effectiveness but may raise concerns about data privacy and customization.

44
Q

What are multi-instance systems?

A

Multi-instance systems are a type of software architecture where each customer, or tenant, has their own separate instance of the software and potentially their own dedicated database. This approach offers greater customization and isolation, which can enhance security and performance. However, it is generally more resource-intensive and expensive compared to multi-tenant systems.

45
Q

What is a microservice?

A

A microservice is an independent, self-contained software component that operates in its own process and communicates with other microservices using lightweight protocols. This allows for high modularity and makes it easier for a microservice to be developed and scaled independently.

46
Q

Can microservices be implemented using different technologies?

A

Yes, microservices in a system can be implemented using different programming languages and database technologies. This flexibility allows developers to use the best tool for each service’s specific requirements.

47
Q

What is the design principle behind microservices?

A

Microservices should follow the single responsibility principle, meaning each microservice has one responsibility and can be developed, deployed, and scaled independently. This design facilitates easy changes and upgrades without affecting other components of the system.

48
Q

Why is microservices architecture well suited to cloud-based systems?

A

Microservices architecture is ideal for cloud-based environments because each microservice can run in its own container, which promotes scalability and resilience. Containers facilitate the management and deployment of microservices, making them highly effective for dynamic cloud setups.

49
Q

What are the primary responsibilities of architects in a microservices system?

A

Architects in a microservices system must decide how to structure the system into microservices and determine the best methods for these services to communicate and coordinate. This includes choosing communication protocols and managing service dependencies and interactions.

50
Q

What does communication and coordination entail in microservices?

A

Communication and coordination in microservices involve selecting protocols for microservice interaction, managing data sharing, deciding on the central coordination of services, and implementing effective failure management strategies

51
Q

How is the RESTful architectural style applied in microservices?

A

In microservice-based systems, the RESTful architectural style is commonly used where HTTP verbs—GET, POST, PUT, and DELETE—are mapped onto service operations. This style facilitates stateless communication and interaction using resources represented in formats like XML or JSON.

52
Q

What is continuous deployment in the context of microservices?

A

Continuous deployment is a process where new versions of a microservice are automatically deployed to production as soon as changes are made and validated through automated testing. This ensures that updates are rapidly available, maintaining high service quality and responsiveness.

53
Q

What might be necessary if continuous deployment is used in microservices?

A

With continuous deployment, it may be necessary to maintain multiple versions of microservices to allow rolling back to older versions if issues arise with newly deployed ones. This strategy helps in ensuring system stability and reliability.

54
Q

What does statelessness mean in the context of microservices?

A

Statelessness in microservices means that each request from a client to the server must contain all the information necessary to understand and complete the request, independent of any previous requests. This means the server does not need to remember the state of the application or the user’s session. Statelessness helps improve scalability and reliability, as it allows requests to be handled by any available server instance.

55
Q

What are the primary HTTP verbs used in RESTful services and what do they represent?

A

The primary HTTP verbs used in RESTful services include:
GET: Retrieve data from a server at the specified resource.
POST: Send data to a server to create a new resource.
PUT: Send data to a server to update an existing resource.
DELETE: Remove an existing resource from the server.

These verbs correspond to create, read, update, and delete (CRUD) operations in database management, allowing RESTful services to manage resources effectively.

56
Q

What is the aim of program testing?

A

The aim of program testing is to discover bugs and demonstrate that a program performs according to the expectations of its developers, ensuring both functionality and reliability.

57
Q

What are four types of testing relevant to software products?

A

The four types of testing relevant to software products are functional testing, user testing, load and performance testing, and security testing. Each type addresses different aspects of software quality and user experience.

58
Q

What is unit testing?

A

Unit testing involves testing individual units of code, such as functions or class methods, to ensure they perform as intended. These units typically have a single responsibility, making them fundamental for verifying software behavior.

59
Q

What are feature testing and system testing?

A

Feature testing focuses on individual system features, testing their functionality independently. System testing evaluates the entire system to check for unwanted interactions between features and with the system’s environment, ensuring overall system integrity.

60
Q

What is equivalence partitioning in software testing?

A

Equivalence partitioning involves dividing inputs into groups that are expected to elicit the same behavior from the software. Testing inputs at the boundaries of these partitions is an effective method for finding bugs.

61
Q

How can user stories be used in testing?

A

User stories can serve as a foundation for deriving feature tests, providing real-world scenarios that the software should handle, thus guiding the creation of relevant and targeted tests.

62
Q

What is test automation?

A

Test automation is the practice of developing a set of executable tests that are run every time a change is made to the system. This helps in continuously verifying system functionality without manual intervention.

63
Q

What is the typical structure of an automated unit test?

A

The structure of an automated unit test typically follows the arrange-action-assert pattern: set up the test parameters, execute the function or method, and then assert that the expected outcome has occurred.

64
Q

What is test-driven development (TDD)?

A

Test-driven development (TDD) is an approach where executable tests are written before the actual code. Developers then write code that passes these tests, focusing on meeting predefined requirements before implementation.

65
Q

What characterizes security testing?

A

Security testing may be risk-driven, focusing on identifying and mitigating potential security risks. It involves creating tests that reveal system vulnerabilities based on a list of known security concerns.

66
Q

What are program reviews and their purpose?

A

Program reviews are sessions where code is examined by other developers to assess quality and identify bugs. They are an effective supplement to automated testing, adding a human element to error detection.

67
Q

What is Extreme Programming (XP)?

A

Extreme Programming (XP) is an agile software development methodology aimed at improving software quality and responsiveness to changing customer requirements. It emphasizes frequent “releases” in short development cycles, which improves productivity and introduces checkpoints where new customer requirements can be adopted .

68
Q

What is the Planning Game in XP?

A

The Planning Game is an XP practice where developers and customers collaborate to define and prioritize system features. This iterative planning approach helps manage scope and requirements in a flexible, responsive manner .

69
Q

What are Small Releases in XP?

A

Small Releases is an XP practice involving frequent releases of the software in small, incremental updates. This approach allows for quick feedback from customers and continuous improvement of the product .

70
Q

What is the role of Metaphor in XP?

A

In XP, Metaphor serves as a guide for the development process and system design. It helps all team members understand how parts of the software interact and ensures coherence in the system’s architecture .

71
Q

What is Simple Design in XP?

A

Simple Design in XP emphasizes creating software that is simple enough to meet the current requirements and no more. This minimizes waste, reduces complexity, and facilitates changes and maintenance .

72
Q

How is Testing implemented in XP?

A

XP integrates testing throughout the development process. Developers write tests before coding (test-driven development), and all code must pass these tests before it is considered complete. Continuous testing ensures quality and reduces bugs .

73
Q

What is Refactoring in XP?

A

Refactoring in XP involves modifying the code to improve its structure and readability without changing its external behavior. This practice is crucial for maintaining simplicity and managing technical debt over time .

74
Q

What is Pair Programming in XP?

A

Pair Programming is an XP practice where two developers work together at one workstation; one writes the code while the other reviews it as it is written. This collaboration enhances code quality and facilitates knowledge sharing .

75
Q

What does Collective Ownership mean in XP?

A

Collective Ownership in XP means that any developer can change any part of the project’s code at any time. This approach encourages responsibility and improves the software’s overall quality as more developers scrutinize and refine the code .

76
Q

What is Continuous Integration in XP?

A

Continuous Integration in XP involves integrating and building the software frequently, often multiple times a day, to detect integration errors as quickly as possible. This practice helps maintain a high level of software health and readiness .

77
Q

What is Sustainable Pace in XP?

A

Sustainable Pace (formerly known as the 40-hour week) is an XP principle that encourages teams to work at a consistent and sustainable pace to avoid burnout and maintain productivity over the long term .

78
Q

What is the On-Site Customer in XP?

A

The On-Site Customer is an XP practice where a real customer is present full-time with the XP team to answer questions, resolve uncertainties, and provide quick feedback. This presence ensures that development aligns closely with customer needs and priorities .

79
Q

What is Pair Programming in Extreme Programming?

A

Pair Programming is a core XP practice where two developers work together at one workstation. One, the “driver,” writes the code, while the other, the “observer” or “navigator,” reviews each line of code as it is typed in. The roles can switch frequently. This collaboration not only improves code quality but also facilitates knowledge sharing and reduces the likelihood of complex bugs making it into production .

80
Q

What is Test-Driven Development in XP?

A

Test-Driven Development is an XP practice where tests are written before the actual code. Developers first write failing unit tests that define required new functionality, then they write code to pass those tests, and finally refactor the code to meet standards of cleanliness. This ensures that all written code has been tested from the start, leading to fewer bugs and encouraging simple designs .

81
Q

What does Continuous Integration entail in XP?

A

Continuous Integration in XP involves integrating and testing code changes multiple times a day. Every time code is integrated, it is automatically built and tested, and if the build or tests fail, it is fixed immediately. This practice helps keep the code base stable and allows XP teams to develop faster with more confidence .

82
Q

What is Refactoring in the context of XP?

A

Refactoring is the XP practice of altering the internal structure of the code to make it easier to understand and cheaper to modify without changing its observable behavior. This ongoing process of code improvement helps to maintain software quality and adaptability over time, facilitating the addition of new features without degrading system performance .

83
Q

What is regression testing in software development?

A

Regression testing is a type of software testing that verifies that recent code changes have not adversely affected existing functionalities. It involves re-running previously passed tests on updated code to ensure that past functions still operate as expected after modifications. This practice is crucial for maintaining the stability and integrity of the software as it evolves over time.

84
Q

What is the significance of performance in software architecture design?

A

Performance is a critical issue in software architecture design, requiring architects to ensure that the system meets the required response times and throughput rates under various operational conditions .

85
Q

How is security a critical issue in software architecture design?

A

Security is paramount in software architecture as the design must safeguard against potential threats and vulnerabilities, ensuring data integrity and system protection against unauthorized access .

86
Q

What role does scalability play in software architecture design?

A

Scalability is crucial in software architecture to ensure the system can handle increased loads effectively without performance degradation, accommodating growth in user numbers and data volume .

87
Q

Why is robustness important in software architecture design?

A

Robustness in software architecture design ensures the system can cope with errors during execution and adverse conditions without failing, maintaining reliability and stability

88
Q

What is the importance of flexibility in software architecture design?

A

Flexibility is essential for allowing future modifications and adaptations of the system with minimal disruption, supporting the integration of new features and technologies as requirements evolve .

89
Q

What are the key differences between container-based virtualization and virtual servers?

A

Container-based virtualization, such as Docker, allows multiple applications to run on the same operating system (OS) but in isolated spaces called containers. These containers share the OS kernel, start up faster, and use fewer resources compared to virtual servers. Virtual servers, or virtual machines (VMs), each run their own OS instance on top of the physical server’s hardware using a hypervisor. This provides complete isolation at the OS level, better security, and allows for different operating systems to coexist on the same physical hardware, but at the cost of greater resource consumption and slower startup times

90
Q

What does it mean for microservices to be scalable?

A

Microservices are designed to be scalable, meaning each service can be independently scaled to meet demand without affecting the operation of other services in the system .

91
Q

How are microservices maintainable?

A

Microservices are maintainable because they are small and focused on doing one thing well, which simplifies understanding, testing, and updating the service .

92
Q

What is the significance of microservices being independently deployable?

A

In microservices architecture, each service manages its own database, rather than relying on a single database for the entire application. This approach increases resilience and ensures that services are loosely coupled .

93
Q

How does failure isolation work in microservices?

A

Microservices are designed to isolate failures, which means if one service fails, it doesn’t necessarily bring down other parts of the application. This characteristic enhances the overall reliability of the application .