CPSC-3720 Midterm
What is the main difference between Waterfall and Agile SDLC models? Waterfall is sequential and rigid, while Agile is iterative and flexible.
What are the five key stages of the SDLC? Requirements Analysis, Design, Implementation (Coding), Testing, Deployment & Maintenance.
According to Fred Brooks, why is building large software products harder than simple programs? Large systems involve dependencies, multiple developers, integration challenges, and documentation needs, making them exponentially complex.
What are the Three C’s of User Stories? Card, Conversation, Confirmation.
Which Agile role is responsible for removing obstacles and ensuring Scrum principles are followed? Scrum Master.
What are the four key Scrum ceremonies? Sprint Planning, Daily Scrum (Stand-up), Sprint Review, Sprint Retrospective.
What does the INVEST acronym stand for in user stories? Independent, Negotiable, Valuable, Estimatable, Small, Testable.
What is the purpose of a Burndown Chart in Scrum? To visually track remaining work in a sprint.
What is the difference between a Product Backlog and a Sprint Backlog? A Product Backlog contains all desired features, while a Sprint Backlog includes tasks selected for the current sprint.
Why do microservices favor low coupling and high cohesion? Low coupling ensures independence, while high cohesion groups related functionality together, improving maintainability.
What is the main advantage of microservices over monolithic architecture? Microservices allow for independent scaling, deployment, and fault isolation.
What are two key components of a REST API request? Headers and HTTP Methods (GET, POST, PUT, DELETE).
What is the difference between a Path Parameter and a Query Parameter in a REST API? A Path Parameter identifies a resource (/users/{id}), while a Query Parameter modifies a request (?name=John).
Which type of testing ensures individual software components work as expected? Unit Testing.
What is cruft in software development? Unnecessary, outdated, or poorly written code that reduces maintainability.
What is the difference between Validation and Verification? Validation checks if the right product is being built (meeting user needs), while Verification ensures the product is built correctly (meeting requirements).
What does Conway’s Law state? A software system’s design will reflect the communication structure of the organization that built it.
According to Jim McCarthy, what does “Don’t Flip the Bozo Bit” mean? Don’t dismiss a team member as incompetent; instead, focus on constructive collaboration.
What is the purpose of a Sprint Retrospective? To reflect on what went well, what didn’t, and how the team can improve in the next sprint.
Software Development Life Cycle (SDLC) A structured process for building software applications.
Requirements Analysis Understanding and documenting what the software must do.
Design Phase Creating architecture and system models before coding.
Implementation (Coding) Writing the actual source code.
Testing Phase Verifying that the software works correctly.
Deployment & Maintenance Releasing software and fixing issues over time.
Waterfall Model A sequential, phase-based development model.
Agile Model An iterative and flexible development approach.
Spiral Model A risk-driven process model combining iterative and waterfall methods.
Incremental Model Development in small, manageable sections (increments).
Agile Manifesto A declaration of 4 values and 12 principles for Agile software development.
Scrum A framework within Agile for managing software projects.
Sprint A time-boxed iteration (usually 2-4 weeks) in which work is completed.
Product Owner Defines the product backlog and prioritizes features.
Scrum Master Facilitates the Scrum process and removes blockers.
Developers/Team Engineers, designers, and testers who build the product.
Daily Scrum (Stand-up) A short daily meeting where the team discusses progress.
Sprint Planning A meeting where the team selects backlog items to work on during a sprint.
Sprint Review A demonstration of completed work at the end of a sprint.
Sprint Retrospective A reflection meeting to improve processes after a sprint.
Product Backlog A prioritized list of features and requirements for the product.
Sprint Backlog A list of tasks selected for the current sprint.
Burndown Chart A visual representation of work remaining in a sprint.
Three C’s of User Stories Card, Conversation, Confirmation – essential elements of user stories.
Story Hierarchy Product > Epics > User Stories > Tasks.
Acceptance Criteria Conditions that must be met for a user story to be considered complete.
INVEST Criteria Independent, Negotiable, Valuable, Estimatable, Small, Testable – qualities of a good user story.
Relative Sizing Estimating work effort using comparative sizes (e.g., Story Points, Fibonacci Sequence).
Planning Poker A game where teams estimate user story effort using Fibonacci numbers.
Microservices A software architecture where applications are broken into small, independent services.
Low Coupling Minimal dependencies between services, improving flexibility.
High Cohesion Grouping related functions within a module, making it more understandable.
Monolithic Architecture A traditional single-codebase approach where all components are tightly integrated.
API (Application Programming Interface) A set of rules allowing different systems to communicate.
REST API A widely used architectural style for APIs using HTTP methods (GET, POST, PUT, DELETE).
Path Parameter A variable in the URL that identifies a specific resource (e.g., /users/{id}).
Query Parameter A key-value pair in the URL used for filtering or modifying a request (e.g., ?name=John).
OpenAPI Specification A standard format for defining RESTful APIs.
Software Testing The process of verifying software functionality and quality.
Unit Testing Testing individual functions or components of software.
Integration Testing Ensuring different software modules work together correctly.
System Testing Testing the entire application as a whole.
Performance Testing Measuring how software performs under load.
Regression Testing Checking that new changes don’t break existing functionality.
Test-Driven Development (TDD) Writing tests before writing the actual code.
Continuous Integration (CI) Frequently merging code into a shared repository to detect issues early.
Cruft Old, inefficient, or redundant code that complicates maintenance.
Technical Debt The cost of delaying code improvements, leading to future refactoring.
Conway’s Law The structure of software mirrors the structure of the organization that creates it.
Jim McCarthy’s Principles Guidelines for strong software teams, including "Don’t Flip the Bozo Bit" and "Don’t Go Dark."
Cross-Functional Team A team with diverse skills working together (e.g., developers, testers, UX designers).
Servant Leadership The Scrum Master's approach to supporting the team rather than commanding them.
Psychological Safety A team environment where members feel safe to share ideas and take risks.