Module 6 Flashcards
Privacy-By-Design Methodology
Software Requirements Specification (SRS)
Detailed document that explains what a software application or system is supposed to do and how it should work. It serves as a guide for developers, designers, and stakeholders to make sure everyone understands the purpose, features, and behavior of the software before building it.
Agile User Stories
Simple descriptions of a feature or function that the software should have, written from the perspective of the user. They help developers understand what the user needs and why, guiding them in building the right functionality. Think of user stories as little “to-do” tasks that describe what a user wants to do with the software, so that the team knows what to build. They are written in plain language, without technical jargon.
Functional Requirements
Describe what a system or software must do. They specify the functions, features, or tasks that the software needs to perform to meet the user’s needs. These requirements focus on the behavior of the system and how it will handle different inputs, process data, and produce outputs. Functional requirements are like instructions that say, “This is what the software should be able to do.” They explain the tasks or actions the software will perform for users. For example, For a music streaming app, a functional requirement might be:
“The app should allow users to search for songs by title, artist, or album.”
This describes a specific function the app needs to have — the ability to search for music. Functional requirements help guide developers to build software that meets the user’s expectations.
Nonfunctional Requirements
Describe how a system should perform rather than what it should do. These requirements focus on the quality attributes of the system, such as performance, security, usability, and reliability. They define the system’s behavior, ensuring it meets certain standards and operates smoothly. Nonfunctional requirements are like the rules for how well the software should work. They don’t describe what the software does but how fast, secure, or easy to use it should be. For example, a shopping website, a nonfunctional requirement might be:
“The website should load within 2 seconds for users with a standard internet connection.”
This doesn’t describe what the website does (like showing products or processing payments), but it sets a performance expectation — how fast the site should be for a good user experience. Nonfunctional requirements ensure the system meets quality benchmarks and operates efficiently under various conditions.
Quality Attributes
Nonfunctional requirements used to evaluate how a system is performing. Privacy would be an example of a quality attribute.
Identifiability
A privacy quality attribute and it is the extent to which a user is identified by an authentication system. An example of this if looking at how much personal information is collected by web server log files and configuring it to record less.
Network Centricity
A privacy quality attribute and the extent to which personal information remains local to the client. An example of this would be a designer choosing to retain personal information on the client side and transfer it to complete the transaction (this minimizes unwanted disclosure and secondary use).
Confidentiality
A privacy quality attribute and the extent to which personal information is accessible by others. In simple terms, it means keeping personal or sensitive data private and making sure that only people with permission can access it. An example would be implementing strong authentication methods (such as multi-factor authentication) and limiting access to sensitive patient information to only authorized medical staff in a healthcare app.
Avaliability
A privacy quality attribute and means data is accessible when needed by an authorized entity within the organization or by the data subject.
Integrity
A privacy quality attribute and is the extent to which the system maintains a reliable state with data free from error. This ensures that data is consistently accurate, complete, current and relevant to the purpose of the context. An example would be ensuring cross-checks to verify entries are correct.
Mobility
A privacy quality attribute and is the extent to which a system moves from one location to another, as in laptop and mobile phone capabilities. An example would be increasing security around bring your own device programs.
High Level Design
An overview or blueprint of how a software system will be structured. It describes the major components, modules, or systems, how they will interact, and the overall architecture of the project. It doesn’t go into deep technical details but focuses on how the big parts fit together. Think of High-Level Design as the plan for building a house. It shows where the rooms are, how they connect, and what the house will look like, but it doesn’t yet show every tiny detail like the wiring or plumbing. An example would be an an online shopping website, a High-Level Design might include:
*A User Interface component (what the users will see and interact with, like product pages and shopping carts).
*A Database component (where all the products, customer information, and orders will be stored).
*A Payment Gateway component (to handle transactions securely).
*A Recommendation System component (to suggest products to customers based on their browsing or purchase history).
The HLD would show how these components interact, such as how the User Interface communicates with the Database to display products or how the Payment Gateway processes payments. This provides a clear vision of the software’s structure without diving into specific code or implementation details.
Low-Level Design
Is a detailed plan that explains how each component or module of the software system will be implemented. It breaks down the High-Level Design (HLD) into smaller, more detailed pieces, specifying things like data structures, algorithms, and the actual code logic. It focuses on how each part of the system works internally. Low-Level Design is like the detailed construction plan for each room in a house. It shows exactly how things like electrical wiring, plumbing, and furniture will be set up, getting into the fine details that will guide the actual building process. An example would be the online shopping website example, if the HLD specifies a User Interface component for displaying products, the LLD would:
*Define how the product data will be retrieved from the database (e.g., through SQL queries or API calls).
*Outline how the products will be displayed on the screen (e.g., HTML templates, CSS styles, and JavaScript functions for user interactions).
*Specify how error messages will be handled if a product is out of stock (e.g., error handling code).
*Detail the algorithms for sorting and filtering products based on price or rating.
Low-Level Design provides the instructions for how to write the actual code for each module, so developers know exactly how to implement each feature of the system.
Loose coupling
Refers to designing different parts (or modules) of a system so that they are mostly independent of each other. This means changes in one part of the system won’t significantly affect or break other parts, making the system more flexible and easier to maintain. Loose coupling is like building with Lego blocks—each block can stand on its own and be changed or replaced without needing to rebuild the entire structure. The blocks work together, but they’re not tightly glued together. An example would be in an e-commerce website, you might have a Payment Module and an Order Processing Module. If these two modules are loosely coupled:
*The Payment Module can be updated to add a new payment method (like PayPal) without affecting how the Order Processing Module handles orders.
*They communicate with each other through a simple interface (like an API), but they don’t need to know the inner workings of each other.
This way, each module can be improved, fixed, or replaced without causing issues in the rest of the system.
Information hiding
Identifies data that has been assigned to specific levels of classification and restricts access to that data via limited class functions.