Unit 1 - Unit 3 Flashcards

Midterm Exam Preparation.

1
Q

As society moves from personal computer systems to web-based computer systems, what has increased?

A
  • System and network heterogeneity
  • Connectivity and diversity
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What does cloud computing allow us to utilize the web as a service provider?

A

Computing and Storage.

Cloud applications make computing a utility.

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

What is necessary for data in a distributed system?

A
  • Security
  • Data integrity
  • Privacy
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the key operational expectations of software systems?

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

What are some factors that significantly affects a software’s stability?

A
  • Number of Software Bugs
  • Severity of the software bugs
  • Modularity and Reliability
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is the goal when it comes to making changes in the software, how should changes be accommodated?

A

The objective is to accommodate changes with minimum or no affect to the stability of the software

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

How do end users quantify software quality?

A

End users are more interested in the Usability and Accuracy of the software.

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

How do software designers quantify software quality?

A

Software designers are more interested in Modularity and Modifiability.

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

What was introduced in order to accommodate different stakeholder’s viewpoints on software quality?

A

Software quality Frameworks were introduced.

  • ISO-9126
  • SEI-CMM
  • etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

List the Six Software Quality Factors of ISO-9126

A
  1. Functionality
  2. Reliability
  3. Usability
  4. Maintainability
  5. Portability
  6. Efficiency

ACRONYM - FRUMPE

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

Define Functionality

A

The set of properties of the software that satisfy stated or implied behaviors of the software system.

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

Where are the properties defined for a software system Functionality?

A

In the software system’s specifications and requirements.

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

Define Reliability

A

The ability to maintain the stated set of performance for the expected time period or the repeated use of the same functionality.

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

Which of the Six Software Quality Factors in ISO-9126 depend on the properties of Fault Tolerance and Recoverability?

A

Reliability.

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

Which of the Six Software Quality Factors in ISO-9126 depend on the properties;

  • Learnability
  • Understandability
  • Operability
A

Usability

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

Define Usability

A

The characteristics of a software system that define how well someone can learn and use the software.

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

What is Efficiency of a software system?

A

The timed and resource usage behavior of the system

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

What part of software designing affects the timed behavior?

A

This affected by Algorithm design, component interactions, the code, etc.

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

What part of software designing affects the resource usage?

A
  • Data Structures
  • Memory Management
  • Algorithms.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What is defined by how well a software system can accommodate change?

A

The system’s modifiability which affects the system’s Maintainability

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

What are some of the key features needed to be relatively easy for a system to be considered to have good Maintainability?

A
  • Ease in the ability to change the design.
  • Ease in the ability to add new code modules.
  • Ease in the ability to adapt to new technologies.
  • Ease of the system to be tested after modifications are made.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

A system that can be run in different hardware, software and runtime environments, can be said to have what characteristic?

A

Portability.

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

Tell what the acronym FRUMPE stands for?

A

F - Functionality
R - Reliability
U - Usability
M - Maintainability
P - Portability
E - Efficiency

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

True or False? Software systems just have Functional requirements.

A

False.

