chapter 3 Flashcards

(49 cards)

1
Q

What is Software Architecture?

A

Defines the overall structure of the system, including major components and their interactions. Focuses on non-functional requirements such as scalability, security, performance, and maintainability.

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

What does Software Architecture decide?

A

Decides technology stack, deployment strategy, and data storage solutions.

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

What is the purpose of Software Architecture?

A

Provides a high-level blueprint before any actual coding begins. Helps teams understand the ‘what’ and ‘where’ of the system’s major parts.

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

What is Software Design?

A

Describes the detailed implementation of individual components. Focuses on functional requirements, such as how features and operations will be implemented.

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

What does Software Design specify?

A

Specifies class structures, methods, interfaces, and their responsibilities.

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

What does Software Design answer?

A

Answers the ‘how’ of the software development process at the code level.

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

What is the significance of the design phase in software development?

A

Design is the highly significant phase in software development where the designer plans how software should be produced to make it functional, reliable, and reasonably easy to understand, modify, and maintain.

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

What does the design process take into account?

A

The design takes into account the requirements specified in the SRS document and complies with the software architecture, components, algorithms, interfaces, and other details necessary to realize the desired system functionality.

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

What is Software Design?

A

The process of transforming user requirements into a suitable form that assists programmers in coding and implementing the software.

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

What does the software design phase involve?

A

Involves the creation of a design document that is based on the customer requirements specified in the Software Requirement Specifications (SRS) document.

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

What is the primary objective of the software design phase?

A

To convert the SRS document into a comprehensive design document (Software design document) that provides a blueprint for developing the software system.

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

What is the role of the designer in the design process?

A

The designer, in collaboration with the users, engages in a process of exploration and analysis, utilizing their professional expertise and knowledge, to find a solution that meets the requirements.

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

What does the Software Requirement Specifications (SRS) document provide?

A

Information about ‘what’ a system is intended to do, outlining the functional and non-functional requirements.

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

What does the SRS serve as in the design process?

A

Acts as input to the design process, which focuses on determining ‘how’ the software system will work and be implemented.

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

What does the SRS typically include?

A

An introduction, functional requirements, non-functional requirements, system features, external interfaces, and other relevant details.

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

What is the importance of the SRS in the development process?

A

It acts as a roadmap for the development process, guiding design, implementation, testing, and maintenance activities.

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

What do functional requirements outline?

A

The fundamental services, features, and capabilities expected from a software system.

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

What do functional requirements articulate?

A

The primary operations, inputs, outputs, computations, data handling, and interactions that the system is obligated to carry out.

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

How are functional requirements typically derived?

A

Derived from the business requirements and user stories, defining the system’s intended behavior from the user’s perspective.

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

What do non-functional requirements describe?

A

The comprehensive characteristics, attributes, limitations, and features that are imperative for the software system to possess.

21
Q

What aspects do non-functional requirements outline?

A

The level of performance expected from the system’s functions and the restrictions within which it is obliged to function.

22
Q

What are some examples of non-functional requirements?

A

Performance, security, usability, reliability, maintainability, portability, and compliance with industry standards, regulations, and legal requirements.

23
Q

What is modularization in software development?

A

The procedure of dividing software into several compact modules, each capable of functioning autonomously.

24
Q

What are the benefits of modularization?

A

Enhances software comprehensibility, promotes reusability, and simplifies the testing process.

25
What are coupling and cohesion?
Fundamental concepts in software engineering utilized to evaluate the design quality of a software system.
26
What does coupling refer to?
The extent of interdependence among software modules.
27
What does high coupling imply?
Close connections between modules, where modifications in one module can potentially impact others.
28
What does cohesion signify?
The internal capabilities of a module, also referred to as intra-module binding.
29
What does high cohesion indicate?
A stronger bond among the elements within a module, resulting in improved stability and dependability.
30
What are the types of coupling?
Data, Stamp, Control, External, Common, and Content.
31
What is data coupling?
Occurs when modules interact by passing only the necessary data as parameters, without depending on any internal data structures or external shared resources.
32
What is stamp coupling?
Happens when modules share a complex data structure, but only a part of it is actually needed.
33
What is control coupling?
Occurs when one module passes control information (like flags or commands) to another module, influencing its behaviour.
34
What is external coupling?
Happens when modules rely on external systems or devices for communication or data sharing.
35
What is Control Coupling?
Occurs when one module passes control information (like flags or commands) to another module, influencing its behaviour.
36
What is External Coupling?
Happens when modules rely on external systems or devices (like shared files, databases, or hardware) for communication or data sharing. ## Footnote If the external system changes or fails, all modules using it are affected.
37
What is Common Coupling?
Multiple modules share access to the same global data or variables, causing hidden dependencies and unexpected side effects. ## Footnote One change in the global variable can affect multiple modules, making bugs harder to find.
38
What is Content Coupling?
The most tightly coupled type, where one module directly modifies or relies on the internal workings of another module, breaking modularity and making debugging very hard.
39
What are the types of Cohesion?
Functional, Sequential, Communication, Procedural, Temporal, Logical, Coincidental.
40
What is Functional Cohesion?
All parts of the function work together to perform one clear task, like calculating average. This is the highest and best form of cohesion. ## Footnote Example: def calculate_average(numbers): total = sum(numbers); return total / len(numbers)
41
What is Sequential Cohesion?
Each step depends on the result of the previous one, forming a logical sequence. ## Footnote Example: def process_student_data(): data = get_student_data(); processed = clean_data(data); save_to_database(processed)
42
What is Communication Cohesion?
All tasks operate on the same data object, so they’re closely related. ## Footnote Example: def update_profile(user): update_name(user); update_email(user); update_address(user)
43
What is Procedural Cohesion?
Tasks are grouped because they follow a specific control order during execution. ## Footnote Example: def user_login(): verify_user(); log_login_time(); redirect_to_dashboard()
44
What is Temporal Cohesion?
These tasks occur around the same time when the app starts, grouped by when they are executed. ## Footnote Example: def app_startup(): connect_to_server(); load_settings(); show_welcome_screen()
45
What is Logical Cohesion?
One function handles several logically related tasks, but only one runs per call. ## Footnote Example: def handle_input(input_type, data): if input_type == 'keyboard': handle_keyboard(data); elif input_type == 'mouse': handle_mouse(data); elif input_type == 'voice': handle_voice(data)
46
What is Coincidental Cohesion?
These tasks are unrelated and randomly placed in one function, making the code confusing. ## Footnote Example: def random_tasks(): play_sound(); calculate_tax(); check_weather()
47
What is the difference between Coupling and Cohesion?
Coupling refers to inter-module binding, while Cohesion refers to intra-module binding.
48
What does low coupling aim for in software development?
It is advisable to strive for low coupling when creating a software system.
49
What does high cohesion aim for in software development?
It is recommended to aim for high cohesion when creating a software system.