JAlcocerTech E-books

Software Development Methodologies

Understanding software development methodologies is essential for data professionals working in modern teams. The right methodology provides a systematic, efficient, and quality-oriented way of working on projects.


What is a Development Methodology?

A methodology is a structured approach that follows a design philosophy and guides developers through each stage of development.

Well-managed projects are successful projects.

When working in a team, selecting the right methodology is critical for effective project management. Every methodology differs in its strengths, shortcomings, and the problems it was designed to solve.


Waterfall Methodology

The waterfall method is the oldest approach to software development—a linear, sequential process.

Phases

Requirements → Design → Implementation → Verification → Maintenance

Each phase must be completed before moving to the next. There’s typically no process for going back.

Pros and Cons

ProsCons
Simple to understand and manageSlow and expensive
Works well for precise, stable requirementsRigid—hard to adapt to changes
Good for less experienced teamsLate discovery of issues
Clear documentation at each phaseUsers don’t see product until late

When to Use Waterfall

  • Requirements are well-defined and stable
  • Regulatory environments requiring documentation
  • Short projects with clear scope
  • Teams with less experience

Agile Methodology

Agile reduces risk through iterative development with small increments of new functionality.

Agile Values

  1. Individuals & 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

Agile Characteristics

AspectDescription
TimeNot constrained (iterations continue)
BudgetNot constrained
FeaturesThe constraint—develop until sufficient
ReleasesFrequent, incremental

Pros and Cons

ProsCons
Iterative releases improve qualityRequires experienced team
Early detection of issuesDocumentation often lacking
Users see value soonerTime and labor intensive
Adapts to changing requirementsScope can creep without discipline

Agile Frameworks

Scrum

The most widely-used agile framework:

ElementDescription
SprintsShort iterations (1-4 weeks)
CeremoniesPlanning, Daily Stand-up, Review, Retrospective
RolesProduct Owner, Scrum Master, Development Team
ArtifactsProduct Backlog, Sprint Backlog, Increment

Key Ceremonies:

  • Sprint Planning — Define sprint goals and tasks
  • Daily Stand-up — 15-min sync on progress/blockers
  • Sprint Review — Demo completed work
  • Retrospective — Reflect and improve process

Kanban

Focuses on visualizing workflow and limiting work in progress:

ElementDescription
Kanban BoardVisual representation of work
WIP LimitsRestrict work in progress
Pull SystemPull work when capacity allows
FlowOptimize for continuous delivery

Extreme Programming (XP)

Emphasizes technical excellence:

  • Pair Programming — Two developers, one keyboard
  • Test-Driven Development (TDD) — Write tests first
  • Continuous Integration — Integrate code frequently
  • Refactoring — Continuously improve code

Lean

Minimizes waste and maximizes value:

  • Value Stream Mapping — Identify waste
  • Just-in-Time Delivery — Deliver when needed
  • Continuous Improvement — Kaizen mindset

Agile vs Waterfall Comparison

AspectWaterfallAgile
ApproachSequential, linearIterative, incremental
RequirementsFixed upfrontEvolving
FlexibilityLowHigh
Customer involvementBeginning and endThroughout
DocumentationHeavyLight
TestingEnd of cycleContinuous
RiskHigh (late discovery)Lower (early feedback)
Best forStable requirementsChanging requirements

Agile Software Development Lifecycle

Pre-Coding: Definition of Ready (DoR)

Before coding begins, ensure:

  • User stories are clear and complete
  • Acceptance criteria are defined
  • Dependencies are identified
  • Estimates are provided

Development Activities

  1. Coding — Write the implementation
  2. Code Review — Peer review for quality
  3. Testing — Unit, integration, acceptance tests
  4. Knowledge Sharing — Documentation, pair programming
  5. Technical Debt Management — Address accumulated shortcuts

Technical Debt

Technical debt is the implied cost of additional work caused by choosing quick solutions over better approaches.

Indicators

CategoryWarning Signs
DeliveryQuality degradation, high cost of change, slow experimentation
ArchitectureHard to integrate, reuse, grow, or support
TeamDelays, low estimation confidence, demotivation

Managing Technical Debt

  • Allocate time in each sprint for debt reduction
  • Track debt as backlog items
  • Use tools like SonarQube for code quality metrics
  • Prioritize debt that blocks critical features

Code Quality Tools

SonarQube — Continuous code quality inspection:

docker run -d -p 9000:9000 sonarqube:latest

SDLC Competency Progression

Measure your progress with the following competencies:

Foundational

  • Basic understanding of SDLC phases, roles, responsibilities, artifacts
  • Basic understanding of Agile and Waterfall methodologies

Intermediate

  • Solid knowledge of Agile and Waterfall
  • Clear understanding of roles in Agile vs Waterfall
  • Ability to participate in Scrum ceremonies

Advanced

  • Ability to drive Scrum ceremonies (refinement, planning, demo)
  • Define and produce deliverables across methodologies
  • Establish/enhance processes on a project
  • Act as proxy Product Owner

Key Takeaways

  1. Waterfall = Sequential, documentation-heavy, works for stable requirements
  2. Agile = Iterative, flexible, works for evolving requirements
  3. Scrum is the most popular Agile framework (sprints, ceremonies, roles)
  4. Kanban visualizes work and limits WIP for continuous flow
  5. Technical debt must be actively managed to maintain velocity
  6. Choose based on context — project type, team experience, requirement stability