Midterm 1 Flashcards

1
Q
  1. Define Software Engineering. How does it differ from Programming and Computer Science?
A

Software Engineering is the systematic application of engineering principles to software development, focusing on process, planning, and maintainability.
Programming is the act of writing code, but it doesn’t necessarily involve the structured approach of software engineering.
Computer Science is the theoretical foundation of computing, including algorithms and data structures, but it does not focus on software processes and development methodologies

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. Compare and contrast the three introductory software process models: Waterfall, Iterative, and Incremental.
A

Waterfall:
- A linear, sequential approach where each phase is completed before moving to the next.
- Advantages: Simple to manage, good for well-defined requirements.
- Disadvantages: Inflexible, late testing phase, hard to adapt to changes.

Iterative
- Software is built in repeated cycles, refining the system each time.
- Adv: Allows for early testing, improved design, and adaptability.
- Disadv: Needs strong architecture early on, harder to estimate final scope.

Incremental:
- The system is developed in small functional pieces, with each part fully developed before moving to the next.
- Adv: Delivers working software quickly, early user feedback.
- Disadv: Can lead to integration challenges, requires careful planning.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
  1. What is the difference between product requirements and process requirements? Provide an example of each.
A

Answer:

Product Requirements: Define what the software must do.
Example: “The system shall allow users to reset their password via email.”
Process Requirements: Define constraints on how the software is developed.
Example: “The software must be developed using Java and follow ISO 9001 standards.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
  1. Describe the phases of the software development lifecycle. What happens in each phase?
A

Answer:

Requirements Analysis – Gather and define what the software should do.
System Design – Plan the architecture and structure of the system.
Implementation & Coding – Write the actual code.
Integration & Testing – Combine components and verify that everything works correctly.
Deployment – Release the software for use.
Maintenance – Fix bugs, update features, and support users.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
  1. Explain the drawbacks of the Waterfall model. Why is it sometimes considered “Waterfail”?
A

Answer:

Rigid structure makes it difficult to accommodate changes.
Late testing phase increases the risk of discovering major issues too late.
Customer involvement is minimal until the final delivery, leading to potential mismatches between expectations and reality.
Better for well-defined projects but unsuitable for dynamic, evolving requirements.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. How does incremental development work? What are its advantages over Waterfall?
A

In incremental development, the software is developed in small, usable parts. Each increment is tested, refined, and integrated before moving to the next.
Advantages over Waterfall:
✔ Faster delivery of working software.
✔ Allows early feedback and corrections.
✔ Easier to manage risks and integrate changes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  1. What is Agile Software Development? How does it differ from traditional models?
A

Answer:

Agile is an iterative and adaptive software development methodology that focuses on customer collaboration, flexibility, and frequent delivery of working software.
Unlike traditional models (e.g., Waterfall), Agile emphasizes:
✔ Continuous customer involvement
✔ Short development cycles (iterations/sprints)
✔ Adaptive planning instead of fixed processes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. Describe the four core tenets of the Agile Manifesto. Why are they important?
A

Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan
Importance: These principles prioritize adaptability and communication, allowing teams to respond to real-world needs rather than sticking to rigid plans.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. What are some Agile practices (e.g., Scrum, Extreme Programming)? How are they implemented in real projects?
A

Scrum: Uses sprints, daily stand-ups, and iterative development cycles to deliver software in small increments.
Extreme Programming (XP): Focuses on pair programming, automated testing, and continuous integration to improve code quality.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. How do you determine which tasks go into each iteration when planning a project?
A

Prioritize high-value features first based on customer needs.
Estimate the time required for each task.
Consider dependencies (e.g., some tasks must be completed before others).
Ensure tasks fit within the iteration timeframe (typically 2–4 weeks).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. What is Planning Poker? How does it help in estimation?
A

Planning Poker is a collaborative estimation technique where developers assign effort points to tasks.
Helps by exposing assumptions, ensuring team alignment, and reducing estimation biases.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  1. What are the main sources of software requirements?
A

Stakeholders – Users, customers, business owners.
Domain Knowledge – Industry-specific needs.
Operational Environment – System constraints (e.g., hardware, network).
Organizational Environment – Business rules, compliance requirements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  1. What are the differences between functional and non-functional requirements? Provide examples.
A

Functional
- What the system must do
- Example: “The system shall allow users to log in.”

Non-Functional:
- How the system should behave
- “The system shall respond in under 2 seconds.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  1. Explain the difference between validation and verification in software requirements.
A

Validation: “Are we building the right product?” Ensures the software meets business needs.
Verification: “Are we building the product right?” Ensures the software is built correctly according to specifications.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
  1. What is traceability in software requirements? Why is it important?
