final Flashcards
study (35 cards)
What is Agile methodology?
A flexible, iterative approach to software development that emphasizes collaboration and customer feedback.
How do Agile principles accelerate development?
By promoting working software, continuous feedback, and adaptive planning.
What are the benefits of expressing user requirements as user stories?
Clarity, focus on user value, and easy prioritization.
One disadvantage of test-first development?
Tests may be incomplete and lead to a false sense of security.
Why does pair programming increase productivity?
It enables knowledge sharing, catches errors early, and improves focus.
What are Scrum roles?
Scrum Master, Product Owner, and Development Team.
What is requirements engineering?
The process of discovering, documenting, and managing software requirements.
What are functional requirements?
They describe what the system should do (e.g., features, services).
What are non-functional requirements?
Constraints like performance, usability, or legal compliance.
What are common elicitation techniques?
Interviews, user stories, scenarios, and ethnography.
Why is traceability important in requirements engineering?
It ensures changes can be tracked through the system and impacts assessed.
What is a system model?
A representation of a system used to understand and communicate its structure and behavior.
What is a context model?
Shows external entities interacting with the system.
What does a use case model show?
Functional interactions between users and the system.
What are activity diagrams used for?
Representing workflows and control logic.
What is the benefit of modeling?
Improves understanding, communication, and system design.
What is architectural design?
High-level structuring of the system, identifying components and their interactions.
What are design patterns?
Reusable solutions to common design problems.
What is refactoring?
Improving code structure without changing behavior.
What is the purpose of configuration management?
To handle changes systematically across versions and components.
What is defensive programming?
Writing code to anticipate and safely handle possible failures or misuse.
What are the main types of software testing?
Unit, integration, system, and acceptance testing.
What is regression testing?
Re-testing after changes to ensure new code doesn’t break existing functionality.
Difference between black-box and white-box testing?
Black-box: focuses on inputs/outputs; White-box: tests internal logic.