SDLC : Agile Methodology

1. What Is Agile Methodology?

Agile is an iterative and incremental approach to software development that emphasizes collaboration, customer feedback, working software, and responding to changing requirements.

Instead of developing the entire system in one long sequence, an Agile team divides the work into small, manageable parts. The team develops, tests, and delivers useful functionality frequently, then uses feedback to decide what to improve or develop next.

Key concept: Develop software in small increments, deliver working features frequently, collect feedback, and adapt to changing requirements.

Agile is not a single development process. It is an approach supported by methods and frameworks such as Scrum and Extreme Programming (XP). Scrum is commonly used to organize Agile work into short development cycles called sprints.

2. Main Principles of Agile

  1. Customer collaboration: Involve customers and users throughout development.
  2. Working software: Give priority to useful, working features.
  3. Responding to change: Adjust requirements when new information becomes available.
  4. Frequent delivery: Release usable software regularly rather than waiting until the end.
  5. Continuous improvement: Review results and improve the team's development process.
  6. Team collaboration: Encourage communication among developers, testers, and stakeholders.

3. How Does Agile Work?

Step 1: Gather Requirements

Identify user needs and write them as features or user stories. Prioritize the features according to their value and urgency.

↓

Step 2: Plan an Iteration or Sprint

Select a manageable set of high-priority features that the team expects to complete during the next development cycle.

↓

Step 3: Design and Develop

Design, code, and integrate the selected features while collaborating with other team members.

↓

Step 4: Test the Features

Test the implementation, fix defects, and check that the features meet the agreed acceptance criteria.

↓

Step 5: Demonstrate Working Software

Present the completed features to users or stakeholders and collect their feedback.

↓

Step 6: Review and Plan Again

Evaluate the results, improve the team's working process, reprioritize the remaining features, and begin the next iteration.

These activities repeat until the product meets its objectives. In Agile, feedback can influence both future features and improvements to existing functionality.

4. Practical Example: Student Attendance Management System

Suppose a university wants to develop a Student Attendance Management System using JSP, Java, and Oracle Database. The university initially identifies several requirements, but teachers may request additional features after trying the software.

An Agile team decides to develop the system through short sprints. For illustration, each sprint lasts two weeks.

Product Backlog

A product backlog is a prioritized list of features, improvements, and fixes that may be needed in the system.

Priority Feature Purpose
High Teacher login Allow authorized teachers to access the system.
High Course and section selection Identify the class for attendance recording.
High Attendance entry Record students as present or absent.
Medium Attendance reports Calculate attendance percentages and summaries.
Medium Student dashboard Allow students to view their attendance records.
Later Notifications Notify students about low attendance.

Sprint 1: Login and Basic Attendance

Goal: Allow teachers to log in and record attendance.

  • Develop the login interface using JSP.
  • Implement authentication using Java and Oracle.
  • Display the teacher's assigned courses.
  • Allow teachers to record present or absent status.
  • Test the login and attendance functions.

Deliverable: A working application that allows authorized teachers to record attendance.

Sprint 2: Validation and Attendance Reports

Goal: Improve data accuracy and reporting.

  • Add course, section, and class-date selection.
  • Prevent duplicate records for the same class session.
  • Calculate attendance percentages.
  • Generate student-wise attendance reports.
  • Test calculations and database operations.

Deliverable: A more reliable system with basic attendance reports.

Sprint 3: Student Dashboard

Goal: Allow students to review their attendance.

  • Provide student login and authorization.
  • Display attendance summaries by course.
  • Show attendance percentages and relevant class records.
  • Test whether students can access only their own information.

Deliverable: Students can securely view their attendance summaries.

Sprint 4: Notifications and Improvements

Goal: Improve usability and add requested functionality.

  • Add low-attendance notifications if approved by stakeholders.
  • Improve dashboard navigation and error messages.
  • Review performance and security.
  • Fix defects reported during earlier sprint demonstrations.

Deliverable: An improved system ready for broader acceptance testing.

How Agile responds to change

Suppose teachers review the system after Sprint 2 and request an attendance correction feature. The team discusses the request, prioritizes it against other work, and schedules it in an appropriate upcoming sprint. It does not necessarily have to restart the entire project.

5. Understanding Scrum in Agile

Scrum is a framework used to implement Agile principles. It organizes development around short sprints, a prioritized product backlog, regular collaboration, and reviews of working results.

Common Scrum Roles

  • Product Owner: Maximizes product value and manages product backlog priorities.
  • Scrum Master: Helps the team use Scrum effectively and addresses impediments.
  • Developers: Build, test, and deliver the product increment.

Common Scrum Events

  • Sprint Planning: Establish the sprint goal and select the work.
  • Daily Scrum: Inspect progress toward the sprint goal and adapt the plan.
  • Sprint Review: Inspect the outcome with stakeholders and discuss what to do next.
  • Sprint Retrospective: Identify improvements to the team's process.

In Scrum, the Sprint is the overall container for the work and its events. A Sprint Review is not the same as a Sprint Retrospective: the former focuses on the product outcome, while the latter focuses on improving how the team works.

6. Advantages of Agile

  1. Frequent delivery: Useful software features can be delivered early.
  2. Flexibility: Teams can adapt to changing requirements.
  3. Regular feedback: Users can evaluate working features throughout development.
  4. Early defect detection: Frequent testing helps identify issues sooner.
  5. Better collaboration: Developers, testers, and stakeholders communicate regularly.
  6. Continuous improvement: The team learns from each iteration and improves its process.

7. Disadvantages of Agile

  1. Less predictable scope: Requirements and priorities may change throughout the project.
  2. Requires regular participation: Delayed customer feedback can slow decisions.
  3. Coordination challenges: Frequent collaboration requires effective communication.
  4. Documentation risks: Teams may neglect necessary documentation if they misunderstand Agile values.
  5. Budget and schedule uncertainty: Changing priorities can make the final scope and completion date harder to predict.
  6. Not suitable for every project: Projects with strict contractual, regulatory, or fixed-scope constraints may require additional planning and controls.

8. Agile vs. Waterfall Model

Feature Agile Waterfall
Development approach Iterative and incremental Primarily sequential phases
Requirements Can evolve during development Usually defined in detail early
User feedback Frequent throughout development Often concentrated at requirements and acceptance stages
Delivery Working increments delivered regularly Complete product commonly delivered later
Changes Accommodated through reprioritization and planning Can be costly after earlier phases are completed
Suitable context Changing requirements and frequent feedback Stable requirements and a predictable sequence of work

9. When Should Agile Be Used?

Agile is especially useful when:

  • Requirements are likely to change.
  • Users can provide regular feedback.
  • Early delivery of working features is valuable.
  • The team can collaborate frequently.
  • The product can be developed in small, testable increments.

10. Summary

Agile is an iterative and incremental approach to software development that emphasizes customer collaboration, working software, continuous feedback, and adaptation to change.

Remember: Agile teams develop and test useful features in small increments, review the results with stakeholders, and reprioritize upcoming work based on feedback.

In the Student Attendance Management System example, the team delivers login and attendance recording first, then adds reporting, student dashboards, and further improvements over successive sprints.

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন