Agile Software Development

The concept of agile software development was introduced by a group of developers called the Agile Alliance. This group defined a set of principles for efficient, adaptive software development, in what’s known as the Agile Manifesto.

4 Key Values

  • Communication: Regular face-to-face communication among the team members so that the teams can make decision and mitigate problems quickly. Suitable for a small team size from two to 30. The communication channels are too many for a larger team which is not appropriate to adopt agile methodologies.
  • Simplicity: Focus on completing only the work necessary to satisfy existing customer requirements. No anticipation, no redundant.
  • Courage: Open, honest.
  • Feedback: Customer is involved throughout the project life cycle and frequently give the feedback to the team. So that the requirements can be met earlier rather than wait for last minute.

12 Principles

  • Customer satisfaction: Satisfy customer existing needs through frequently working software delivery.
  • Changing requirements: Welcome the changes and help customer to enhance the competitive advantage.
  • Working software: The result of each iteration is workable, can be delivered to customer for review.
  • Frequent collaboration: Developers and customers collaborate on a daily basis.
  • Motivated Individuals: The team member need be mature, experienced, motivated and can work independent.
  • Communication: Prioritize face-to-face communication to improve the efficiency and effectiveness.
  • Progress measurement
  • Sustainable development pace
  • Attention to technical excellence
  • Simplicity: Focusing only on what’s really need.
  • Self-organization
  • Self-reflection

 

Methodologies

Extreme Programming (XP)

It is more on programming level and main characteristics are

  • Small team
  • On-site customer
  • Planning game
  • A set of customer user stories
  • Refactoring
  • Pair programming
  • Simiple design
  • Small releases
  • Continuous integration
  • Shared workspace, etc.
Roles: Customer, Development coach, Business coach, Developer, Business Analyst/System Engineer, Tracker, Tester and Big Boss.

Scrum

More on project management

  • Base on short meetings. Each scrum meeting should last between 10 and 15 minutes.
  • Separated by sprints. Typically one sprint last from two weeks to a month. Scrum team only focus on an agreed set of work items during a sprint of fixed length.
  • Burndown chart to track the progress.
Ideal team size is 4 to 9, but it is scalable. Roles: Product Owner, Scrum Master and General team members.

Lean Software Development

  • Streamline the development process to improve efficiency. 7 key principles:
  • Eliminate waste
  • Promote and incorporate continuous learning
  • Delay decisions until they’re needed
  • Deliver software as fast as possible
  • Empower the programming team
  • build a focus on system integrity into the development process, and
  • Focus on the whole system

Kanban

Evolved from lean principles. On the assembly line, ensure the materials and work are “pulled” rather than “pushed”. No bottlenecks occur because workflow is controlled based on the capacity of each successive point in the system.

It’s common to limit the user stories to half the number of members on a development team. For example, a team with 30 members might include 15 user stories.

Kanban incorporates the lean principles.

No sepecific roles.

FDD

Feature Driven Development.

How to define feature? 3 levels: subject areas, feature sets, features.

Roles: Project Manager, Chief Architect, Development Manager, Chief Programmer, Class Owner, Domain Expert, Tester, Deployer and Technical Writer.

ASD

Adaptive Software Development.

3 phases: Speculate (plan), Collaborate (build) and Learn (review).

All members and stakeholders are called agents. There is no hierarchy.

AUP

Agile Unified Process. A detailed framework of iterative and incremental development of software. It simplifies UP. The disciplines are derived from the set of nine disciplines defined in the UP.

4 phases: Inception, Elaboration, Construction and Transition.

EssUP

Essential Unified Process. It defines a set of practices which are derived from UP, agile principles, and CMMI.

Technical practices:

  • Iterative Essentials
  • Architecture Essentials
  • Use-Case Essentials
  • Component Essentials, and
  • Model Essentials

Supporting practices:

  • Product Essentials
  • Process Essentials
  • Team Essentials

Crystal

A family of methodologies colored for different hardness: Clear, Yellow, Orange, Orange Web, Red and Maroon. Deeper color means more complexity. Also the colors can map to different team sizes and different criticalities.

7 key principles

  • Frequent delivery
  • Continual feedback
  • Constant communication
  • Safety
  •  A focus on priorities
  • Access to users, and
  • Automated testing and integration

DSDM

Dynamic Systems Development Method. It is a framework reflects a business perspective rather than a technical one. Because it lacks a more technical focus, DSDM isn’t recommended for the development of safety-critical systems.

3 phases: Pre project, Project lifecycle and Post project.

It requires a large number of artifacts and roles. So requires a configuration management system.

The priorities of requirements are represented by MoSCoW acronym:

  • MUST be met
  • SHOULD be met if possible
  • COULD be met provided doing this won’t impact a project negatively
  • WOULD be nice to include but only if time permits

How to choose Agile Methologies

Factors:

  • The structure of your organization: hierarchical, cooperative (more suitable to apply Agile) or a balance of the two.
  • Project type and size. Bigger size better apply Crystal Orange or deeper color.
  • The customer’s role. XP and DSDM require continuous customer involvement. And the customer need willingly to join.
  • Project management issues. Team size, location, etc. Degrees of formality: AUP and DSDM are more formal.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Back to Top