Software Systems have both Functional and Non-Functional requirements.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
True or False? Software quality factors are important considerations that may not have been specified in formal specificatons.
True.
26
What are some of the characteristics of Modern Software System?
- Large Code Base - Heterogeneous Resources - New Programming Languages - Distributed Resources.
27
Where can most failures in a Software System be traced back to?
Poor Software Design and Architecture.
28
What are some of the responsibilities of a Software Designer?
- Constantly Being aware of advances in Technology - Modifying Code while keeping Integrity. - Evaluation of quality factors. - Addressing Functional and Non-Functional requirements.
29
What pair of factors are Software Engineers most interested in ?
Modularity and Modifiability
30
Which operational expectation should deal with technological advancements in modern software systems
Changeability which is part of Maintainability.
31
Consider the safety critical software that is used in chemotherapy devices to control radiation level. What factor is the main concern in such systems
Functionality. Which ensures that specified behaviors are in place.
32
Fault tolerance and Recover-ability are two key properties under which software quality factor?
Reliability
33
What does the efficiency of a software system can be characterized by?
Resource and Timed Usage of the system
34
Where Can Most Software Failures Be Traced To?
Software Design and Software Architecture
35
True or False? Software Design and Software Architecture are the same.
False.
36
True or False? Software Architecture focuses system structure and connections between components
True.
37
What is done first, Software Design or Software Requirement Analysis
Software Requirement Analysis is completed before Software Design.
38
What is the focus in Software Architecture?
The focus is the organization of different software components and the methods that components will communicate with each other
39
Which quality factor of software systems is related to the timed behavior and resource usage behavior?
Efficiency
40
What is Software Architecture?
Software architecture is a collection of structures and connections among the structures that depict the layout of the software system
41
Requirements and Risk Analysis is the Viewpoint of which stakeholder?
Customers/End Users
42
As a stakeholder, what viewpoint is the development team focused on?
- Detail Design - Implementation Details - Testing
43
Hardware and Software Configurations are the viewpoint of what stakeholder?
Deployment Team
44
What should be the key characteristic of components in a software system?
Loosely Coupled and Highly Cohesive.
45
What technologies were invented for the web?
- HTML - URI - HTTP
46
From software architecture design perspective, what are some factors that will lead to a better software architecture design initially?
- Design that doesn't depend on the code that implements it - Focus on the key elements and their relationship of the software system independent from the technology
47
Who is best known as the inventor of the World Wide Web?
Sir Tim Berners-Lee.
48
What idea was proposed that lead to the development of HTML, URI, and HTTP?
Information Managment.
49
What are some of the observations that can be found in the architecture of the World Wide Web?
- Initial design does not depend on the program code that implement it. - Initial design represents key design elements and their relationships. - Relationships are represented as protocols and data exchange/presentation rules are independent of the technology.
50
Which operational expectation should deal with technological advancements in modern software systems?
Changeability, which leads to Maintainability.
51
What are the two main sources of development challenges in modern software systems?
Distributed Resources and System Size
52
What are some factors that directly impact the stability of changeable software systems?
- Satisfying quality factors. (Ex. Modularity) - Software Bugs. - Severity of Software Bugs.
53
List some software requirement in the software development process?
- UI Requirements - Deployment Requirements - Performance Requirements
54
In what viewpoint are customers or end users directly involved?
- Requirements - Risk Analysis
55
True or False? Only functional requirements are taken into consideration during the software architecture design process
False
56
What are the key technologies that make the foundations of WWW?
- HTTP - URI - HTML / Markup Language
57
True or False? If a software is durable, then it cannot be changeable.
False. Software can be both durable and changeable.
58
What are the key diagnostics for a usable software system?
- Learnability - Operablity - Understandability
59
What does an object represent in Software Engineering?
An object represents a collection of related functionality and data.
60
What is an Object?
An object is a computational entity that encapsulate data and related methods. In large systems, objects are related to each other and communicate with each other at runtime, while performing system operations.
61
What is Abstraction?
Is the concept of hiding background details or implementation details of an object.
62
How is Data Abstraction implemented?
Data abstraction is implemented as a Data Structure. These are the variables that describe the object.
63
How is Procedural Abstraction Implemented?
Procedural abstraction is implemented by the use of methods, which help abstract the behavior of the object.
64
List some benefits of Information Hiding.
- Limits the Global impact of local design decisions. - Emphasizes communication through controlled interface. - Discourages the use of global data. - Leads to encapsulation.
65
What is encapsulation?
It is the bundling of data along with the methods that operate on the data into a single unit.
66
What does the data or attributes of an object provide?
It provides a means of describing the object.
67
What do the methods of an object provide?
It provides a means of describing the behavior of the object.
68
When designing objects using Object-Oriented programming, what are underlying concepts of design?
- Modularity - Abstraction - Architecture
69
What does Information Hiding discourage the use of?
It discourages the use of "global" data.
70
In Object-Oriented system, what models the behavior of an object?
The methods model the behavior of an object. While the Variables and attributes describe the characteristics of an object.
71
The three artifacts are (1) use cases, (2) use case diagrams, and (3) class responsibility collaborator diagrams. When do these three artifacts effectively become the communication medium among the stakeholders
At the beginning of the project cycle.
72
What is the main objective of analysis modeling?
To Bridge the requirement and the design of a software project
73
Why are artifacts useful?
The generally can be understood by both technical and non-technical stakeholders.
74
What are the steps in analysis modeling?
- Scenario-Based Models - Class Models - Flow Models - Behavioral Models
75
List the Three Broad Classifications of Objects
- Boundary - Entity - Control
76
Explain what are Boundary Classes
- Serve as interface between the system and environment.
77
Explain what are Entity Classes
- They are independent of the system's interface, they correspond to real-world entities such as the interfaces with databases.
78
Explain what are Control Classes
- They are responsible for coordinating boundary and entity classes. They would receive and handle system events.
79
In Object-Oriented Analysis Modeling, what does a Use Case Diagram do?
- Depicts main functionalities, their relationships, and the actors that invoke the functionalities. - Represents a high-level dynamic view of the system - Has Actors and Use Cases
80
List the relationships when trying to draw Use Cases through iterative process
- Include: Base case is not complete by itself. This relationship completes the needed functionalities of the Base Case. - Extend: Base case is complete. However, this relationship adds extra functionality. - Generalization: Base case has common functionalities that are shared with other cases. Looks like an inheritance relationship.
81
Explain the Basic Flow that is written in a Use Case Scenario?
It is the sequence of events and actions that are in the use case.
82
Within a CRC Diagram what does the class portion provide?
It provides the name of the class and a brief description.
83
Within a CRC Diagram what does the Responsibility portion contain or provide?
It contains all the main functionalities that is provided by the class. Method Names
84
Within a CRC Diagram what does the Collaborator portion contain or provide?
The collaborator portion provides the names of the other classes that interact with the CRC's class.
85
What does CRC Mean?
Class Responsibility Collaborator.
86
When identifying objects what are some potential objects?
- External Entities - Structures - Things - Occurrences or Events - Roles - Organizational Units - Places - Structures
87
How can noun extraction assist in the process of software analysis?
It assists the users in identifying potential objects in they system.
88
When we are documenting objects and object relationships, which relationships can be used as structural relationships?
- Association - Aggregation - Composition - Generalization/Inheritance
89
When we are documenting objects and object relationships, which structural relationship can we consider an "is-a-kind of" relationship?
Generalization/Inheritance
90
When we are documenting objects and object relationships, which structural relationship is considered a "whole-to-part" relationship, where A consists of B, and if A is removed, so is B?
Composition
91
When we are documenting objects and object relationships, which structural relationship is considered a "whole-to-part" relationship, where B cannot exist without being associated with A, but A can exist without B, A Contains B?
Aggregation
92
When we are documenting objects and object relationships, which structural relationship is represented when One needs access to the other and their relationship can be explained by verbs?
Association.
93
Class Model Artifacts For Scenario-Based Models
- Use Cases - User Stories
94
Class Model Artifacts For Class Models
- Class Diagrams - Collaboration Diagram
95
Class Model Artifacts For Flow Models
- DFD's - Data Models
96
Class Model Artifacts For Behavioral Models
- State Diagrams - Sequence Diagrams
97
What is the Non- Structural Relationship Between Objects?
Dependency. This is the case where one Object Uses the other.
98
What Contributions are gained by Class Diagrams?
- Class diagrams represent the static view of a system or part of a system. It’s kind of a “blueprint” of a system or subsystem - Class diagrams helps visualizing and documenting structural features the system. - Class diagrams can be converted to code during the implementation phase
99
What is considered the first step towards actual code?
Object abstraction is the first step towards actual code of the software
100
What Relationship is Shown in this diagram?
Aggregation. - B cannot exist without being associated with A, but A can exist without B - A contains B
101
What Relatioship is Shown in this Diagram?
Composition. - A consists of B - If A is removed, then so is B - B cannot exist without being associated with A
102
What kind of relationship is shown in the diagram ?
Association. - One needs to access the other - Action verb explains the relationship
103
What are the two broad categories of Relationiships between classes?
* Sturctural * Non-Structural
104
What is a Sequence Diagram?
Sequence diagrams describe the dynamic behavior of objects. It describes interactions between objects by depicting the time ordering.
105
What is a Use Case Scenario?
It is a description of a potential way the system is used.
106
What do Sequence Diagrams Show?
Sequence diagrams show the user scenario execution at **_object level._** - Sequence diagrams can be used to explore the logic of complex operations. - Sequence diagrams help identify missing methods, attributes in the classes and refine the class relationships in the class diagram.
107
What is a State-Diagram?
The state diagram is a collection of objects representing their state, state transitions, actions, and state changes due to input. - Usually, the state diagram is used to model the runtime behavior of an object or collection of objects. - State diagrams can be used to model the runtime behavior of a software system as well.
108
Notation of a State Diagram: What Does This Represent?
This is the Initial State. * Represents the starting point of the state diagram.
109
Notation of a State Diagram: What Does This Represent?
This represents a state, * Name of the state represents the state of the object/system at a given point in time.
110
Notation of a State Diagram: What Does This Represent?
It represents a Composite State. * A collection of states transitions can be connected to a composite state
111
Notation of a State Diagram: What does this image represent?
Represents a Transition. * Show the state change of the object and the event that caused the state change.
112
Notation of a State Diagram: What does this image represent?
Represents aFork * Represents an event that causes the object to have two or more concurrent states
113
Notation of a State Diagram: What does this image represent?
Represents a Self Transition * Represents events that do not cause the object to change its state.
114
Notation of a State Diagram: What does this image represent?
Represents a Join * Represents an event that causes the object to have two or more concurrent states
115
List The Importance of State Diagrams?
* State diagrams are useful in modeling objects and systems that exhibit state and state transfer during the runtime. * For such objects, state diagrams represent and model the behavior of objects during their entire life span. * The different states and state changes as well as events causing transitions can be described. * State diagrams help the development team to visualize and analyze the system behavior. * Such analysis enables the development team to uncover design and implementation details of software structures.
116
While analyzing object behavior, which diagram represents a collection of objects with their state, state transitions, actions, and state changes due to input?
State Diagrams
117
In Unified Modeling Language (UML), what is the correct order of State Diagram notations?
Initial State, State, Composite State, and Final
118
In Unified Modeling Language (UML), what are valid transition states used in a State Diagram?
- Fork - Join - Self Transition
119
In object-oriented analysis modeling, which representation technique indicates the first technical documentation towards coding?
120
Which type of object relationship is also referred to as an "is-a-kind of" relationship?
Generalization/ Inheritance
121
What represents the dynamic behavior of objects and their interactions while executing user scenarios?
122
In state diagrams, which UML notation indicates the state change of an object due to occurrence of an event?
Transition
123
What is Software Architecture?
Software architecture is a collection of structures and connections among these structures that depict the layout of the software system.
124
What is one of the key decisions made in the Software Design Process?
The deteremination of the Software Architecture.
125
What Influences Softwaare Architecture?
Software architecture is influenced by requirements, hardware architecture, code design and vice-versa.
126
What drives the design process of Software Architecture Design?
1. Scope of Project 2. Deployment Requirements 3. Previous Experience 4. Intuition 5. Creativity
127
What is the First Major Step in the Software Architecture Design Process?
The first major step in the software architecture design process is the decomposition of the system analysis requirements into units.
128
How are views that are provided by Software Architecture Beneficial?
Software engineers and other stakeholders use these views as a stakeholder communication medium as well as a software development and deployment vehicle in delivering the software.
129
Describe The Conceptual View?
The conceptual view primarily focuses on a high-level view of important design elements (units) and how these design elements are related to each other. The conceptual view does not focus on the hardware and software configurations and platforms needed for deployment
130
Describe The Module View?
The module view focuses on the design of different modules/subsystems. One of the key questions addressed in the module view is how different analysis elements (such as objects) are mapped into each module. Another main focus is on realizing how the conceptual view uses design considerations, software platforms and technologies.
131
Describe the Execution View?
The execution view is focused on how modules are mapped to the runtime platform of the software system, such as memory usage, hardware, other software and platform integrations at runtime. The flow of control happens during the execution of the system.
132
Describe Code View?
| Code view focuses on how module view and execution view can be accomplished through the code (“development components”).
133
What View Focuses On The Consideration Below: How can dependencies be minimized among components (low coupling)?
134
What View Focuses On The Consideration Below: - Impact of the runtime platform with future changes
135
What View Focuses On The Consideration Below: How does the functionality get divided into different product releases (Sprints …etc)?
Conceputal View
136
What View Focuses On The Consideration Below: Quality considerations of the software system, such as performance, fault tolerance, and recoverability
Exectution View
137
What View Focuses On The Consideration Below: How to minimize time and effort needed for product updates?
Code View
138
What View Focuses On The Consideration Below: Runtime considerations such as concurrency, cloud and web API usage
Execution View
139
What View Focuses On The Consideration Below: How can changes can be incorporated with less impact on the current design and the architecture?
Conceptual View
140
What are Software Architectural Patterns?
Architectural patterns are a collection of known solutions that “worked well” in a class of problems that exhibit similar requirements (specially deployment).
141
Describe Client-Server Architecture?
* A distributed system model shows how data and processing is distributed across a range of components. * Servers provide specific services such as printing, data management. * Clients call on services provided by servers. * Usually, clients and servers are distributed across the network.
142
What Architecture Does this Represent?
Client Server Architecure
143
Describe Layered Architecture?
1. Software functionality is divided into different layers of functionality. 2. | Each layer communicates with the layer above and the layer below. No other communication allowed. 3. Such a design strategy improves modularity where layers can be modified with minimum effect to other layers.
144
What Architecture is shown in this picture?
Layered Architecture- Operating System Example 1. A number of different layers are defined. Each accomplishes operations that progressively become closer to the machine instruction set. 2. At the outer layer, components service user interface operations. 3. At the inner layer, components perform operating system interfacing. 4. Intermediate layers provide utility services and application software functions.
145
List Some Types of Architectural Patterns?
1. Layered Pattern 2. Client-Sever Pattern 3. Pipe-filter Pattern. 4. Broker Pattern 5. Peer-To-Peer Pattern 6. Event-Bus Pattern 7. Model-View-Controller Pattern 8. Blackboard Pattern 9. Call and Return
146
Software Architecture Vs Software Design: True or False?: Software architecture is the high-level view of the system representing major units and communication among these major units.
True.
147
Software Architecture Vs Software Design: True or False? Software designers use the knowledge of reference architectural styles such as clientserver, layered, and message passing in designing the architecture.
True.
148
Software Architecture Vs Software Design: Software architecture describes details of each unit implementation and modules inside each unit.
False: Software architecture does not describe details of each unit implementation and modules inside each unit.
149
Software Architecture Vs Software Design: True or False? Software design focuses on each module/unit level design considerations.
True
150
Software Architecture vs. Software Design: What are Key Design Considerations?
- Abstraction - Modularity - Interfaces
151
Abstraction?
- Deals with Information Hiding.
152
What is Modularity?
Modularity is defined as the **“module independence**” by separating concerns of the software into separate modules. The Separtaion of concerns: 1. Functionality 2. Data 3. Quality requirements
153
What is Functional Dependence?
Coupling Degree to which each module depend on other modules to complete its functionality.
154
What can be defined as "Dependence within the module" ?
Cohesion Degree to which data and functionality in a module related to each other.
155
What are Interfaces?
How each unit expose its functionality to other units. * Interfaces should be as generic as possible, so that future changes inside the unit will not affect its interface.
156
Who uses the knowledge of reference architectural style?
Software Designers
157
What is the primary focus of Software Design?
The primary focus of software design is Each Module/Unit level of design
158
What does a well defined Module Exhbit?
High Cohesion and Low Coupling
159
What is Cohesion?
Cohesion is the degree to which the module performs one an only one function
160
What is Coupling?
Coupling is the degree to which the module is “connected” to other modules in the system
161
Why is high coupling not desirable?
High coupling makes modifying parts of the system difficult, e.g., modifying a component affects all the components to which the component is connected.
162
Are Low Cohesion Systems prefereable?
No. High cohesion facilitates better modifiability and testability as other modules interact through the interfaces.In addtion, most of the time, internal changes can be accomplished without affecting external interfaces.
163
What is it called when a software system is decomposed into smaller parts by grouping related functionality and data together?
Modularity
164
When considering a system's modularity, what does a well-defined object exhibit?
High Cohesion and Low Coupling.
165
What word best describes how well the data and procedures within the module perform a single major task and are tightly related to each other?
Cohesion
166
# Coupling What Kind of Coupling Describes this Interaction: One Module Directly connected to the inner workings of another module? Also, is this sort of coupling desirable?
Content Coupling
167
What Kind of Coupling Describes this Interaction: Data in one module is used to determine the order of execution of another module? Also, is this coupling Desirable?
Control Coupling. Control Coupling is not desirable.
168
What Kind of Coupling Describes this Interaction: Two or more modules share a global data item? Also, is this coupling desirable?
Common Coupling. This coupling is not desirable.
169
What Kind of Coupling Describes this Interaction: One module passess elementary data types as parameters to the other? Also, is this desirable?
Data Coupling. This type of coupling will be the most desirable.
170
What kind of coupling is exhibited when, among two modules, Module A directly accesses and changes the Module B data?
Content Coupling
171
What kind of coupling is exhibited when, among two modules, Module A passes a data values method parameter to Module B?
Data Coupling.
172
What kind of coupling is exhibited when two or more modules all use the same data item?
Common Coupling. Common being that it is familiar around numerous modules.
173
What Kind of Cohesion is described below: Elements within the module are not related to each other and put together in a rather abrupt manner with no real semantic meaning?
Coincidental Cohesion. This is not desirable.
174
What Kind of Cohesion is described below: Elements in a component are logically related to each other, but not structurally related.
Logical Cohesion.
175
What Kind of Cohesion is described below: Elements of a module are grouped together as these elements will be exectuted by the system at a particular time during the execution of the program. In addition, a certain sequence of execution exists within elements or those elements are part of the solution represented in the module. Example: Perform Login and Validate User
Procedural Cohesion
176
What Kind of Cohesion is described below: Elements of a module are grouped together as these elements will be executed by the system in a particular time during the execution of the program. However, they do not exhibit a close relationship in the execution order or one element doesn't depend on the other. Example: Shutdown, Startup, Rollback transactions, and recovery of a database.
Temporal Cohesion
177
What Kind of Cohesion is described below: Elements in a module uses same data set for their operations. Such elements are related to each other with respect to data usage. Example: Module performs search, insert, delete, and update operations on a data set.
Communication/Informational
178
What Kind of Cohesion is described below: Elements in the module are related to each other in that output from one element is an input to another.
Sequential
179
What Kind of Cohesion is described below: Elements in the module are related to a well defined set of functions that perform a set of related operations in the system. Example: Bank customer checking account functionality, such as deposit, withdraw, print account statement.
Functional. This is also the most desirable kind of Cohesion possible.
180
What does Cohesion Determine?
It determines how well each element in a module is related to each other.
181
What are the Three Types of Cohesion that should be rarely be used?
- Coincidental - Temporal - Logical
182
List the Four Kinds of Cohesion that are the most desirable.
- Functional - Sequential - Procedural - Communication/Informational
183
What is the interface?
The interface of the module is the communication channel between the module and its environment. It defines what services the software unit provides to the rest of the system, and how other modules can access those services.
184
What is the best way to have the interface of a module? (Specific or Generic and why?)
It is best to have the interface of a module as generic as possible. The reason for this affects the maintainablity and modularity of the software. When a change is made to the inner workings of the module, if the interface is generic modifications will be minimized.
185
What does the specification of an interface communicate to other developers?
- Purpose - Preconditions - Protocols - PostConditions - Quality Attributes
186
The interface module is the communication channel between which two things?
The module and its environment.
187
List All the Types of Couplings?
Content Common Control Stamp Data **C3SD**
188
What is a high level view of a system that represents major units and communication among those units?
Architecture
189
Whar are key considerations in software design?
- Abstraction - Modularity - Interfaces
190
What refers to the separating software concerns into separate modules?
Modularity
191
What makes modifiying parts of a system difficult?
When the system has High Coupling and Low Cohesion.
192
Are These Statements True or False about highly cohesive systems: a. Internal changes are accomplished through affecting external interfaces. b. Data and procedures inside a module are tightly related to each other. c. Cohesion facilitates better modifiability and testability of the software system. d. Cohesion concerns “connectedness” inside each module.
a. False b. False c. True d. True
193
Which types of cohesion are desirable in software system design?
- Sequential - Procedural - Communication - Functional
194
What is meant by abstraction in the context of software design?
Designing modules such that the data and implementation of each module is hidden from other modules
195
True or False: Interfaces define what services the software unit provides to the rest of the system.
True
196
True or False: Interfaces encapsulate the key functionalities into group of components.
False
197
True or False: Interfaces define how other modules can access the software unit services.
True
198
List the Types of Abstractions?
- Data Abstraction - Control Abstraction
199
What are some of the benefits of Using Design Patterns?
- Improved Modularity - Better Testability using known Techniques - Assure software quality attributes that can be derived from known patterns
200
What are Creational Design Patterns?
Creational design patterns provide solutions to instantiate an object in the best possible way for specific situations.
201
What is Structural Design Patterns?
Structural Patterns provide different ways to create a class structure, for example using inheritance and composition to create a large object from small objects.
202
What is Behavioral Design patterns?
Behavioral Pattersn provide ways objects interact with each other, but still provide loose coupling and flexibility to extend easily.
203
Which type of design pattern provides solutions to instantiate an object in the best possible way for specific situations?
Creational
204
What design pattern provides ways to create a class structures?
Structural Design Pattern
205
What is the main objective of Creational Design Patterns?
The main objective is to provide different techniques to instantiate and create ojbect instances efficiently
206
Describe the Factory Design Pattern.
Rather than the client creating the object instance of different types, it uses the service of an object factory to request the type of object instance needed.
207
Describe The Builder Design Pattern.
The builder pattern aims to separate the construction of a complex object from its representation. The same construction process can be used to create different representations.
208
Describe the Singleton Design Pattern:
Class in which only single instance is possible.
209
Describe The Prototype Design Pattern
Provide a prototype of the object (initial setup of the object) that can be copied or cloned. It removes the need for object initialization. Can be used for games such as Chess Games.
210
Describe The Abstract Factory Pattern
Provides an interface to create a group of individual factories with common theme without specifying their concrete classes.
211
Describe Object Pool Design Class
Object pool has a collection of object instances where clients can request them. Once an object instance is assigned to a client it will no longer be available until it is freed.
212
What do Creational design patterns provide?
It provides improved quality factors such as: - Runtime resource usage - Modularity of the design - Modifiability of the design - Testability of the system.
213
Chess is a board game for two players who move their 16 game pieces according to specific rules. The goal is to “checkmate,” or capture the opponent's king game piece. Imagine you are designing a Chess board game. In the initial state, to avoid repetitive object initialization process, which design pattern should you use?
Prototype
214
Suppose you wish to use a web browser for web crawling. There are requirements in the system so there are a limited number of browsers that can be instantiated at a given time. Which design pattern can provide more control over these limited object resources?
Object Pool
215
What do you Strucural Design Patterns Focus On?
These design patterns focus on organizing different classes and objects to form larger structures
216
Describe the Decorator Design Pattern:
Provides a way to build objects from other object instances. This pattern is a replacement to inheritance.
217
Describe Facade Design Pattern:
Facade is a single object representing a complex subsytem.
218
Describe the Adapter Design Pattern:
Matches interfaces between classes.
219
Describe Flyweight Design Pattern:
Object Sharing among uses by setting different values at different usages. Flyweight objects are singleton and it can be used simultaneously by multiple clients.
220
Describe Proxy Design Pattern:
Object representing another object.
221
Which design pattern matches interfaces between classes?
Adaptor
222
Which type of design is a single object representing a complex subsystem?
Flyweight. Also many users can use it simultaneously.
223
What are Behavioral Designn Patterns?
Behavioral Patterns are about identifying common communication patterns between objects.
224
Describe Chain of Responsibility Design Pattern
It is a method of passing requests among participating objects in the system The client is not aware of this chain of responsibility.
225
Describe the Iterator Design Pattern
Sequentially access items in the collectioin without using the implementation of the collection.
226
Describe the Observer Design Pattern:
Change in one object will be notified to other relevant objects.
227
Describe the State Design Pattern
This is useful in situations where the behavior of the object differ based on the state of the object.
228
Describe the Strategy Design Pattern:
Some applications require different algorithms to be executed at different times and the determination is done at runtime.
229
Describe the Mediator Design Pattern:
Mediator is a communication bus that controls how different objects interact with eacnh other.
230
What are the key contributions of these design patterns are to establish communication/interaction among objects in a system while maintaining:
- Modularity - High Cohesion - Low Coupling
231
Which design passes messages to multiple participating objects in the system?
Chain of Responsibility
232