0% found this document useful (0 votes)
5 views

SE.assignment1

Uploaded by

kaleemiqra32
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

SE.assignment1

Uploaded by

kaleemiqra32
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Assignment no 01

Submitted to : Sir Umair


Submitted By : Samawia
Submission Date : 18-11-2024
Class : ADP(CS)
Roll no : 3142
Subject : SE
SOFTWARE ENGINEERING
1. Agile software
development:
Agile software development is a flexible
and iterative approach to software
creation that emphasizes collaboration,
customer feedback, and rapid delivery. It
involves self-organizing teams that
adapt to changing requirements,
ensuring that the final product meets
user needs effectively.
S

AGILE SOFTWARE DEVELOPMENT


PHASES:
1. Concept/Inception Phase
2. Iteration/Increment Planning Phase
3. Development Phase
4. Testing Phase
5. Review Phase
6. Retrospective Phase
7. Release Phase
8. Maintenance Phase
9. Iteration/Increment Continuation.

 Common Agile Methodologies


 Kanban: A visual management method
that emphasizes continuous delivery and
flow, allowing teams to manage work in
progress and optimize efficiency.
 Key Practices:
 Visual Board: A board that
displays work items in different
stages of the workflow.
 Work In Progress (WIP) Limits:
Restrictions on the number of
items in progress to improve
flow and reduce bottlenecks.
 Continuous Delivery: Focus on
delivering small, incremental
changes to production.
 Test-First Development:
 Test-First Development (TFD) is a software
development approach that emphasizes
writing tests before writing the actual
code that implements the functionality
being tested. This practice is a key
component of Test-Driven Development
(TDD), which is a specific methodology
within the broader context of agile
development practices.
 Key Concepts of Test-First Development
 Writing Tests First:
 Before any functional code is written,
developers create automated tests that
define the expected behavior of the code.
These tests serve as specifications for
what the code should accomplish.
 Red-Green-Refactor Cycle:
 Red: Write a test that defines a function or
improvement, which initially fails because
the functionality is not yet implemented.
 Green: Write the minimum amount of
code necessary to make the test pass.
 Refactor: Clean up the code while
ensuring that all tests still pass. This step
improves code quality without changing
its behavior.
 Automated Testing:
 Tests are typically automated, allowing for
quick feedback on whether the code meets
the specified requirements. This
automation is crucial for maintaining a
fast development pace and ensuring that
changes do not introduce new bugs.
 Benefits of Test-First Development
 Improved Code Quality:
 Writing tests first encourages developers
to think critically about the design and
requirements of the code, leading to
cleaner, more maintainable code.
 Early Bug Detection:
 Since tests are written before the code,
any issues can be identified and addressed
early in the development process,
reducing the cost and effort of fixing bugs
later.
 Clear Requirements:
 Tests serve as documentation for the
expected behavior of the code, making it
easier for team members to understand
the functionality and requirements.
 Facilitates Refactoring:
 With a comprehensive suite of tests,
developers can refactor code with
confidence, knowing that any changes will
be validated by the tests.
 development cycles in the long run, as it
reduces the time spent on debugging and
rework.

Agile software development continues to


evolve, with ongoing research and
adaptation to various industries and
project types, including non-software
products and services.

 Agile methods and techniques:

Agile methods and techniques encompass


a variety of frameworks and practices that
facilitate the Agile software development
process. Here are some of the most widely
used Agile methodologies and techniques:
Agile Methodologies
1. Scrum:
 Overview: A framework that
organizes work into time-boxed
iterations called sprints, typically
lasting 1 to 4 weeks.
 Key Roles:
 Product Owner: Represents
stakeholders and is responsible
for defining the product
backlog.
 Scrum Master: Facilitates the
Scrum process, removes
impediments, and ensures the
team follows Agile principles.
 Development Team: A cross-
functional group that works on
delivering the product
increment.
 Ceremonies:
 Sprint Planning: Team plans the
work for the upcoming sprint.
 Daily Stand-up: A short daily
meeting to discuss progress and
obstacles.
 Sprint Review: A meeting to
demonstrate the work
completed during the sprint.
 Sprint Retrospective: A
reflection on the sprint to
identify improvements.
2. Extreme Programming (XP):
 Overview: Focuses on technical
practices to improve software
quality and responsiveness to
changing requirements.
 Key Practices:
 Pair Programming: Two
developers work together at one
workstation.
 Test-Driven Development
(TDD): Writing tests before
coding to ensure functionality.
 Continuous Integration:
Regularly integrating code
changes into a shared
repository.
 Refactoring: Improving the code
structure without changing its
external behavior.
Agile Techniques
1. User Stories:
 Short, simple descriptions of a
feature from the perspective of the
end user. They typically follow the
format: "As a [type of user], I want
[goal] so that [reason]."
2. Story Points:
 A unit of measure for expressing
the overall effort required to fully
implement a piece of work (user
story). It helps in estimating the
complexity and effort involved.

 Key Principles of Agile Project


Management
1. Customer Collaboration: Engaging
with customers and stakeholders
throughout the project to ensure that
their needs and feedback are
incorporated into the development
process.
2. Iterative Development: Breaking
the project into smaller, manageable
units (iterations or sprints) that allow
teams to deliver functional increments
of the product regularly.
3. Continuous Improvement:
Regularly reflecting on the team's
performance and processes to identify
areas for improvement.

 Key Objectives of Refactoring


1. Improve Code Readability
2. Enhance Maintainability.
3. Reduce Complexity
4. Increase Performance
5. Facilitate Testing:
This Photo by Unknown Author is licensed under CC BY-SA

You might also like