1/59
Vocabulary flashcards summarizing the main concepts, models, and practices from the software engineering lecture notes.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Object-Oriented Programming (OOP)
A paradigm that organizes software around objects combining data and behavior.
Modularity
Structuring software as independent, interchangeable components; a core OOP benefit.
Reusability
Ability to apply existing code in new situations, reducing development time and cost.
Encapsulation
Keeping an object’s internal state private and exposing controlled access via methods.
Software Validation
Testing activities that confirm the product meets specified requirements.
Spiral Model
Iterative process model focused on continual risk assessment and mitigation.
Waterfall Model
Linear, phase-driven process model with little overlap between stages.
Incremental Development
Building software in small, functional pieces that are integrated over time.
Agile Development
Iterative methods valuing working software, customer collaboration, and adaptability.
Risk Management (SE)
Identifying, analyzing, and controlling project risks throughout development.
Extreme Programming (XP)
Agile method emphasizing pair programming, continuous testing, and frequent releases.
Pair Programming
XP practice where two developers jointly write code at one workstation.
Continuous Testing
Running automated tests frequently to obtain rapid quality feedback.
Scrum
Agile framework organized around time-boxed sprints and defined roles.
Sprint
Fixed-length iteration (e.g., 2–4 weeks) delivering a product increment in Scrum.
Scrum Master
Facilitator who ensures the Scrum team adheres to the framework and removes impediments.
User Story
Brief description of a feature from the end-user’s perspective.
Software Maintenance Cost
Portion of total project expense after deployment—often over 50%.
Working Software (Agile Principle)
Delivering functional code takes precedence over exhaustive documentation.
Responding to Change (Agile Principle)
Adapting to evolving requirements rather than rigidly following a plan.
Customer Collaboration (Agile Principle)
Continuous engagement with customers to ensure the product meets their needs.
Flexibility in Requirements
Spiral advantage allowing requirements to evolve through iterative cycles.
Complexity and High Cost
Key drawback of Spiral development due to intensive risk analysis and iteration.
Software Specification
Gathering and defining system requirements during the planning phase.
Software Design and Development
Creating architecture, coding, and reviewing the software solution.
Software Deployment
Releasing and installing the software in the target environment.
Software Evolution
Enhancement and maintenance activities following initial release.
Rapid Feedback
XP benefit of obtaining quick insight through frequent releases and tests.
Team Dynamics
XP challenge where success relies on strong collaboration and commitment.
Which term in Scrum refers to a list of all desired work on the project?
Product backlog
Which of the following best describes principles of Requirement Engineering?
A task is a coherent chunk of work to be done (for example, eliciting requirements).
An activity is a set of actions that a person or group performs to accomplish a task.
A practice is a proven way of how to carry out certain types of tasks or activities.
What is the correct order of the stages in requirements elicitation?
Discovery, Classification, Prioritization, Specification
What is the primary purpose of requirements engineering?
To establish system services and constraints
In UML, which diagram type is used to model the interactions between actors and system?
Use case diagram
What does a state diagram represent in UML?
System response to events
In UML, what does a class diagram primarily illustrate?
Relationships between system objects
What does 'verification' in V&V stand for?
Have we built it correctly?
Which of the following is a functional requirement?
The system shall allow users to search appointments
What defines the operational context of a system in UML?
Context model
Explain the difference between functional and non-functional requirements?
Functional requirements specify what a system should do, while non-functional requirements define how a system performs tasks, such as its reliability, usability, and performance. Functional requirements describe actions and features, whereas non-functional requirements focus on quality attributes.
What are the three main types of non-functional requirements?
1) Product Requirements, which deal with behavior of the system like performance or reliability.
2) Organizational Requirements, which arise from company policies and standards such as mandated development tools or coding standards.
3) External Requirements, which originates from external sources like legal or regulatory constraints
Why is requirements validation important in the development process?
Validation ensures that the documented requirements reflect what stakeholders actually need. This step is critical because fixing errors in requirements after system delivery can be up to 100 times more expensive than fixing them during early
development.
Validation checks for completeness, consistency, correctness, and feasibility, often through reviews, prototyping, and testing.
Define the concept of 'verification' in the context of V&V?
Verification is the process of checking that the system meets its design and implementation specifications.
It asks, 'Are we building the system right?' It involves reviews, inspections, and testing to ensure that each component is correctly implemented.
Unlike validation, it does not check if the system meets user needs but whether the software was built correctly according to plan.
What is an UML Use Case Diagram and what does it typically show?
A Use Case diagram is a behavioral UML diagram that illustrates the interactions between external actors (such as users or other systems) and the system under development. It shows the functional requirements of the system from the user's perspective and helps in identifying user goals, system boundaries, and how users interact with different functionalities.
Which of the following best describes the Pipe and Filter architecture pattern?
A sequence of data transformations connected by data flows
According to the following bash shell command “cat client_server.txt | grep "Repository" | sort | uniq > output.txt”, which architectural pattern was adopted?
Pipe and Filter Architecture
Which architectural pattern divides an application into three
interconnected components?
MVC
What is the main disadvantage of Peer-to-Peer architecture?
Security risks and data inconsistency
What are Operation Contracts primarily used for?
Specifying preconditions and postconditions of operations
What is the benefit of using Domain Models in early OOSE stages?
Bridge between requirements and design
How does the Multi-tier Client-Server Architecture promote maintainability in enterprise applications?
By allowing each tier to be updated independently with minimal cross-impact
What is the main reason for using Operation Contracts in Object-Oriented Software Engineering?
To formally describe the change in system state caused by operations
Which scenario would most benefit from adopting a Peer-to-Peer (P2P) architecture?
A decentralized file sharing platform for large user bases
Which architecture allows developers to test business logic without a database?
Repository
Given a Use Case (Scenario) of User Placing Online Order, please apply the 4 + 1 View Model of Software Architecture to this case. Your answer should include the name of each view along with a one-sentence description for each
The Logical View involves the user interacting with the cart and order classes.
The Process View shows how the system handles the payment and inventory checks.
The Development View outlines the components the developers manage.
The Physical View demonstrates how these processes are distributed across servers to ensure a fast and reliable experience.
Add the software architectural design 4 + 1 View Model to each
component (fill the view name in red boxes)
What is the purpose of using UML diagrams in system modeling? Name two types of UML diagrams and their uses.
UML (Unified Modeling Language) diagrams are used in system modeling to visually represent the structure, behavior, and interactions of a system, aiding communication between stakeholders and developers. Two types of UML diagrams are:
• Class Diagram: Represents the structure of the system by showing
its classes, attributes, methods, and relationships between classes.
• Sequence Diagram: Shows the flow of interactions between objects
over time, illustrating how messages are passed in a specific use
case
List those five architectural patterns we have learned in the class.
Particularly, specify the main components of a specific pattern which is commonly used for distributed systems, web applications, and network services.
MVC - isolating the user interface from the business logic and data. For web apps, mobile apps, and desktop apps.
Layered - separation of responsibilities into layers. For complex enterprise applications.
Repository - Decouples data access logic from business logic, ease of testing, and modularity. For applications requiring complex data access and storage.
Client-Server - Enables resource sharing between multiple clients over a network. For network applications, web apps, and distributed systems.
Pipe & Filter - Decomposes a process into a series of smaller steps to imporve flexibility and modularity. For data processing applications, compilers, streaming services, and transformations.
Name the following two architectural models
Fat Client Model
Thin Client Model
According to the architectural pattern of this Web Application shown
below, write the contents into the three brackets
Controller, View, and Model