Important Concepts - Exam 1 Flashcards

1
Q

What is the Unified Process (UP)

A

The Unified Process (UP) is an iterative and incremental software development methodology that emphasizes structured project management, risk management, and stakeholder involvement. It focuses on producing high-quality software that meets stakeholder needs through a disciplined and adaptive approach.

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

What are the phases in the Unified Process?

A

The four phases in the Unified Process are:

Inception – Define the project scope and feasibility.
Elaboration – Refine requirements and establish the architecture.
Construction – Build the system iteratively based on the architecture.
Transition – Deploy the system and ensure it meets user needs.

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

What happens in the Inception Phase of UP

A

In the Inception Phase, the business case is established, stakeholder requirements are gathered, and the project’s feasibility is assessed. It results in initial project estimates and a high-level vision of the system

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

What happens in the Elaboration Phase of UP?

A

The Elaboration Phase focuses on refining the system’s requirements, risk analysis, and establishing a stable architecture. Detailed project plans, costs, and schedules are also refined during this phase.

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

What happens in the Construction Phase of UP?

A

In the Construction Phase, the actual development (coding and testing) of the system takes place. The system is built iteratively based on the defined architecture, and functionality is delivered progressively.

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

What happens in the Transition Phase of UP?

A

The Transition Phase involves deploying the system to the user environment, training end-users, and ensuring that the system meets user expectations and is stable enough for release.

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

What are workflows in the Unified Process?

A

Workflows in UP represent the various activities that take place within each phase, such as requirements gathering, analysis, design, implementation, testing, and deployment. They span across all phases, ensuring continuous focus on quality and project goals.

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

What are use cases in software development?

A

Use cases are descriptions of how users (actors) interact with a system to achieve specific goals. They detail the functional requirements of the system from the user’s perspective, including the steps taken and the expected outcomes.

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

What is the benefit of having a user-centric focus in use cases?

A

Use cases prioritize user needs by emphasizing how users will interact with the system. This helps ensure that the final product aligns with user expectations and enhances user satisfaction

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

How do use cases improve communication among stakeholders?

A

Use cases provide a clear and understandable format for discussing system requirements, facilitating better communication among stakeholders, developers, and testers. They help bridge the gap between technical and non-technical participants.

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

How do use cases enhance requirements gathering?

A

Use cases promote a comprehensive understanding of functional requirements by detailing specific scenarios. This helps identify and document all necessary features and interactions, reducing the risk of overlooked requirements.

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

What is the benefit of clear testing criteria provided by use cases?

A

Use cases define specific interactions and expected outcomes, providing a solid basis for creating test cases. This leads to more effective and thorough testing processes, ensuring that all functionalities are validated.

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

How do use cases facilitate iterative development?

A

Use cases can be incrementally refined and prioritized, allowing teams to focus on delivering the most critical functionalities first. This supports an iterative approach, where feedback can be incorporated in successive development cycles.

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

How do use cases contribute to better change management?

A

Since use cases provide a clear understanding of user interactions and system functions, they help assess the impact of changes. This enables better management of scope changes and reduces the likelihood of misunderstandings during development.

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

What are the different levels of rigor in use cases?

A

The three levels of rigor in use cases are Brief, Casual, and Fully-Dressed

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

What is a Brief Use Case?

A

A Brief Use Case is a high-level description that outlines the main goal of the interaction without going into detail. It typically includes the actor, the goal, and a summary of the interaction.

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

What is a Casual Use Case?

A

A Casual Use Case provides more detail than a Brief Use Case but is still informal. It outlines the interaction steps between the actor and the system, describing the primary path and any exceptions in a simple narrative form.

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

What is a Fully-Dressed Use Case?

A

A Fully-Dressed Use Case is a comprehensive, detailed description that includes all relevant information, such as the main flow, alternative flows, preconditions, postconditions, and special requirements. It serves as a complete reference for developers and testers.

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

What are the different types of actors in use cases?

A

The two main types of actors in use cases are Primary Actors and Secondary Actors.

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

What is a Primary Actor?

A

A Primary Actor is an external entity that initiates a use case to achieve a goal. They are the main users of the system who interact directly with it, such as customers or end-users.

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

What is a Secondary Actor?

A

A Secondary Actor is an external entity that supports the primary actor in achieving their goal. They may provide additional services or information, such as external systems, administrators, or service providers.

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

What is an association in UML?

A

