OOP 3 Flashcards
Are two key concepts in software engineering that are used to measure the quality of a software system’s design.
Coupling and Cohesion
____ coupling and ____ cohesion can make a system difficult to change and test.
High; Low
____ coupling and ____ cohesion can make a system easier to maintain and improve
Low; High
It refers to the degree to which elements within a module work together to fulfill a single, well-defined purpose.
Cohesion
It means that elements are closely related and focused on a single purpose
High Cohesion
It means that elements are loosely related and serve multiple purposes
Low Cohesion
Types of Cohesion (9)
Functional
Sequential
Communicational
Procedural
Temporal
Logical
Coincidental
Informational
Layer
It is an ideal situation.
Functional Cohesion
States that every essential element for a single computation is contained in the component
Functional Cohesion
This type of cohesion occurs when all elements or tasks in a module contribute to a single well-defined function or purpose, and there is little to no coupling between the elements.
Functional Cohesion
The most desirable type of cohesion as it leads to more maintainable and reusable code
Functional Cohesion
Type of cohesion where an element outputs some data that becomes the input for other elements
Sequential Cohesion
Type of cohesion where two elements operate on the same input data or contribute towards the same output data
Communicational Cohesion
Occurs when elements or tasks are grouped together in a module based on their interactions with each other
Communicational Cohesion
Elements of this type of cohesion ensure the order of execution
Procedural Cohesion
This type of cohesion occurs when the elements or tasks are grouped together in a module based on their sequence of execution
Procedural Cohesion
Type of cohesion where the elements are related by their timing involved
Temporal Cohesion
This cohesion contains the code for initializing all the parts of the system
Temporal Cohesion
Occurs when elements or tasks are grouped together in a module based on their timing or frequency of execution
Temporal Cohesion
Type of cohesion where the elements are logically related and not functionally
Logical Cohesion
Type of cohesion where the elements are unrelated
Coincidental Cohesion
In this type of cohesion, the elements have no conceptual relationship other than location in source code.
Coincidental Cohesion
It is the worst form of cohesion
Coincidental Cohesion
Occurs when elements or tasks are grouped together in a module based on their relationship to a specific data structure or object
Informational Cohesion
Occurs when elements or tasks in a module are grouped together based on their level of abstraction or responsibility
Layer Cohesion
It refers to the degree of interdependence between software modules
Coupling
It means that modules are closely connected and changes in one module may affect other modules.
High Coupling
It means that modules are independent and changes in one module have little impact on other modules
Low Coupling
Types of Coupling (11)
Data
Data-Structured
Stamp
Sequential
Control
Common
Content
Communicational
Functional
External
Temporal
The modules are said to be coupled like this if the dependency between the modules is based on the fact that they communicate by passing only data
Data Coupling
This type of coupling have components that are independent of each other and communicate through data
Data Coupling
It refers to data that is unused, redundant, or irrelevant within a data processing context
Tramp Data
In this type of coupling, the complete data structure is passed from one module to another
Stamp Coupling
Type of coupling that involves tramp data
Stamp Coupling
They are said to be coupled like this if the modules communicate by passing control information
Control Coupling
In this type of coupling, the modules depend on other modules that are external to the software being developed or to a particular type of hardware.
External Coupling
The modules here have shared data such as global data structures
Common Coupling
In this type of coupling, one module can modify the data of another module, or control flow is passed from one module to another module.
Content Coupling
The worst form of coupling
Content Coupling
This coupling occurs when two modules depend on the timing or order of events, such as one module needing to execute before another.
Temporal Coupling
This type of coupling occurs when the output of one module is used as the input of another module, creating a chain or sequence of dependencies.
Sequential Coupling
This type of coupling occurs when two or more modules share a common communication mechanism, such as a shared message queue or database
Communicational Coupling
This occurs when two modules depend on each other’s functionality, such as one module calling a function from another module
Functional Coupling
This occurs when two or more modules share a common data structure, such as a database table or data file
Data-Structured Coupling
Advantages of Low Coupling
Improved Maintainability
Enhanced Modularity
Better Scalability
Advantages of High Cohesion
Improved Readability
Better Error Isolation
Improved Reliability
Disadvantage of High Coupling
Increased Complexity
Reduced Flexibility
Decreased Modularity
Disadvantage of Low Cohesion
Increased Code Duplication
Reduced Functionality
Difficulty Understanding
Is also called Inter-Module Binding
Coupling
Is also called Intra-Module Binding
Cohesion
Is a type of approach wherein we collect data and use those data in order for us to give a good user experience to our customer whether it’s an app/application or a website
Data-Driven Design
What are the different types of User Experience Data Collection Techniques
Design Analytics
User Experience Research
Multivariate Test Results
Behavioral Flow
A/B Testing
It is a method for developing solutions that enable business strategies and drive measurable business impact
Design Analytics
Three beliefs in data analytics
analysts:
are designers
provide solutions
work measure in impact
This is a method of website optimization in which the conversion rates of two versions of a page - version A and version B - are compared to one another using live traffic
A/B Testing
Is useful in evaluating page design
A/B Testing
It is a technique for testing a hypothesis in which multiple variables are modified
Multivariate Test Results
Its goal is to determine which combination of variations perform the best out of all possible combinations.
Multivariate Test Results
It is a report that visualizes the path users traveled from one page or Event to the next.
Behavioral Flow
This report can help you discover what content keeps users engaged with your site
Behavioral Flow
Are points through which traffic flows
Nodes
It is about diving deep into how customers interact with your brand on a practical, functional level, and observing how easily they can complete their tasks and meet their goals
User Experience Research
It is the process of discovering behaviors, motivations, and needs of your customers through observation, task analysis, and other types of user feedback
User Research
Gives designers an idea of what is happening on a website or app
Quantitative Data
Is needed to shed light on why users do what they do
Qualitative Data
Displaying data ____ is one of the best ways to present information
Visually
Its goal is to improve encapsulation
Research-Driven Design
It is responsible for knowing and maintaining the smallest rectangle that completely contains its image
RasterImage
It has additional knowledge for knowing and maintaining the visibility of individual bits within its image
ShapedImage
It improves encapsulation with respect to subclass clients, ensuring that all inherited behavior is part of the contract of the subclass
Responsibility-Driven Design
Specifies object behavior before object structure
Responsibility-Driven Design
It is the key to increasing the value of such software metrics as reusability, refinability, testability, maintainability, and extensibility
Encapsulation
Four Layers of OO Design Pyramid
Subsystem Layer
Class and Object Layer
Message Layer
Responsibilities Layer
Contains a representation of each subsystems that enable the software to achieve its customer -defined requirements, and implement technical infrastructure in OO Design
Subsystem Layer
It contains class hierarchies that enable system to be created using generalizations in OO Design
Class and Object Layer
Contains the design details that enable each object to communicate with its collaborators in OO Design
Message Layer
Contains the data structure and algorithmic design for all attributes and operations for each project in OO Design
Responsibilities Layer
Emphasis on the design of domain objects in OO Design
Foundation Layer
Play a key role to provide support for interface design, task and data management in OO Design
Domain Objects
Five Criteria for Judging a Design Method’s Ability to Achieve Modularity
Decomposability
Composability
Understandability
Continuity
Protection
Means breaking down a problem into a small number of less complex sub problems in modular design
Decomposability
The ease with which a program component can be understood without reference to other information or other modules
Understandibility
Is satisfied in modular design if a small change in problem specification will trigger a change in just one module or few modules
Continuity
Is satisfied in modular design if the effect of an abnormal condition occurring a run time in a module will remain limited to that module
Protection
Five Basic Design Principles that can be derived for modular architectures
Linguistic Modular Units
Few Interfaces
Small Interfaces
Explicit Interfaces
Information Hiding
States that programming language should be capable of supporting the modularity
Linguistic Modular Units
This principle states that the overall number of communication between modules should be as small as possible
Few Interfaces (Low Coupling)
States that if any two modules communicate, they should exchange as little information as possible
Small Interfaces (Weak Coupling)
States that if two modules communicate it should be in an obvious and direct way
Explicit Interfaces
Can be used to see what other modules may be affected when changing one module
Traceability Matrix
Means all information about a component should be hidden from outside access
Information Hiding
Two major design activities UML is organized into
System Design
Object Design
Its primary objectives is to represent the software architecture
System Design
It is concerned with the structure of the static class model and the connections between components of the model
Conceptual Architecture
It describes the way the system is divided into subsystems or modules and how they communicate by exporting and importing data
Module Architecture
It defines how the program code is organized into files and directories and grouped into libraries
Code Architecture
It focuses on the dynamic aspects of the system and the communication between components as tasks and operations execute
Execution Architecture
It focuses on a description of objects and their interactions with one another
Object Design
Means production of software components which may be freely combined with each other to produce new systems in modular design
Composability