1. Trang chủ
  2. » Công Nghệ Thông Tin

CHAPTER 3 AGILE METHODS

10 3 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề CHAPTER 3 AGILE METHODS
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Kỹ thuật phần mềm
Thể loại Tài liệu hướng dẫn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 10
Dung lượng 11,73 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CHAPTER 3 AGILE METHODS 1

Trang 1

CHAPTER 3: AGILE METHODS

Phương pháp phát triển linh động - Agile

Methods

Agile Manifesto

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it These are our

values and principles.

https://agilemanifesto.org/

Individuals and interactions (Cá nhân hóa và sự tương tác): over processes

and tools (Hướng đến mỗi cá nhân và sự tương tác)

Working software (Phần mềm chạy được): over comprehensive

documentation (Viết mã nguồn hơn là tập trung vào các tài liệu)

Customer collaboration (Cộng tác giữa người dùng/khách hàng): over

contract negotiation (Cộng tác với khách hàng để lấy được sự tin tưởng của

khách hàng từ đó mới ký hợp đồng)

Responding to change (Sự đáp ứng thay đổi): over following a plan (Phản

hồi nhanh chóng với các sự thay đổi hơn là làm theo các kế hoạch)

Trang 2

⇒ Phương pháp này chú trọng những việc được đề ra ở bên trái nhiều hơn.

Ưu tiên hàng đầu của dự án phần mềm theo phương pháp agile là thỏa mãn

khách hàng thông qua việc phát triển và phân phối liên tục các phần mềm có

chất lượng

Chấp nhận những sự thay đổi cho dù đã qua quá trình phát triển

Giúp cho sản phẩm có thế mạnh hơn trong việc cạnh tranh

Chuyển giao những phần mềm hoạt động tốt một cách thường xuyên (hàng

tuần hoặc hàng tháng)

Xây dựng các môi trường khuyến khích những người có động lực cao phát

triển

Trao đổi trực tiếp mặt đối mặt (Thay vì thông qua tài liệu như phương pháp

truyền thống)

Các phần mềm hoạt động tốt là độ đo của tiến độ phần mềm

Đây là phương pháp giúp tăng mức độ phát triển bền vững của một dự án

Các nhà tài trợ, đội ngũ phát triển phần mềm và người dùng có thể duy trì phần mềm với một khoảng dài hạn

Tiếp tục tập trung vào kỹ thuật tốt và thiết kế đẹp

Simplicity - đơn giản hóa khối lượng độ công việc

Các kiến trúc tốt, yêu cầu và thiết kế đều được đưa ra bởi các nhóm tự tổ chức

(Self-organizing team)

Nhóm có thể tự kiểm điểm lại thường xuyên để điều chỉnh các thức làm việc của

mình

⇒ Agile là một tư tưởng và có rất nhiều phương pháp được sinh ra theo tư tưởng

này

Extreme Programming - Phương pháp lập trình cực

đoan

“Take known good practices and push them to extremes.”:

Cái gì làm tốt thì phải làm tốt hơn

The planning game: Cách lên kế hoạch như một trò chơi

Trang 3

Small Release: Chuyển giao phần mềm liên tục (Nhiều hơn cả phương pháp

agile)

Thiết kế đơn giản (Thiết kế những gì mình thấy trước mắt)

Refactoring (Thay đổi mã nguồn nhưng chức năng không thay đổi)

Lập trình song song

Liên tục hội nhập

Làm việc 40 tiếnng 1 tuần

On - site Customer

Coding standards

The 12 Practices

The planning game: cách lên kế hoạch như một trò chơi

Đưa những yêu cầu dưới dạng câu chuyện mang tính thực tế Đặt quyết định cho những người có kiến thức tốt nhất

Yêu cầu nghiệp vụ → KH Yêu cầu phần mềm → Developer Lên kế hoạch trong tầm hiểu biết của mình

Có một trò chơi là Planning Poker

Small Releases: chuyển giao sản phẩm nhỏ lẻ

Lấy phản hồi của người dùng nhanh

Có bao nhiêu stories hoàn thành trong một giai đoạn → biết được tiến độ của dự án

Metaphor: mượn hình ảnh thực tế

Thông qua thảo luận Cung cấp những cái nhìn Kết nối chương trình với bên ngoài để dễ hiểu hơn

Simple Design: thiết kế đơn giản

Không cần quá phức tạp về sau

Dễ chỉnh sửa, bảo trì và mô tả