An association in UML (Unified Modeling Language) represents a relationship between two or more classes, indicating that they are connected in some way. It shows how instances of one class relate to instances of another.

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

What are association roles?

A

Association roles describe the specific function or responsibility of each class in a relationship. They provide clarity on how each class interacts within the association, often labeled at the ends of the association line.

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

What is an association class?

A

An association class is a class that is linked to an association, allowing you to define attributes and operations that pertain specifically to the relationship between the associated classes. It enables the representation of properties that belong to the association itself.

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

What is software architecture?

A

Software architecture is the high-level structure of a software system that defines its components, their interactions, and the principles governing its design and evolution. It serves as a blueprint for both the system and the project developing it.

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

Why is software architecture important?

A

Software architecture is crucial because it:

  • Provides a framework for design and development.
  • Ensures scalability, performance, and security.
  • Facilitates communication among stakeholders.
  • Helps manage risks and guides future development.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

What are the key components of software architecture?

A

Key components of software architecture include:

  • Components: The building blocks of the system (e.g., modules, services).
  • Connectors: The relationships and interactions between components.
  • Configuration: The arrangement of components and connectors.
  • Constraints: The guidelines and standards governing design choices
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

What is logical architecture?

A

Logical architecture defines the system’s structure in terms of its components, their relationships, and the functionalities they provide, without considering the actual implementation or deployment specifics. It focuses on the organization of the system’s modules and their interactions.

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

What are the key characteristics of logical architecture?

A

Key characteristics of logical architecture include:

  • Abstraction: Represents concepts without regard to technology.
  • Components: Identifies modules or layers, such as presentation, business logic, and data access.
  • Interactions: Specifies how components communicate and interact with each other.
30
Q

What is implementation (deployment) architecture?

A

Implementation (deployment) architecture describes how the system will be physically deployed and configured in a specific environment. It includes details about hardware, software, network configurations, and the actual technology stack used for development and deployment.

31
Q

What are the key characteristics of implementation architecture?

A

Key characteristics of implementation architecture include:

  • Physical Deployment: Specifies the physical locations of servers, databases, and other components.
  • Technology Stack: Details the technologies, frameworks, and platforms used.
  • Configuration Details: Outlines specific configurations for performance, security, and scalability.
32
Q

What is 3-tiered (layered) architecture?

A

3-tiered (layered) architecture is a software design pattern that separates an application into three distinct layers: the presentation layer, business logic layer, and data access layer. This separation promotes modularity and enhances maintainability.

33
Q

What are the three layers in 3-tiered architecture?

A

The three layers are:

  • Presentation Layer: Handles user interface and user interaction.
  • Business Logic Layer: Contains the core functionality, processing logic, and business rules.
  • Data Access Layer: Manages data storage, retrieval, and database interactions.
34
Q

Why is 3-tiered architecture useful?

A

3-tiered architecture is useful because it:

Encourages Separation of - Concerns: Each layer focuses on a specific aspect of the application, making it easier to manage.
- Enhances Maintainability: Changes can be made to one layer without affecting others.
- Improves Scalability: Each layer can be scaled independently to meet performance demands.
- Facilitates Testing: Individual layers can be tested separately, improving the quality of the application.

35
Q

What is the recommended dependency direction between layers in 3-tiered architecture?

A

The recommended dependency direction is that higher layers (e.g., presentation layer) should depend on lower layers (e.g., business logic and data access layers), while lower layers should not depend on higher layers. This means that dependencies flow downward, promoting a clear separation and reducing coupling.

36
Q

What is GRASP?

A

GRASP (General Responsibility Assignment Software Patterns) is a set of nine principles used in object-oriented design to assign responsibilities to classes and objects effectively. These principles help ensure that software is modular, maintainable, and flexible.

37
Q

What is the Information Expert pattern in GRASP?

A

The Information Expert pattern suggests that responsibilities should be assigned to the class that has the necessary information to fulfill them. This leads to a natural distribution of responsibilities and promotes cohesion.

38
Q

What is the Creator pattern in GRASP?

A

The Creator pattern indicates that a class should be responsible for creating instances of classes that it contains or closely collaborates with. This principle encourages high cohesion and minimizes coupling.

39
Q

What is the Controller pattern in GRASP?

A

The Controller pattern designates a class as the intermediary between the user interface and the system. It handles system events and coordinates the flow of data and control, promoting separation of concerns.

40
Q

