Midterm 1 Practice Flashcards
What is Software Engineering/Development?
The application of engineering principles to design, develop, test, and maintain software systems.
What is Programming?
The act of writing code to solve specific problems, often without considering broader software design or maintenance concerns.
What is Computer Science?
The theoretical study of algorithms, computation, and data structures, forming the foundation for software engineering.
How is Software Engineering different from Programming?
Software engineering involves a structured, engineering-based approach to software development, while programming is just writing code.
How is Software Engineering different from Computer Science?
Software engineering focuses on practical application, while computer science is more theoretical.
What is the Waterfall model?
A sequential, structured software development approach where each phase must be completed before moving to the next.
What is the Incremental model?
A software development approach where functionality is built and delivered in small, usable parts.
What is the Iterative model?
A software development approach that involves repeated cycles of development and refinement based on feedback.
How does the Waterfall model compare to the Incremental model?
Waterfall is rigid and sequential, while Incremental delivers functionality in parts, allowing partial system use earlier.
How does the Waterfall model compare to the Iterative model?
Waterfall follows a fixed plan, while Iterative allows continuous improvement through repeated cycles.
Why is the Waterfall model sometimes criticized?
It struggles with changing requirements and lacks flexibility, making it difficult to adapt mid-project.
What are the phases of the software lifecycle?
- Requirement Analysis – Gather and define user needs. 2. Design – Create system architecture and detailed specifications. 3. Implementation – Write and integrate code. 4. Testing – Identify and fix defects. 5. Deployment – Release the software for use. 6. Maintenance – Ongoing bug fixes, updates, and improvements.
What happens in the Requirement Analysis phase of the software lifecycle?
Gather and define user needs, setting the foundation for development.
What happens in the Design phase of the software lifecycle?
Create system architecture and detailed specifications.
What happens in the Implementation phase of the software lifecycle?
Write and integrate the code based on design specifications.
What happens in the Testing phase of the software lifecycle?
Identify and fix defects to ensure software works as expected.
What happens in the Deployment phase of the software lifecycle?
Release the software for users to access and utilize.
What happens in the Maintenance phase of the software lifecycle?
Fix bugs, update features, and improve system performance over time.
What is Incremental Development?
A development approach where the system is built in small, usable parts (increments).
What is Iterative Development?
A development approach where the software is refined in repeated cycles based on feedback.
What is Agile Software Engineering?
A flexible, iterative approach to software development that emphasizes collaboration, customer feedback, and rapid delivery.
What are the four core tenets of the Agile Manifesto?
- Individuals and interactions over processes and tools. 2. Working software over comprehensive documentation. 3. Customer collaboration over contract negotiation. 4. Responding to change over following a plan.
What is a Daily Standup in Agile?
A short daily meeting where team members update each other on progress, blockers, and plans.
What is Sprint Planning in Agile?
A meeting where the team selects tasks for the next sprint based on priorities and capacity.
What is a Sprint Review in Agile?
A meeting where the team demonstrates completed work to stakeholders.
What is a Sprint Retrospective in Agile?
A meeting where the team discusses what went well, what didn’t, and how to improve for the next sprint.
How do you determine which tasks go in which iteration when planning a project?
Consider priorities, dependencies, and team velocity to balance workload and deliver value.
What are common methods for estimating pending tasks?
- Story points: Relative complexity-based estimation. - T-shirt sizing: Categorizing tasks as S, M, L, XL. - Planning Poker: Team-based estimation game.
How do we generate stakeholders?
Identify anyone affected by or interested in the software, including users, developers, investors, and regulators.
Who are stakeholders for a Google Maps clone?
- End users (drivers, pedestrians, businesses). - Developers (building and maintaining the system). - Advertisers (businesses using the platform). - Government agencies (traffic data providers).
What are Functional Requirements?
Define what the system must do (e.g., ‘Users can search for locations’).
What are Non-Functional Requirements?
Define system qualities, such as performance, security, and usability (e.g., ‘Must load search results in under 2 seconds’).