Trang 4

Kiểm thử đơn vị: hàm, lớp, thành phần làm ra

Làm thường xuyên, liên tục → Phải kiểm thử tự động và tự động hoá càng nhiều càng tốt để giảm chi phí

Kiểm thử hệ thống → thực hiện bởi khách hàng → Kiểm tra lại yêu cầu

phần mềm (User stories)

Refactoring: thay đổi mã nguồn nhưng chức năng không đổi

Phải làm liên tục thường xuyên Thiết kế liên tục → Tiết kiệm chi phí

💡 Trong phương pháp truyền thống có Refactoring hay không?

Phương pháp nào thực hiện Refactoring nhiều hơn? Vì sao?

Phương pháp truyền thống là phải làm tuần tự, thiết kế đầy đủ, nhu cầu thay đổi không nhiều

Còn lại là xu hướng thay đổi nhiều do không có kế hoạch từ trước hoặc kế hoạch ngắn hạn, dẫn đến phải thay đổi nhiều

Pair Programming: lập trình đôi

Driver and navigator

Sau một thời gian đổi vai trò lại

Truyền đạt kinh nghiệm lẫn nhau giữa hai người

Chất lượng phần mềm tốt hơn, phát hiện lỗi tốt hơn

Giảm giai đoạn kiểm thử

Trong thực tế ít dùng pair programming

Collective Ownership: làm chủ tập thể

Mọi người đều sở hữu mã nguồn

Có thể thay đổi code ở bất kì đâu Không thiết lập modules cá nhân Giảm được rủi ro nếu một người bị ảnh hưởng, hỗ trợ công việc lẫn nhau

Continuous Integration: tích hợp liên tục

Trang 5

Tất cả đều chạy được liên tục

Có những bản releases thường xuyên và nhanh Giảm thiểu trường hợp đợi quá lâu và quá chênh lệch, dẫn đến lỗi (”big bang integration disasters”)

40-hour Week

Không làm việc liên tục → Chất lượng công việc giảm

On-site Customer: KH đến làm việc

Trao đổi trực tiếp với LTV LTV không biết mọi thứ

Coding Standards

Đảm bảo mã nguồn theo một tiêu chuẩn mã nguồn Mọi người có thể hiểu mã nguồn

The planning game

Mô tả phần mềm dưới dạng câu chuyện người dùng

Giao những công việc phù hợp cho những người có chuyên môn

Lên kế hoạch phù hợp với khả năng kiến thức của chúng ta

Small Release

Chuyển giao các phiên bản nhỏ để nhận được các phản hồi nhanh của khách hàng

Từ đó biết được tiến độ phát triển của dự án

Metaphor - Ẩn dụ

Mượn những hình ảnh trong thực tế để diễn đạt những gì trong dự án

Kết nối chương trình với tiến độ công việc

Simple Design

Thiết kế cho những yêu cầu đơn giản Những cái phức tạp sẽ được để lại về sau

⇒ Dễ dàng chỉnh sửa, duy trì

Testing - Kiểm thử đơn vị

Kiểm thự các hàm, lớp, thành phần được tạo ra để

Trang 6

Được thực hiện thường xuyên và liên tục (Kể cả với các chức năng đã được làm

rồi)

Việc kiểm thử này được thực hiện bởi khách hàng

Refactoring

Là một quá trình chỉnh sửa mã nguồn mà không đổi chức năng của mã nguồn (thay

đổi tên hàm, di chuyển qua các vị trí khác,…)

Được làm thường xuyên

Thiết kế là quan trọng được giữ vững trong suốt quá trình ⇒ giảm chi phí trong quá

trình phát triển

💡 Giữa phương pháp phát triển phần mềm truyền thống và phương

pháp hiện đại, phương pháp nào cần refactoring nhiều hơn?

Trong các phương pháp phát triển phần mềm truyền thống các thay đổi vạch ra chi tiết từ trước, khó thay đổi trong quá trình phát triển

Còn trong phương pháp này các thay đổi được đưa ra trong suốt quá trình phát triển phần mềm ⇒ Việc Refactoring nhiều hơn

Pair Programming

Giúp truyền đạt các kinh nghiệm lẫn nhau giữa 2 người

Làm cho chất lượng phần mềm tốt hơn ⇒ Tiết kiệm thời gian và chi phí

Về lâu dài tổng thời gian phát triển sẽ được giảm xuống

💡 Thực tế Pair Programming rất ít được dùng trong thực tế Bởi vì việc