What is the Low Coupling pattern in GRASP?

A

The Low Coupling pattern emphasizes minimizing dependencies between classes. By reducing coupling, the system becomes easier to understand, maintain, and modify, leading to greater flexibility.

41
Q

What is the High Cohesion pattern in GRASP?

A

The High Cohesion pattern suggests that a class should have closely related responsibilities. This improves the clarity and usability of the class, making the system easier to maintain and evolve.

42
Q

What is the Polymorphism pattern in GRASP?

A

The Polymorphism pattern promotes the use of interfaces and abstract classes to define common behaviors. It allows for flexibility in code and easier extension of the system by enabling different implementations of the same interface.

43
Q

What is the Pure Fabrication pattern in GRASP?

A

The Pure Fabrication pattern suggests creating a class that does not represent a concept in the problem domain but is necessary to achieve low coupling, high cohesion, or reusability. This helps manage complexity in the design.

44
Q

What is the Indirection pattern in GRASP?

A

The Indirection pattern involves using an intermediary class to facilitate communication between two classes, reducing the direct dependencies between them. This promotes flexibility and reduces coupling.

45
Q

What is the Protected Variations pattern in GRASP?

A

The Protected Variations pattern aims to protect elements from the variations in other elements. By encapsulating the volatile parts of a system, it enhances stability and flexibility, allowing changes without affecting other parts.

46
Q

What is the Facade pattern?

A

The Facade pattern is a structural design pattern that provides a simplified interface to a complex subsystem. It defines a higher-level interface that makes the subsystem easier to use, reducing dependencies and allowing clients to interact with the system without needing to understand its complexities.

47
Q

What does the Controller pattern in GRASP recommend?

A

The Controller pattern in GRASP recommends assigning the responsibility of handling system events to a class designated as a controller. This class acts as an intermediary between the user interface and the business logic, managing the flow of data and control, thus promoting separation of concerns.

48
Q

Why is low coupling recommended for your design modeling?

A

Low coupling is recommended in design modeling because it:

  • Enhances Maintainability: Reduces the impact of changes in one class on others, making it easier to modify or replace components.
  • Increases Flexibility: Allows for easier adaptation and evolution of the system without requiring extensive modifications.
  • Improves Reusability: Facilitates the reuse of classes in different contexts since they are less dependent on specific implementations.
  • Simplifies Understanding: Makes the system easier to understand by reducing interdependencies.
49
Q

What are Essential Use Cases?

A

Essential Use Cases describe the fundamental interactions between users and a system, focusing on the user’s goals without detailing specific implementations. They capture the “what” of user interactions, emphasizing the essential actions and outcomes.

50
Q

What are the key characteristics of Essential Use Cases?

A

Key characteristics of Essential Use Cases include:

  • High-Level Abstraction: Focuses on user goals and interactions rather than technical details.
  • Technology Agnostic: Does not depend on specific technologies or interfaces.
  • Clear User Perspective: Centers on the user’s needs and outcomes.
51
Q

What are Concrete Use Cases?

A

Concrete Use Cases provide detailed descriptions of specific scenarios in which users interact with the system. They include step-by-step instructions, alternate flows, and often specify the system’s user interface and other implementation details.

52
Q

What are the key characteristics of Concrete Use Cases?

A

Key characteristics of Concrete Use Cases include:

  • Detailed Interaction Flows: Describes the sequence of actions taken by users and the system.
  • Specific Implementation Details: Includes information about user interfaces and technology used.
  • Real-World Scenarios: Represents actual use scenarios to guide development and testing.
53
Q

What is «include» in use case relationships?

A

The «include» relationship in use cases indicates that a use case contains the behavior of another use case as part of its process. It is used to extract common behavior shared by multiple use cases, promoting reuse and reducing redundancy.

54
Q

What are the key characteristics of the «include» relationship?

A

Key characteristics of the «include» relationship include:

  • Mandatory Invocation: The included use case is always executed as part of the base use case.
  • Reuse of Functionality: Promotes the reuse of common behavior across different use cases.
  • Simplifies Use Cases: Helps simplify complex use cases by breaking them into smaller, reusable components.
55
Q

What is «extend» in use case relationships?

A

The «extend» relationship in use cases defines an optional extension of a base use case, allowing for additional behavior to be added under certain conditions. It is used to represent variations or optional features that enhance the base use case.

56
Q

What are the key characteristics of the «extend» relationship?