A

Traceability means linking each requirement to its implementation and testing.
Importance: Ensures all requirements are met, helps in tracking changes, and simplifies impact analysis.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. What happens if the total project estimate is too long? What options do teams have?
A

✔ Refine the scope – Remove lower-priority features.
✔ Break down tasks – Split large user stories into smaller ones.
✔ Increase team capacity – Assign more developers if possible.
✔ Negotiate deadlines – Work with the customer to adjust the timeline.

17
Q
  1. How do you handle changes in requirements (feature creep)? What strategies can teams use to manage scope?
A

✔ Prioritize new features – Not everything can be included.
✔ Negotiate trade-offs – Some features may need to be delayed or removed.
✔ Use iterative development – Add features in future sprints

18
Q
  1. What is the difference between product requirements and process requirements? Provide an example of each.
A

Product Requirement: Defines what the software must do.
Example: “The system shall allow users to reset their passwords.”
Process Requirement: Defines how the software is built or constraints on development.
Example: “The software must be developed using Java.”

19
Q
  1. Describe the phases of the software development lifecycle. What happens in each phase?
A

Requirements Analysis – Gather user needs and define features.
System Design – Plan architecture and components.
Implementation – Write and develop code.
Testing – Verify that the system meets requirements.
Deployment – Release the software for use.
Maintenance – Update and fix bugs after release.

20
Q
  1. Explain the drawbacks of the Waterfall model. Why is it sometimes considered “Waterfail”?
A

Rigid structure, making adaptation to change difficult.
Testing happens late, increasing the risk of major failures.
Limited customer feedback until the final stage.
Better for well-defined projects but not ideal for evolving requirements

21
Q
  1. How does incremental development work? What are its advantages over Waterfall?
A

Incremental Development builds the software in small, usable increments, each one being fully functional before adding more features.
Advantages over Waterfall:
✔ Allows early user feedback
✔ Easier risk management
✔ Can deliver partially working software sooner

22
Q
  1. What is Agile Software Development? How does it differ from traditional models?
A

Agile is iterative and adaptive, focusing on frequent customer feedback and small, incremental improvements.
Traditional models (e.g., Waterfall) follow a rigid, sequential process, while Agile allows changes and flexibility

23
Q
  1. Describe the four core tenets of the Agile Manifesto.
A

Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan

24
Q
  1. What are some Agile practices (e.g., Scrum, Extreme Programming)?
A

Scrum: Uses short development cycles (sprints), daily stand-up meetings, and a prioritized backlog.
Extreme Programming (XP): Features pair programming, continuous integration, and automated testing.

25
Q
  1. How do you determine which tasks go into each iteration when planning a project?
A

✔ Prioritize important features first
✔ Estimate time required
✔ Consider dependencies (some tasks must be done first)
✔ Ensure tasks fit within the iteration length

26
Q
  1. What is Planning Poker? How does it help in estimation?
A

A technique where developers assign effort points to tasks.
Helps expose assumptions, biases, and differences in estimation

27
Q
  1. What are the main sources of software requirements?
A

Stakeholders – Users, customers, business owners.
Domain Knowledge – Industry-specific requirements.
Operational Environment – System constraints (hardware, network, etc.).
Organizational Environment – Business rules and compliance

28
Q
  1. Explain the difference between validation and verification in software requirements.
A

Validation: “Are we building the right product?” (Ensures it meets business needs).
Verification: “Are we building the product right?” (Ensures it follows specifications).

29
Q
  1. What is traceability in software requirements? Why is it important?
A

Traceability tracks requirements from definition to implementation and testing.
Helps ensure nothing is missed and simplifies change management

30
Q
  1. What happens if the total project estimate is too long?
A

✔ Refine the scope – Remove non-essential features.
✔ Break down tasks – Make them smaller and easier to estimate.
✔ Adjust the timeline or team size.

31
Q
  1. How do you handle changes in requirements (feature creep)?
A

✔ Prioritize new features
✔ Negotiate trade-offs (drop some features if needed)
✔ Use iterative development (schedule features for future iterations)

32
Q
  1. What should a team do if two stakeholders have conflicting requirements?
A

Facilitate a discussion to understand priorities.
Assess business impact and find a compromise.
Use customer feedback to resolve conflicts

33
Q
  1. How are estimates determined for pending tasks?
A

Use expert judgment
Apply Planning Poker
Compare with past historical data

34
Q
  1. What are the benefits of iterative development?
A

✔ Continuous feedback
✔ Early bug detection
✔ Easier requirement adjustment