tương tác giữa 2 người có nhiều trục trặc (bất đồng quan điểm, cái tôi lớn,

…)

Collective Ownership - Làm chủ tập thể

Mỗi người đều có thể sở hữu mã nguồn của nhóm mình Có thể cập nhật bởi bất cứ

người nào trong team

Làm giảm thiểu rủi ro khi một người sở hữu và người đó ròi nhóm hay nghỉ việc →

những người khác không thể truy cập được

Trang 7

💡 Mọi người có thể hiểu được tổng thể mã nguồn và chia sẻ công việc với

nhau

Continuous Intergration

Hệ thống được hoạt động liên tục để bảo bảo mã nguồn luôn chạy và không có lỗi

Mỗi người phải up lên Github và đảm bảo mã nguồn của mình chạy được trước khi

rời văn phòng

40-hour week

Không làm việc liên tục → Chất lượng công việc sẽ bị giảm

On-site Customer

Những người có kiến thức về nghiệp vụ, về khách hàng sẽ làm việc trực tiếp với lập

trình viên để chia sẻ về kinh nghiệm và quy tắc cần trong môi trường làm việc

Coding Standards

Phải đảm bảo mã nguồn theo một tiêu chuẩn được đề ra ⇒ Dễ dàng cho việc chỉnh

sửa và bảo trì

Tùy theo từng ngôn ngữ sẽ có những tiêu chuẩn khác nhau

Trang 8

Là một quy tắc trong phương pháp Agile sử dụng một tập hợp các quy tắc và thực

hành đơn giản để từng bước phát triển phần mềm

Một số khái niệm của Scrum:

Daily Scrum: Một cuộc họp ngắn (ít hơn 30 phút) giúp nhóm có thể giám sát

các trạng thái và trao đổi về các vấn đề phát sinh

Sprint: chu kỳ phát triển phần mềm (thường là 30 ngày).

Backlog:

Product backlog: danh sách ưu tiên của các sản phẩm được yêu cầu.

Sprint backlog: danh sách ưu tiên của các yêu cầu được phân bổ cho quá

trình sprint

Impediments backlog: danh sách các vấn đề phát sinh.

Burndown chart: biểu đồ biểu diễn tiến độ.

Artifacts

Product backlog

Overall product requirements (Yêu cầu tổng thể về sản phẩm) Items are estimated and prioritized (Các mục được ước tính và ưu tiên)

Sprint backlog

Trang 9

Requirement items allocated for one sprint (Các mục yêu cầu được phân bổ cho một sprint)

Items are estimated prioritized (Các mục được ước tính ưu tiên)

Scrum Roles

Scrum master:

Facilitate Scum practices

Enforce Scrum principles

Team:

Estimate product backlog

Create sprint backlog

Implement backlog items

Product Owner:

Create vision and requirements

Contact point

Create releases plan

Manager:

Ensure resources available

Resources management

Team building

Activities

Release planning: Ưu tiên và phân bổ các tính năng cho các bản release

Sprint planning:

Đưa ra các mục tiêu và phân bổ các hạng mục tồn đọng cho quá trình Sprint

Daily Scrum: Có 3 câu hỏi cần được đặt ra bởi các thành viên trong team

What had been done since the last meeting?

What will be done by the next meeting?

Trang 10

What issue we have now?

⇒ Giúp mọi người trong nhóm có thể tập trung hơn cho dự án

Sprint review:

Tổ chức cuối mỗi sprint

Xem lại những chức năng đã hoàn thiện

Quyết định những hướng đi đúng và chưa đúng

Where Agile Methods Work Best?

Nhóm nhỏ (2-20 người)

Quá trình lặp lại ngắn (1-2 tuần)

Những hệ thống không yêu cầu cao về độ an toàn

Strengths and Weaknesses of Agile Methods

Thế mạnh:

Phù hợp với những môi trường linh động Thay đổi nhanh chóng, hỗ trợ tốt với những yêu cầu khẩn cấp

Tránh các chi phí về tài liệu (tốn thời gian và nhân lực soạn tài liệu)

Trao quyền/khuyến khích mọi người làm việc

Điểm yếu:

Đòi hỏi trình độ và động lực cá nhân cao

Khó thực hiện đối với những hệ thống quan trọng về độ an toàn

Thường sẽ gặp sự cố khi áp dụng với những dự án lớn

Ngày đăng: 05/05/2023, 11:02