A

Key characteristics of the «extend» relationship include:

  • Optional Invocation: The extending use case is executed only under certain conditions or scenarios.
  • Enhances Functionality: Provides additional features or behavior without modifying the base use case.
  • Flexible Design: Allows for variations in behavior based on specific triggers or user choices.
57
Q

What are domain concepts?

A

Domain concepts are the key entities, processes, and relationships relevant to the problem domain that the software system is designed to address. They represent the vocabulary of the business domain and help in understanding the requirements and functionalities of the system

58
Q

What are the key characteristics of domain concepts?

A

Key characteristics of domain concepts include:

  • Business-Oriented: Reflect the real-world entities and processes specific to the business context.
  • High-Level Abstraction: Represent essential aspects of the domain without focusing on implementation details.
  • Foundation for Requirements: Serve as the basis for identifying requirements and functionalities in the system.
59
Q

What are design classes?

A

Design classes are specific implementations of domain concepts that define the structure, behavior, and interactions of the software components in the system. They include attributes, methods, and relationships relevant to the design and implementation of the system.

60
Q

What are the key characteristics of design classes?

A

Key characteristics of design classes include:

  • Implementation-Oriented: Focus on how domain concepts will be realized in the software system.
  • Detailed Structure: Define attributes, methods, and interactions among classes.
  • Guides Development: Serve as a blueprint for developers, guiding the coding and construction of the system.
61
Q

What is a domain model?

A

A domain model is an abstract representation of the problem domain, capturing the key entities, relationships, and behaviors relevant to the system being developed. It focuses on the concepts of the domain and their interactions without considering implementation details.

62
Q

What are the key characteristics of a domain model?

A

Key characteristics of a domain model include:

  • Conceptual Representation: Highlights essential business concepts and their relationships.
  • High-Level Abstraction: Avoids implementation specifics, focusing on what the system represents.
  • Foundation for Requirements: Serves as a basis for understanding requirements and guiding the development process.
63
Q

What is a design class model?

A

A design class model is a detailed representation of the classes and their interactions as they will be implemented in the software. It specifies the structure, behaviors, and relationships of the design classes, including attributes and methods.

64
Q

What are the key characteristics of a design class model?

A

Key characteristics of a design class model include:

  • Implementation-Oriented: Focuses on how the domain concepts will be implemented in code.
  • Detailed Structure: Defines classes with specific attributes, methods, and access modifiers.
  • Guides Development: Serves as a blueprint for developers, providing detailed information for coding and system construction.
65
Q

What are System Sequence Diagrams (SSDs)?

A

System Sequence Diagrams (SSDs) illustrate the interaction between an external actor (user or system) and the system during a specific scenario. They focus on the flow of messages from the actor to the system and highlight the inputs and outputs without detailing internal processes.

66
Q

What are the key characteristics of System Sequence Diagrams (SSDs)?

A

Key characteristics of SSDs include:

  • Actor-Centric: Centers around the interactions of an external actor with the system.
  • Message Flow: Displays the sequence of messages exchanged, including inputs and outputs.
  • High-Level View: Provides a simplified view of interactions without internal processing details.
67
Q

What are Sequence Diagrams (SDs)?

A

Sequence Diagrams (SDs) represent the interactions between objects or components over time, detailing the sequence of messages exchanged to carry out a particular process or operation. They show how objects collaborate to achieve a specific goal.

68
Q

What are the key characteristics of Sequence Diagrams (SDs)?

A

Key characteristics of SDs include:

  • Object-Centric: Focuses on the interactions between multiple objects or components.
  • Detailed Message Flow: Shows the order and timing of messages exchanged, including method calls and responses.
  • Lower-Level View: Provides a more detailed understanding of how the system components interact to fulfill a specific use case or process.
69
Q

What are Architectural Sequence Diagrams?

A

Architectural Sequence Diagrams illustrate the interactions between components or layers of a system architecture, focusing on how high-level components collaborate to fulfill a particular scenario or use case. They emphasize the structural aspects of the system architecture.

70
Q

What are the key characteristics of Architectural Sequence Diagrams?

A

Key characteristics of Architectural Sequence Diagrams include:

  • Component-Centric: Focuses on interactions between architectural components or layers.
  • High-Level View: Provides an overview of the system’s architecture and how components work together.
  • Contextual Understanding: Helps visualize the architecture’s behavior during specific use cases or scenarios.