Feature Driven Development (FDD) là phương pháp tiếp cận linh hoạt dành
cho phát triển hệthống. FDD không bao phủtoàn bộquy trình phát triển phần
mềm mà nó tập trung vào giai đoạn thiết kếvà xây dựng. Tuy nhiên nó được
thiết kế đểlàm việc với những hoạt động khác của một dựán phát triển phần
mềm và không yêu cầu bất cứmột mô hình quy trình riêng nào. Nó tập trung vào
chất lượng sản phẩm xuyên suốt quy trình.
FDD bao gồm 5 quy trình liên tục và cung cấp những phương thức, kỹthuật
và những hướng dẫn mà nhà đầu tưcần đến đểchuyển giao hệthống. Phần lặp
của quy trình FDD hỗtrợphát triển linh hoạt với sựthích nghi nhanh chóng với
những thay đổi muộn trong yêu cầu của khách hàng.
41 trang |
Chia sẻ: maiphuongdc | Lượt xem: 3260 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Đề tài Phương pháp phát triển phần mềm linh hoạt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
chu kỳ phát
triển phần mềm tăng dần, và đạt mức tăng lớn nhất trong vòng mỗi 4 tháng, tốt
nhất là trong vòng từ 1 đến 3 tháng. Điều cực kỳ quan trọng là sự hợp tác và giao
tiếp giữa các thành viên trong nhóm. Phương pháp Crystal không giới hạn số
lượng phương pháp thực thi, số lượng công cụ, số lượng các sản phẩm, và đặc
biệt cho phép các thực thi của các phương thức khác nhiuw Scrum hay XP...
Hơn nữa, cách tiếp cận này còn cho phép giảm bớt các sản phẩm trung gian và
thể hiện cụ thể trong phạm vi một quy ước cho các dự án riêng lẻ và phát triển
chúng như là các dự án mở.
Hiện nay có 3 phương thức chính trong Crystal đó là: Crystal Clear, Crystal
Orange, Crystal Orange Web.
Tất cả các phương thức trong gia đình Crystal đều dựa trên những chuẩn hợp
đồng đã ký, sản phẩm, chi phí, công cụ, và các quy tắc chuẩn để thực thi trong
suốt quá trình sản xuất. Crystal Clear và Crystal Orange là hai trong số các thành
viên của gia đình Crystal đã được xây dựng và sử dụng (Cockburn 1998,
Cockburn 2002a). Crystal Orange (Cockburn 1998) cũng biểu diễn các hoạt
động trong một quá trình.
Crystal Clear được thiết kế cho những dự án rất nhỏ được phát triển bởi
khoảng 6 thành viên. Tuy nhiên với cá phần mở rộng của nó có thể phù hợp với
một dự án có từ 8-10 thành viên. Một đội sử dụng phương thức Crystal nên làm
việc cùng nhau trong một phòng để tiện việc trao đổi, bàn bạc.
Crystal Orange được thiết kế cho một dự án cỡ vừa, có từ 10 đến 40 thành
viên và với thời gian thực hiện dự án là 1 đến 2 năm. Dĩ nhiên một dự án có 50
thành viên vẫn có thể sử dụng phương thức này nhưng với điều kiện phải thêm
vào cho nó phương thức kiểm chứng. Một dự án sử dụng Crystal Orange có thể
được chia nhỏ cho nhiều nhóm phát triển với cross-functional sử dụng chiến
lược Holistic Deliversity. Tuy nhiên phương thức này không dành cho bản phát
triển môi trường. Crystal Orange nhấn mạnh tầm quan trọng của time-to-market.
Sự hoán đổi giữa phân phối rộng rãi và sự thay đổi nhanh trong yêu cầu và thiết
kế kết quả trong một số giới hạn các phiên bản cho phép giảm bớt giá thành để
bảo trì chúng nhưng vẫn giữ cho chức năng giao tiếp giữa các đội phát triển
được hiệu quả.
Policy standards:
Đây là những thực thi cần được áp dụng trong suốt quá trình phát triển phần
mềm. Cả Crystal Clear và Crystal Orange đều đưa ra các tiêu chuẩn chính sách
sau:
1. Mở rộng các bản phân phối một cách đều đặn
2. Quy trình theo dõi những thành phần quan trọng được đưa vào các phiên
bản, chú ý vào những quyết định hơn là viết tài liệu
3. Hướng sự chú ý của người dùng.
4. Nghiên cứu chức năng tự động hóa kiểm chứng
5. Coi như có 2 người sử dụng đang quan sát bạn làm việc
6. Hội thảo về sản phẩm và những điều chỉnh phương thức thực thi ở đầu
vào ở giữa mỗi bước lặp
Chỉ có sự khác biệt duy nhất trong chính sách của 2 phương thức này là.
Crystal Clear cho rằng nên tăng phiên bản khoảng 2 đến 3 tháng một lần, trong
khi Crystal Orange lại cho rằng nên mở rộng tối đa là 4 tháng.
Những chính sách này đặc trưng của phương thức Crystal, tuy nhiên
chúng có thể bị thay thế bằng những phương thức tương đương như XP và
Scrum.
Work products:
Cockburn cho rằng các sản phẩm của Crystal Clear và Crystal Orange thường
có những quy mô khác nhau. Tuy nhiên cũng có những sản phẩm tương tự nhau
như: phiên bản liên tục, mô hình đối tượng thông thường, sổ tay người dùng, các
trường hợp kiểm thử, mã di trú.
Thêm vào đó Crystal Clear bao gồm những chú thích để mổ tả các đặc điểm,
trái lại ở Crystal Orange lại đòi hỏi các tài liệu đặc tả yêu cầu.
Local matters:
Đó là những thủ tục của Crystal mới được ứng dụng, tuy nhiên nó hoàn toàn
tách biệt với bản thân dự án, những thủ tục này có phạm vi khác nhau giữa hai
phương thức Crystal Clear và Crystal Orange. Cả hai phương thức trên đều cho
rằng mẫu cho một sản phẩm tốt là mã nguồn, kiểm tra truy hồi, và sử dụng giao
diện chuẩn có thể cài đặt và bảo trì bởi chính đội phát triển.
Tools:
Công cụ mà Crystal Clear yêu cầu là công cụ biên dịch, công cụ tạo các
phiên bản, công cụ cấu hình và quản lý và các trang in. Công cụ tối thiểu mà
Crystal Orange yêu cầu là công cụ tạo các phiên bản, lập trình, kiểm thử, giao
tiếp, theo dõi dự án, đồ họa và biện pháp trình diễn.
Standards:
Crystal Orange đề xuất việc lựa chọn những ký hiệu chuẩn, thiết kế thỏa
thuận, định dạng chuẩn và chất lượng chuẩn (Cockburn 1998) sẽ được sử dụng
trong dự án.
Activities:
Các hoạt động được thể hiện qua sơ đồ sau:
4. Feature Driven Development
Feature Driven Development (FDD) là phương pháp tiếp cận linh hoạt dành
cho phát triển hệ thống. FDD không bao phủ toàn bộ quy trình phát triển phần
mềm mà nó tập trung vào giai đoạn thiết kế và xây dựng. Tuy nhiên nó được
thiết kế để làm việc với những hoạt động khác của một dự án phát triển phần
mềm và không yêu cầu bất cứ một mô hình quy trình riêng nào. Nó tập trung vào
chất lượng sản phẩm xuyên suốt quy trình.
FDD bao gồm 5 quy trình liên tục và cung cấp những phương thức, kỹ thuật
và những hướng dẫn mà nhà đầu tư cần đến để chuyển giao hệ thống. Phần lặp
của quy trình FDD hỗ trợ phát triển linh hoạt với sự thích nghi nhanh chóng với
những thay đổi muộn trong yêu cầu của khách hàng.
- Phát triển một mô hình toàn thể (Develop an Overall Model)
Khi việc phát triển một mô hình toàn thể bắt đầu, các chuyên gia trong lĩnh
vực này họ đã nhận thức được phạm vi, khung cảnh và yêu cầu của hệ thống để
xây dựng. Các yêu cầu được tài liệu hóa như việc sử dụng các trường hợp hoặc
các chức năng đặc biết sẽ có thể xuất hiện ở bước này. Tuy nhiên FDD không
địa chỉ rõ ràng vấn đề lấy lại và quản lý các yêu cầu. Các chuyên gia cũng được
gọi là “walkthrough” trong mỗi đội và là người kiến trúc sư chính có hiểu biết
cao về hệ thống.
Mô hình này có thể được chia nhỏ ra thành các nhóm và mỗi nhóm sẽ có các
“walkthrough” phụ trách. Sau “walkthrough” các thành viên trong nhóm phát
triển sẽ chia làm các nhóm nhỏ để trao đổi và thảo luận nhằm xây dựng một hệ
thống tốt nhất.
- Xây dựng một danh sách các tính năng (Build a Features List)
Những chuyên gia, mô hình đối tượng, và những tài liệu về những yêu cầu đã
có để tạo ra nền tảng tốt cho việc xây dựng một liệt kê các tính năng thông minh
cho hệ thống đang được phát triển. Trong bản liệt kê, người phát triển hệ thống
sẽ trình bày mỗi chức năng giá trị riêng biệt được xây dựng trong hệ thống. Chức
năng sẽ được trình bày trong các nhóm bao gồm các chức năng trọng yếu đã
được cài đặt. Thêm vào đó, các tính năng quan trọng này lại được chia ra cho các
đặc điểm khác thiết lập. Sự biểu diễn lại này khác nhau đối với các phạm vi khác
nhau. Liệt kê này sẽ được kiểm tra lịa bởi người dùng hoặc các nhà đầu tư cho
một hệ thống hiệu quả và trọn vẹn.
- Lập kế hoạch nhờ vào tính năng (Plan by Features):
Bao gồm việc tạo ra các kế hoạch cao cấp hơn, mỗi đặc điểm sẽ được sắp xếp
theo thứ tự quyền ưu tiên và phụ thuộc và được ấn định cho người đứng đầu
nhóm lập trình. Ngoài ra, các lớp được đồng nhất trong một quy trình “mô hình
phát triển toàn thể” sẽ được phân công cho các lập trình viên khác.
- Thiết kế theo tính năng và xây dựng theo tính năng (Design by
Feature and Build by Feature):
-
Một nhóm nhỏ các tính năng được lựa chọn từ tập hợp các tính năng. Những
nhóm tính năng này được các đội phát triển. Quy trình thiết kế bằng tính năng
và xây dựng bằng tính năng là những thủ tục có thể được lặp lại trong suốt quá
trình những tính năng đã lựa chọn được sản xuất. Một bước lặp cần từ vài ngày
cho tới tối đa 2 tuần để thực hiện. Sau khi thực hiện thành công một bước lặp,
những tính năng đã hoàn thành được đưa vào trong chương trình chính trong khi
vòng lặp thiết kế và xây dựng bắt đầu với một nhóm các tính năng mới từ tập các
tính năng.
5. The Rational Unified Process
Ration Unified Process (viết tắt làRUP) được phát triển bởi Philippe
Kruchten, Ivar Jacobsen và những thành viên khác tại Ration Corporation để bổ
sung cho UML (Unified Modelling Language).
RUP là một phương thức tiếp cận những hệ thống hướng đối tượng, và được
sử dụng để nắm bắt các yêu cầu mẫu và xây dựng nền tảng hệ thống. RUP
nghiêng về hướng phát triển hướng đối tượng. Nó không bác bỏ hoàn toàn
những phương thức khác, mặc dù UML đặc biệt thích hợp với phát triển OO
Vòng đời của một dự án RUP được chia làm 4 giai đoạn : Khởi đầu
(Inception), Dự thảo (Elaboration), Xây dựng (Construction) và Chuyển giao
(Transition).
Những giai đoạn lại được chia thành những vòng lặp nhỏ (interation).
Khoảng thời gian của một vòng lặp có thể từ 2 tuần tới 6 tháng.
- Giai đoạn Khởi đầu (Inception): Xem xét yêu cầu khách hàng và
đưa ra các tiêu chí của dự án. Nhóm phát triển đưa ra những kiến trúc xây dựng
khác nhau, bản kế hoạch và chi phí ước tính cho toàn bộ dự án. Ngoài ra những
ước tính cho giai đoạn Dự thảo tiếp theo cũng được xây dựng.
- Giai đoạn Dự thảo (Elaboration): Đây là giai đoạn xây dựng nền
tảng kiến trúc phần mềm. Quy trình, cơ sở hạ tầng, và môi trường phát triển
được mô tả chi tiết. Sau giai đoạn này, hầu hết các tình huống sử dụng và tất cả
cả nhân tố ảnh hưởng được xác định và mô tả. Vào cuối giai đoạn, những phân
tích được thực hiện để đánh giá khả năng xuất hiện rủi ro, sự ổn định của kiến
trúc và chi phí xây dựng so với những gì bước đầu đã xác định.
- Giai đoạn Xây dựng (Construction): tất cả những thành phần còn lại
và tính năng của ứng dụng được phát triển, tích hợp vào sản phẩm và kiểm thử.
Kết quả của giai đoạn xây dựng được tạo ra nhanh nhất có thể trong khi vẫn đảm
bảo chất lượng sản phẩm. Một hoặc vài phiên bản được hoàn thành trong giai
đoạn này trước khi chuyển sang giai đoạn Chuyển giao.
- Giai đoạn chuyển giao (Transition Phase): là giai đoạn khi mà sản
phẩm phần mềm đủ điều kiện để đưa tới cộng đồng người dùng. Dựa trên những
phản hồi của người dùng, những phiên bản tiếp theo sẽ được vá lỗi hoặc gỡ bỏ đi
những tính năng không cần thiết. Giai đoạn chuyển giao bao gồm kiểm thử beta,
phân phối thí điểm, đào tạo người dùng, duy trì hệ thống, đưa sản phẩm ra thị
trường, phân phối và thành lập đội kinh doanh.
6. Dynamic Systems Development Method (DSDM)
Kể từ khi ra đời năm 1994, DSDM dần dần trở thành framework số 1 cho
việc phát triển ứng dụng nhanh (RAD) ở UK. DSDM là frame work miễn phí và
không bị ràng buộc bởi luật bản quyền dành cho sự phát triển RAD, được duy trì
bởi DSDM Consortium. Những nhà phát triển duy trì rằng ngoài việc phục vụ
như là một trong các phương pháp thông thường đã được chấp nhận DSDM cũng
cung cấp một framework kiểm soát cho RAD, được bổ sung bởi sự hướng dẫn
cách kiểm soát hiệu quả.
Ý tưởng cơ bản đằng sau DSDM là thay vì cố định số lượng chức năng trong
một sản phẩm và sau đó điểu chỉnh thời gian và chi phí để hoàn thành, nó sẽ cố
định thời gian và chi phí hoàn thành và sau đó điều chỉn số lượng chức năng sao
cho phù hợp.
DSDM bao gồm 5 giai đoạn: feasibility study, business study, functional
model iteration, design and build iteration và implementation. Hai giai đoạn đầu
được thực hiện liên tiếp nhau và hoàn thành cùng thời điểm. 3 giai đoạn cuối,
mỗi khi công việc phát triển hiện thời được hoàn thành, sẽ được lặp lại với quy
mô lớn hơn.
- Feasibility study là giai đoạn mà sự thích hợp của DSDM đối với dự
án được đánh giá. Thông qua kiểu dự án và nhiều yếu tố khác quyết định được
đưa ra, sử dụng DSDM hay là không. Thêm vào đó, giai đoạn này còn đề cập
đến tính khả thi về kĩ thuật trong suốt dự án, những rủi ro trong đó và đưa ra bản
báo cáo tính khả thi và bản phác thảo kế hoạch phát triển.
- Business study là giai đoạn những đặc điểm cơ bản của nhiệm vụ cần thực
hiện và công nghệ được phân tích. Phương pháp tiếp cận được đề nghị để tổ
chức các hội thảo, nơi mà các chuyên gia của khách hàng tập trung đầy đủ để
có thể xem xét, đánh giá tất cả các mặt có liên quan của hệ thống và có thể
quyết định những gì được ưu tiên phát triển. Những quy trình nhiệm vụ chịu
ảnh hưởng và những lớp người dùng được mô tả trong Business Area
Definition. Việc xác định những lớp người dùng chịu ảnh hưởng đã thu hút
được khách hàng. Sự mô tả ở mức cao hơn của những quy trình được trình bày
trong Business Area Definition với dạng thích hợp như mô hình thực thể liên
kết,…
- Functional model iteration là giai đoạn lặp và gia tăng đầu tiên. Trong mỗi
bước lặp, nội dung và phương pháp tiến cận được lên kế hoạch, đi qua bước
lặp đó và kết quả được phân tích cho các bước lặp tiếp theo. Khi cả việc phân
tích và viết mã hoàn thành, bản dùng thử được xây dựng và những kinh
nghiệm thu được từ chúng được sử dụng để nâng cấp mô hình phân tích. Bản
dùng thử không bị loại bỏ hoàn toàn mà dần dần đi theo hướng nâng cao chất
lượng, như vậy chúng có thể được đưa vào trong hệ thống cuối cùng. Mô hình
chức năng đươc tạo ra như là một đầu ra, gồm mã bản dùng thử và mô hình
phân tích. Kiểm thử cũng là một phần cơ bản của giai đoạn này.
- Design and build iteration là giai đoạn mà hệ thống được tập trung xây dựng.
Đầu ra là một hệ thống đã được kiểm thử đáp ứng tối thiểu yêu cầu khách
hàng. Thiết kế và tính năng bản dùng thử được đánh giá bởi người dùng và
những phát triển sau này sẽ dựa trên những đánh giá đó.
- Implementation là giai đoạn hệ thống được chuyển tử môi trường phát triển
sang môi trường sản xuất thực tế. Công việc đào tạo, huấn luyện người dùng
được tiến hành và hệ thống được vận hành bởi họ. Nếu như khi triển khai thu
hút được số lượng lớn người dùng thì giai đoạn bổ sung cũng có thể được lặp
lại. Bên cạnh hệ thống, đầu ra của giai đoạn bổ sung cũng gồm tài liệu hướng
dẫn người dùng và bản báo cáo đánh giá dự án. Dựa trên kết quả đánh giá dự
án, kế hoạch về những phát triển sau này được xây dựng. DSDM vạch rõ bốn
khả năng có thể xảy ra. Nếu hệ thống đáp ứng được toàn bộ các yêu cầu thì
việc phát triển thêm là không cần thiết. Nhưng nếu vẫn còn có những yêu cầu
hệ thống chưa đáp ứng được thì quy trình phát triển có thể phải tiến hành lại từ
bắt đầu tới kết thúc. Nếu như một vài chức năng bị bỏ qua thì quy trình phát
triển có thể tiến hành lại từ functional model iteration. Cuối cùng, nếu một số
vấn đề kĩ thuật không được tập trung do eo hẹp về thời gian, chúng có thể được
hoàn thành khi tiến hành lại vòng lặp, bắt đầu từ giai đoạn thiết kế và xây
dựng.
7. Phát triển phần mềm thích nghi
Phát triển phần mềm tương thích (Adaptive Software Development-ASD)
được phát triển bởi James A.Highsmith III. Hiện nay có khá nhiều các nguyên
tắc của ASD khác với những tài liệu nghiên cứu của Highsmith trước kia về
phương pháp phát triển lặp. Một trong những tiền thân được biết đến nhiều nhất
của ASD là “RADical Software Development” (phát triển phần mềm căn bản),
mô hình được phát triển bởi sự cộng tác của Highsmith và S. Bayer và được giới
thiệu trong “Bayer and Highsmith” 1994.
Trọng tâm chính của ASD là vào những vấn đề trong việc phát triển các hệ
thống lớn và phức tạp. Phương pháp này đã kích thích mạnh mẽ việc phát triển
lặp với việc chế thử liên tục. Về cơ bản ,ASD là “giữ cho cân bằng ở ranh giới
của sự hỗn loạn”,do đó,mục đích của ASD là cung cấp một khuôn mẫu vói
những hướng dẫn đầy đủ để tránh cho dự án lâm vào tình trạng hỗn loạn,khó
kiểm soát mặc dù đôi khi nó cũng làm hạn chế những sáng tạo hay những đột
phá.
Một dự án ASD được thiết kế theo 3 chu kì,được biểu diễn bởi hình sau :
Các bước này được đặt tên theo cách để nhấn mạnh vào vai trò của việc thay
đổi trong tiến trình.
Ở đây, “Speculation”xem xét , nghiên cứu) được dùng thay cho “Planning”
(lên kế hoạch) bởi vì 1 kế hoạch thì nhìn chung là chỉ được nhìn nhận như là 1
cái gì đó không chắc chắn lắm,do đó mà những sự sai lệch sẽ dẫn đến thất bại.
Tương tự như vậy, “Collaborate”(cộng tác) được sử dụng để nhấn mạnh vào tầm
quan trọng của làm việc theo nhóm như là ý nghĩa của việc phát triển những hệ
thống có sự thay đổi cao.”Learn”(học tập) lại nhấn mạnh vào sự cần thiết của
kiến thức và sửa lỗi, và trong thực tế là những yêu cầu có thể thay đổi liên tục
trong suốt quá trình phát triển. Hình sau đây sẽ miêu tả chi tiết hơn về chu kì
phát triển thích nghi:
Bước khởi tạo dự án định ra những nền tảng của dự án và được bắt đầu bằng
cách định ra những nhiệm vụ của dự án.Những nhiệm vụ này cơ bản là lập ra
một khung thô cho sản phẩm cuối,và tất cả các việc phát triển sẽ được chỉ đạo để
các nhiệm vụ được hoàn thành.Một trong những cái quan trọng nhất trong việc
định ra các nhiệm vụ cho dự án là phác thảo ra những thông tin nào cần thiết cho
dự án.Các mặt quan trọng của nhiệm vụ được định ra theo 3 phần: tầm nhìn của
dự án,dữ liệu dự án,1 sản phẩm đầu ra chi tiết. Ý nghĩa của những tài liệu này
được được giải thích chi tiết trong Highsmith 2000. Bước khởi tạo dự án sửa lại
bảng lịch trình kế hoạch tổng thể cũng như lich trình và các mục tiêu cho mỗi
chu kì phát triển. Chu kì điển hình kéo dài từ 4 cho đến 8 tuần. ASD rõ ràng là
hướng thành phần hơn là hướng nhiệm vụ. Trong thực hành,điều này có ý nghĩa
là trọng tâm được đặt vào kết quả và chất lượng hơn là nhiệm vụ hay tiến trình
được sử dụng trong quá trình tạo ra kết quả ấy. Tiền đề cho những chu kì phát
triển xa hơn là kết quả của việc lặp đi lặp lại việc kiểm tra chất lượng mà trọng
tâm là tập trung vào phát triển các chức năng của phần mềm trong suốt chu kì.
Một yếu tố quan trọng nữa trong việc đưa ra các đánh giá,kiểm tra là sự có mặt
của khách hàng ,ví dụ như là 1 nhóm các chuyên gia. Tuy nhiên từ khi các đánh
giá,kiểm tra chất lượng trở nên hiếm dần (chúng chỉ được thực hiện vào cuối của
mỗi chu kì) thì sự có mặt của khách hàng trong ASD cũng chỉ được làm trong
các phiên phát triển ứng dụng kết nối (joint application development (JAD)).
Một phiên JAD là vô cùng quan trọng cho công việc, đây là nơi mà khách hàng
và nhà phát triển gặp nhau và thảo luận về những yêu cầu về các tính năng của
sản phẩm, và để nâng cao việc truyền thông với nhau. ASD không đề xuất ra
những lịch trình cho việc tổ chức các phiên JAD nhưng chúng thường được làm
đặc biệt vào những bước đầu của dự án.Bước cuối cùng của dự án ASD là những
câu hỏi \giải đáp cuối cùng và phát hành (Final Q/A and Release ). ASD không
đưa ra cách thực hiện bước này thế nào nhưng nó nhấn mạnh vào tầm quan trọng
của việc nắm được những gì đã học. Các hoạt động kế tiếp của dự án được xem
như rất quan trọng trong các dự án có tốc độ nhanh và có nhiều thay đổi, nơi mà
các quá trình phát triển linh hoạt diễn ra. Tóm lại, tính thích nghi của phát triển
trong ASD được mô tả qua bảng sau:
Đặc
điểm
Mô tả
Hướng nhiệm
vụ
Các hoạt động trong mỗi chu kì phát triển phải phù hợp với
nhiệm vụ tổng thể của dự án .Nhiệm vụ có thể được sửa đổi trong khi
việc phát triển được tiến hành
Dựa vào thành
phần
Các hoạt động phát triển không nên hướng tác vụ,nhưng cũng
nên tập trung vào phát triển phần mềm làm việc như xây dựng hệ
thống theo những phần nhỏ cùng lúc
Lặp lại Một mô hình thác nước chỉ làm việc trong những môi trường đã
được hiểu rõ và được định nghĩa chi tiết.Hầu hết các việc phát triển
đều thay đổi thất thường vì thế thay vì làm đúng trong lần đầu ,các
nỗ lực phát triển nên tập trung vào việc làm lại
Time-Boxed Sự mập mờ trong những dự án phần mềm phức tạp có thể được
giảm bớt bằng cách thay đổi thời hạn.Việc quản lí time-boxed dự án
tập trung vào những người tham gia vào dự án để xử lí sớm những
quyết định khó khăn không tránh khỏi trong dự án
Thích ứng được
với các thay đổi
Thay đổi là thường xuyên trong phát triển phần mềm, việc có thể
thích ứng với nó thì quan trọng hơn là kiểm soát nó.Để xây dựng một
hệ thống thích ứng được với thay đổi,những nhà phát triển phải luôn
đánh giá được sự thay đổi của các thành phần trong quá trình xây
dựng chúng
Hướng rủi ro Việc mở rộng phạm vi những yếu tố rủi ro cao nên được bắt đầu
sơm nếu có thể
8. Phát triển phần mềm mã nguồn mở
Sự kết hợp của những phát minh về he thing bảng thông báo và những thói
quen cũ cũ của những người phát triển phần mềm để chia sẻ mã nguồn miễn phí
với nhau đã thúc đẩy sự mở rộng của Internet trên phạm vi toàn cầu vào những
năm 90. Tiến trình phát triển này đã khơi nguồn cho ý tưởng về 1 mô hình phát
triển phần mềm mới – OSS - cách phát triển ứng dụng khá mới lạ.
OSS cho rằng mã nguồn nên miễn phí và có thể sửa chữa hoặc bổ sung mà
không cần trả tiền. Feller và Fitzgerald (2000) đã trình bày một số động lực và
phương hướng cho phát triển OSS như sau:
- Tính kĩ thuật; cần thiết phải có những mã mạnh, vòng đời phát triển
nhanh hơn, đạt những tiêu chuẩn chất lượng cao hơn, đáng tin cậy và ổn định và
hơn hết là tính mở.
- Tính thương mại; sự hợp tác cần cho cả việc san sẻ lợi nhuận cũng
như rủi ro.
- Về chính trị, xã hội; thỏa mãn những sở thích cá nhân, mong muốn
về công việc có ý nghĩ và hướng tới cộng đồng.
Phần lớn mọi người đều biết rằng dự án phát triển OSS lấy trọng tâm là
những công cụ phát triển hoặc những môi trường được các chuyên gia sử dụng
để phát triển chúng thêm, vì vậy cùng lúc, họ đóng vai trò là người sử dụng và
nhà phát triển. OSS không phải là một bản thing kê các thực nghiệm phát triển
phần mềm đã được định nghĩa hay đã được ra đời mà nó được mô tả chính xác
hơn trong thuật ngữ về những quyền hạn khác trong việc phân phối phần mềm.
Sáng kiến về mã nguồn mở sẽ công nhận và cấp bản quyền cho những phần
mềm đáp ứng các yêu cầu của OSS.
Mặc dù có những khác biệt trong những mặt như tính thương mại, về cách tổ
chức nhóm so với các phương pháp linh hoạt khác nhưng trong 1 số tình huống,
các suy nghĩ và thực hiện lại có những điểm giống nhau, ví dụ như tiến trình
phát triển OSS bắt đầu với những việc cho ra đời sớm và thường xuyên các bản
thử nghiệm và nó thiếu rất nhiều các cơ chế truyền thống, cái mà được sử dụng
cho hợp tác phát triển phần mềm với những kế hoạch, thiết kế cấp độ, lập lịch và
những tiến trình đã định. Thông thường, một dự án OSS bao gồm các bước sau:
- Tìm hiểu vấn đề
- Tìm những người tình nguyện
- Định ra cách giải quyết
- Phát triển và kiểm thử mã nguồn
- Thay đổi mã nguồn
- Các tài liệu hướng dẫn mã nguồn
- Tổ chức phát hành
Mặc dù có thể mô tả phương pháp phát triển phần mềm OSS theo những
bước trên nhưng sự quan tâm lại nằm ở chỗ quản lí những bước trên như thế nào,
sau đây là một vài đặc điểm mô tả phương pháp phát triển OSS :
- hệ thống được xây dựng bởi số lượng lớn những người tình nguyện
- Công việc không được phân định rõ ràng mà mọi người tự chọn công việc
mà mình thích
- Có những thiết kế cấp độ hệ thống không rõ ràng
- Không có kế hoạch, lịch trình
- Hệ thống phát triển theo những bước tiến nhỏ
- Chương trình được kiểm thử thường xuyên
Theo Feller và Fitzgerald (2000), tiến trình phát triển OSS được tổ chức là
một cách phát triển và những cố gắng gỡ lỗi trong phạm vi rộng 1 cách song
song, nó bao gồm sự hợp tác và những cống hiến của những người phát
triển.Tuy nhiên, cũng có những dấu hiệu chỉ ra rằng ý tưởng phát triển miễn phí
này đang dần thay đổi vì tiến trình phát triển OSS không có bất kì một quy tắc
hay thói quen được chuẩn hóa nào thế nhưng tiến trình này vẫn liên quan đến
thói quen và những điều cấm kị đã được học hoặc rút ra từ thực nghiệm.
III. So sánh các phương pháp phát triển phần mềm linh hoạt
1. Giới thiệu
Việc so sánh khách quan các phương pháp với nhau thường rất khó, và những
kết quả thu được thông thường đều dựa trên các kinh nghiệm chủ quan của những
người đi trước hay là những hiểu biết trực giác của người làm (Song and Osterweil
1991). Có hai phương pháp thường dùng là phương pháp so sánh chính thống và
phương pháp so sánh gần chính thống (Song and Osterweil 1992). Phương pháp so
sánh gần chính thống cố gắng khắc phục những hạn chế chủ quan của kĩ thuật so
sánh chính thống, theo Sol (1983), phương pháp so sánh không chính thống có thể
tiếp cận theo 5 cách khác nhau :
1 Mô tả một phương pháp và đánh giá các phương pháp đối lập với
phương pháp đó.
2 Rút ra những đặc điểm quan trọng từ một vài phương pháp hay qua
việc so sánh mỗi phương pháp với nhau.
3 Xây dựng những giả thiết về các yêu cầu của phương pháp và đưa ra
một khuôn mẫu từ những bằng chứng thực tế trong một vài phương pháp .
4 Định nghĩa một siêu ngôn ngữ như là một công cụ giao tiếp và như là
một khung chuẩn chung để mô tả nhiều phương pháp khác.
5 Dùng phương pháp tiếp cận ngẫu nhiên và thử liên kết các đặc điểm
của mỗi phương pháp thành 1 vấn đề cụ thể
Ở đây chúng ta có sử dụng hai thuật ngữ là “những điểm chính “ (key points)
và “những điểm đặc biệt” (Special features). Những điểm chính mô tả cụ thể
những vấn đề hoặc những khía cạnh chính của phương pháp, còn những điểm đặc
biệt thì d
Các file đính kèm theo tài liệu này:
- agile_software_develoment.pdf