Software Engineering 5 - Tatiana Summary Flashcards
Shortly explain the Software process model: waterfall model
Description:
The Waterfall Model follows a linear, sequential approach to software development, where each phase (e.g., requirements gathering, design, implementation, testing, and maintenance) must be completed before the next phase begins.
Key Characteristics:
Rigid and structured approach.
No overlapping or revisiting previous phases.
Best suited for projects with well-defined requirements.
Example:
Development of government systems or safety-critical applications with stable, predefined requirements.
Shortly explain the Software process model: incremental development
Description:
Incremental Development involves building a system in small, manageable increments or modules. Each increment adds functionality to the system and goes through the phases of development. The system grows with each iteration until the full product is delivered.
Key Characteristics:
Combines iterative development with gradual feature delivery.
Allows feedback after each increment.
Lower risk compared to a single large delivery.
Example:
Building an e-commerce platform where the shopping cart is developed and delivered first, followed by a payment gateway in a later increment.
Shortly explain the Software process model: reuse-oriented development
Description:
Reuse-Oriented Development focuses on building software systems by reusing existing components (e.g., libraries, frameworks, or pre-built modules) rather than developing from scratch.
Key Characteristics:
Reduces development time and costs by leveraging reusable components.
Includes activities such as component selection, customization, and integration.
Suitable for systems where pre-existing modules can be integrated seamlessly.
Example:
A web application built using pre-existing authentication libraries, UI frameworks, and payment API modules.
Shortly explain the Software process model: agile model
Description:
The Agile Model emphasizes iterative and incremental development, with a focus on flexibility, collaboration, and delivering working software in small cycles. Agile prioritizes customer collaboration, adaptability to change, and continuous improvement.
Key Characteristics:
Short development cycles (sprints).
Regular stakeholder feedback.
Self-organizing, cross-functional teams.
Welcomes changing requirements even late in development.
Example:
A mobile app where new features and updates are continuously released based on user feedback, improving the product over time.
Choose one software process model that best fits each scenario (Or combination of models). Briefly explain your solution:
A medical device manufacturer is developing a heart-rate monitor with embedded software. The software must be certified to meet healthcare safety standards (e.g., FDA regulations). Any bug could have serious real-world consequences.
Medical Device Heart-Rate Monitor Software: Waterfall Model with Incremental Development to meet safety standards and support gradual testing.
Solution: A Waterfall Model with incremental testing phases is ideal due to the need for certification and safety-critical requirements.
Justification:
The Waterfall Model provides structured, well-documented phases (requirements, design, implementation, and validation) necessary for regulatory approval (e.g., FDA certification).
However, Incremental Development can be combined to break the system into smaller functional modules (e.g., signal processing, user interface) that are validated incrementally.
This ensures the overall system meets safety requirements without overwhelming complexity.
Example: The initial increment may focus on monitoring and displaying heart rate, followed by adding alarms for abnormal readings.
Choose one software process model that best fits each scenario (Or combination of models). Briefly explain your solution:
A mid-sized game studio aims to build a proprietary graphics engine for next-generation consoles, focusing on photorealistic rendering. The engine must integrate with various platforms and hardware and be licensed to other studios for revenue.
Graphics Engine for Next-Gen Consoles: Incremental Development with Reuse-Oriented Development for modular development and hardware integration.
Solution: Incremental Development is suited for gradually building engine modules (e.g., rendering, physics, shaders), while Reuse-Oriented Development is appropriate for integrating hardware libraries and existing APIs.
Justification:
The project is highly complex and involves many independent sub-systems that can be developed incrementally and integrated over time.
Reuse-Oriented Development saves time by leveraging pre-existing hardware drivers and platform APIs rather than building everything from scratch.
Incremental releases also allow testing the engine across multiple platforms early in development.
Example: The team may first implement a rendering core that works on PC and consoles, followed by integrating real-time ray tracing support.
Choose one software process model that best fits each scenario (Or combination of models). Briefly explain your solution:
A new start-up wants to make a highly realistic simulation game depicting the work of a car mechanic. The developers plan to expand their game based on releases of new DLCs.
Simulation Game for a Car Mechanic: Agile Model for flexibility and DLC-based expansion.
Solution: The Agile Model is ideal due to the focus on an evolving game and future expansions (DLCs).
Justification:
Agile allows the team to release a core version of the game early and expand iteratively based on user feedback and changing trends.
Frequent releases (sprints) allow developers to deliver working gameplay features while collaborating with stakeholders to refine mechanics (e.g., customizing cars, adding tools).
Agile supports DLC expansions by iterating on existing content and adding new features.
Example: In the first release, the game may support basic repairs, while later sprints introduce engine rebuilds, performance tuning, and additional vehicles.
Choose one software process model that best fits each scenario (Or combination of models). Briefly explain your solution:
A team of data scientists is building a research tool to analyze medical images using machine learning. They expect new algorithmic breakthroughs and changes in data-processing pipelines to occur frequently, especially as new research is published.
Medical Image Analysis Tool: Agile Model for rapid iteration and adaptation to new research findings.
Solution: The Agile Model is most suitable due to the frequent changes in algorithms and data pipelines.
Justification:
Machine learning research evolves rapidly, requiring the team to adapt to breakthroughs and new research findings.
Agile supports frequent experimentation, prototyping, and adjustments, allowing the tool to remain state-of-the-art.
Collaboration with researchers ensures that algorithm improvements can be tested and integrated quickly during each sprint.
Example: The team may first implement a baseline neural network model for image classification and iteratively improve it with new algorithms as research progresses.
Explain: Requirements Engineering (RE)
Requirements Engineering (RE) is the process of defining, documenting, and maintaining the requirements for a software system.
Explain: User Requirements
User Requirements describe what the users expect the system to do, typically in a natural language format. These are high-level goals or functions the system should support.
System Requirements
System Requirements specify the detailed and precise functionality and constraints of the software system. These are usually documented in a formal or technical way and are divided into functional and non-functional requirements.
Functional Requirements
Functional Requirements: Describe what the system should do.
Non-Functional Requirements
Non-Functional Requirements: Describe how the system performs tasks (e.g., performance, security).
Validation
Validation in software engineering ensures that the system meets the user’s needs and requirements. It answers the question: “Are we building the right system?”
Domain Requirements
Domain Requirements are requirements that arise from the specific domain or context in which the system operates.
User Story
User Story is a simple, informal description of a feature from the perspective of an end-user. It follows a common structure:
Structure:
“As a [type of user], I want [some goal] so that [reason/benefit].”
Multiplayer online fantasy game, in a setting of medieval Europe. Give examples of requirements that might be imposed on such a project. Make 3 User requirements:
User requirements:
1) Players should feel immersed in a realistic medieval European setting with detailed landscapes, buildings and characters.
2) Players should be able to create and customize their characters easily.
3) Players should be able to communicate with each other in-game.
4) Players should be able to participate in real-time combats
Multiplayer online fantasy game, in a setting of medieval Europe. Give examples of requirements that might be imposed on such a project. Make 3 System requirements:
System requirements:
1) The system must use client-server architecture to ensure real-time multiplayer functionality.
2) The system must run on Windows and macOS
3)The system must support at least 100 000 concurrent players without performance degradation.
Multiplayer online fantasy game, in a setting of medieval Europe. Give examples of requirements that might be imposed on such a project. Make 3 Functional requirements:
Functional requirements:
1) The system must allow users to select hairstyles, armor, and colors for their characters during character creation.
2) The chat system must support real-time text communication and store logs.
3) The system must allow players to perform parries, blocks, and dodges using keyboard and mouse or controller inputs.
4) The system must allow players to create accounts, log in securely, reset passwords, and manage personal details.
Multiplayer online fantasy game, in a setting of medieval Europe. Give examples of requirements that might be imposed on such a project. Make 3 Non-functional requirements:
Non-functional requirements:
1) The system must ensure that combat interactions (e.g., attacks, skill usage) occur within 150 milliseconds of player input under standard internet conditions (ping 50 ms or less).
2) The map for each city with 3 districts must load within 2 seconds
3) The backend servers must process and respond to user actions (e.g., login, combat interactions) in under 500 milliseconds during peak loads.
Multiplayer online fantasy game, in a setting of medieval Europe. Give examples of requirements that might be imposed on such a project. Make 3 Domain requirements (Note that these often overlap with functional requirements):
Domain requirements (Note that these often overlap with functional requirements):
1) The game world is structured around five kingdoms, and each kingdom’s history is told through a main quest containing 10 interconnected sub-quests.
2) The game must feature combat mechanics based on medieval knightly traditions, including sword fighting, jousting, and shield defences
3) Each city must include distinct districts, such as a market square, residential area, and castle grounds, to reflect medieval urban planning.
Multiplayer online fantasy game, in a setting of medieval Europe. Give examples of requirements that might be imposed on such a project. Make 3 User stories:
User stories
1) As a mage, I want to learn new spells by taking magical trials to gain more powerful abilities for combat.
2) As a player, I want to customize my character’s appearance, including clothing, hairstyles, and accessories, so that I can express my individuality.
3) As a player, I want to participate in server-wide world events
Model-View-Controller (MVC) - What are some scenarios where the Model-View-Controller (MVC) pattern would be appropriate?
Mention 5
Web Applications
Mobile Applications
Desktop GUI Applications
Games with Complex UI Components
SaaS Platforms (Software as a Service)
Why is the MVC pattern approriate for developing Web Applications?
The model represents the business logic (e.g., retrieving products from the database), the view handles the UI (e.g., HTML pages), and the controller manages user input (e.g., handling form submissions).
Multiple views can be generated for different devices (desktop, mobile) while reusing the same model and controller logic.
Why is the MVC pattern approriate for developing Mobile Applications?
In mobile apps, separating the UI (View) from data handling (Model) and input events (Controller) makes it easier to adapt the UI for different screen sizes and orientations.
Improves testability—you can test the model and controller logic separately from the view.