Phát triển phần mềm linh hoạt hoặc lập trình linh hoạt (tiếng Anh: Agile software development hay Agile programming) là một phương thức thực hiện các dự án công nghệ phần mềm, phương thức này khuyến khích sự thay đổi khi phát triển dự án và đưa sản phẩm đến tay người dùng sao cho nhanh nhất.
Lịch sử
Các phương pháp phát triển phần mềm khác nhau gia tăng từ năm 1957. Phương pháp Phát triển phần mềm linh hoạt được nhiều người chấp nhận, nó có một số nội dung sau:
Bản tuyên ngôn của Phát triển phần mềm linh hoạt
Trong tháng 2 năm 2001, 17 nhà phát triển phần mềm đã gặp nhau ở một khu nghỉ mát tại bang Utah để thảo luận phương pháp phát triển phần mềm. Họ đưa ra Bản tuyên ngôn sau cho Phát triển phần mềm linh hoạt:
- Cá nhân và sự tương tác hơn là quy trình và các công cụ
- Phần mềm chạy được hơn là tài liệu đầy đủ
- Hợp tác với khách hàng hơn là đàm phán dựa theo hợp đồng
- Đáp ứng với các thay đổi hơn là làm theo kế hoạch đã định
Mặc dù vế thứ hai có vai trò quan trọng, người ta đánh giá vế thứ nhất cao hơn để thành công.
; Cá nhân và sự tương tác
: Tự tổ chức và động lực rất quan trọng, cũng như sự tương tác để làm việc cùng vị trí và theo cặp lập trình.
; Phần mềm có thể chạy được
: Phần mềm chạy được sẽ hữu ích hơn hơn là chỉ trình bày tài liệu cho khách hàng xem ở cuộc họp.
; Khách hàng hợp tác
: Không thể thu thập tất cả yêu cầu của khách hàng vào giai đoạn đầu của chu kỳ phát triển phần mềm, do đó liên tục cộng tác để lấy thông tin từ khách hàng hoặc các bên tham gia là rất quan trọng.
; Đáp ứng thay đổi
: Phương pháp Linh hoạt tập trung vào việc phản ứng nhanh chóng với sự thay đổi và không ngừng phát triển.
Các nguyên tắc của Phát triển phần mềm linh hoạt
Phát triển phần mềm linh hoạt dựa trên mười hai nguyên tắc:
Sự hài lòng của khách hàng được đặt lên hàng đầu và liên tục chuyển giao phần mềm có giá trị cho họ
Chào mừng các yêu cầu thay đổi, ngay cả trong giai đoạn muộn của dự án
Phần mềm chạy được, được giao thường xuyên (hàng tuần chứ không nên là hàng tháng)
Người làm bên mảng kinh doanh và người phát triển phần mềm nên gần gũi, hợp tác hàng ngày
Dự án phần mềm được xây dựng bởi các cá nhân có động lực, những người đáng tin cậy
Mặt đối mặt khi nói chuyện là cách tốt nhất để liên lạc (làm việc cùng nơi)
Phần mềm chạy được là thước đo của tiến độ
Phát triển bền vững, có thể duy trì một tốc độ không đổi
Liên tục chú ý đến các kỹ thuật mới và thiết kế tốt
Đơn giản hóa - nghệ thuật của việc tối đa hóa số việc không cần phải làm - là điều cần thiết
Kiến trúc, yêu cầu và thiết kế tốt tạo nên nhóm tự tổ chức tốt
Thường xuyên phản ánh việc làm thế nào để nhóm làm việc hiệu quả hơn và điều chỉnh cho phù hợp
Tổng quan
nhỏ|200x200px|[[Lập trình đôi|Cặp lập trình, một kỹ thuật phát triển nhanh được sử dụng bởi Lập trình cực hạn. Thông tin ghi chú trên nền.]]
Có rất nhiều cụ thể phát triển nhanh phương pháp. Nhất đẩy mạnh tinh thần đồng đội, cộng tác, và khả năng thích ứng quá trình trong suốt các sản phẩm phát triển sự sống, chu kỳ.
Có nhiều phương pháp phát triển phần mềm linh hoạt. Đa số các phương pháp này cố gắng cực tiểu hóa rủi ro bằng cách phát triển phần mềm trong các khung thời gian ngắn, gọi là các bước lặp, mỗi bước lặp thường trong khoảng từ 1 đến 4 tuần. Mỗi bước lặp tự nó giống như một dự án phần mềm thu nhỏ, bao gồm tất cả các tác vụ cần thiết để cho ra nâng cấp mi-ni của chức năng mới: lập kế hoạch, phân tích yêu cầu, thiết kế, viết mã, kiểm thử, và viết tài liệu. Tuy một bước lặp có thể không bổ sung đủ chức năng để đảm bảo sự ra đời của sản phẩm cuối cùng, nhưng một dự án phần mềm linh hoạt nhằm đến việc cho ra phần mềm mới khi kết thúc mỗi bước lặp. Trong nhiều trường hợp, người ta đạt được mục tiêu này. Điều này đặc biệt đúng đối với phần mềm ứng dụng web. Cuối mỗi bước lặp, bất kể kết quả như thế nào, nhóm phát triển phần mềm cũng đánh giá lại các ưu tiên của dự án.
Các phương pháp phát triển phần mềm linh hoạt nhấn mạnh tầm quan trọng của giao tiếp thời gian thực, giao tiếp trực tiếp mặt-đối-mặt được đánh giá cao hơn giao tiếp qua các tài liệu viết. Hầu hết các đội phát triển linh hoạt được tập trung trong một môi trường có điều kiện thuận lợi cho việc giao tiếp, và các đội này bao gồm cả các lập trình viên và các "khách hàng" của họ (khách hàng là người định nghĩa sản phẩm; họ có thể là các quản lý sản phẩm, các nhà phân tích doanh nghiệp (business analyst), hoặc các khách hàng thực sự). Đội còn có thể bao gồm cả các chuyên gia test, thiết kế tương tác, những người viết tài liệu kỹ thuật, và các quản lý.
Các phương pháp phát triển phần mềm linh hoạt còn nhấn mạnh khả năng hoạt động của phần mềm như là phương thức chính yếu để đánh giá tiến độ. Cùng với việc đánh giá cao giao tiếp trực tiếp, các phương pháp tạo ra rất ít tài liệu khi so sánh với các phương pháp khác. Điều này dẫn đến phê phán rằng các phương pháp phát triển linh hoạt không có tính kỷ luật.
Lặp đi lặp lại, gia tăng và tiến hóa (Iterative, incremental và evolutionary)
Dự án thường sẽ chia thành các giai đoạn nhỏ (timebox), có đầy đủ các bước làm việc (ra kế hoạch, phân tích, thiết kế, lập trình, kiểm thử). Chúng được lặp đi lặp lại trong suốt dự án (chu kỳ từ 2-4 tuần).
Phần mềm chạy được là thước đo của tiến độ làm việc.
Hiệu quả và đối thoại mặt-đối-mặt
Người ta khuyến khích sự giao tiếp trực tiếp giữa các bên liên quan trong phương pháp Phát triển phần mềm linh hoạt.
Rất ngắn vòng lặp phản hồi và chu kỳ thích ứng
Một đặc điểm nổi bật của Phát triển phần mềm linh hoạt là các buổi "trao đổi hằng ngày" (daily stand-up). Trong khoảng thời gian ngắn (chẳng hạn 15 phút), các thành viên của nhóm sẽ cho biết mình đã làm được gì và sẽ làm gì hôm nay. Khó khăn cũng được nêu ra nếu có.
Tập trung vào chất lượng
Các công cụ như Tích hợp liên tục, kiểm thử tự động,... được áp dụng để tăng chất lượng của dự án.
Triết lý
Thích nghi so với tiên đoán
Lặp đi lặp lại so với phương pháp Thác nước
Mã nguồn so với tài Liệu
Các phương pháp của Phát triển phần mềm linh hoạt
[[Tập tin:SoftwareDevelopmentLifeCycle.jpg|phải|nhỏ|Phần mềm phát triển sự sống, chu kỳ hỗ trợ
]]
Một số phương pháp phổ biến:
- Adaptive software development (ASD)
- Agile modeling
- Agile Unified Process (AUP)
- Crystal Clear methods
- Disciplined agile delivery
- Dynamic systems development method (DSDM)
- Extreme programming (XP)
- Feature-driven development (FDD)
- Lean software development
- Kanban
- Scrum
- Scrumban
- RAD(Rapid Application Development)
Chỉ trích
Ứng dụng bên ngoài phát triển phần mềm
nhỏ|Hội nghị Agile tại Brazil năm 2014
👁️
1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Phát triển phần mềm linh hoạt** hoặc **lập trình linh hoạt** (tiếng Anh: **_Agile software development_** hay **_Agile programming_**) là một phương thức thực hiện các dự án công nghệ phần mềm, phương thức này
**Quy trình phát triển phần mềm** _(software development methodology)_ là một cấu trúc bao gồm tập hợp các thao tác và các kết quả tương quan sử dụng trong việc phát triển để sản xuất
**Công ty phần mềm** là một công ty có các sản phẩm chính là các phần mềm, công nghệ phần mềm, phân phối và phát triển sản phẩm phần mềm. Công ty phần mềm là
**Kiểm thử phần mềm** (tiếng Anh: **Software testing**) là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ
**Phần mềm dạng dịch vụ** (**SaaS** ) là mô hình cấp phép và phân phối phần mềm trong đó phần mềm được cấp phép trên cơ sở đăng ký và được lưu trữ tập trung.
nhỏ| Một sơ đồ cho thấy cách người dùng tương tác với [[phần mềm ứng dụng trên một máy tính để bàn thông thường. Lớp phần mềm ứng dụng giao tiếp với hệ điều hành,
thumb|alt=Màn hình máy tính của hệ điều hành, màn hình hiển thị các ứng dụng phần mềm tự do khác nhau.|Ví dụ về một hệ điều hành phần mềm tự do hiện đại chạy một
**DevOps** (kết hợp của cụm từ tiếng Anh "software **DEV**elopment" và "information technology **OP**eration**S**") là một thuật ngữ để chỉ một tập hợp các hành động trong đó nhấn mạnh sự hợp tác và trao
Phần mềm là các lệnh được lập trình mà được lưu trữ trong bộ nhớ được lưu trữ của các máy tính kỹ thuật số để bộ xử lý thực hiện. Phần mềm là một
nhỏ|Ảnh chụp màn hình trò chơi giáo dục Chinese Tap trên Android để dạy học tiếng Trung. **Phần mềm giáo dục** là phần mềm máy tính có nhiệm vụ chính là hỗ trợ dạy học
thumb|Các vòng lặp lên kế hoạch và phản hồi trong lập trình cực hạn **Lập trình cực hạn** (tiếng Anh: **Extreme programming**, viết tắt là **XP**) là một quy trình phát triển phần mềm nhằm
**Phần mềm xử lý bảng tính** hay **Bảng tính** (tiếng Anh**: Spreadsheet**) là một phần mềm ứng dụng dùng để tổ chức, phân tích và lưu trữ dữ liệu thông qua các bảng tính (gọi
Trong quản lý thời gian, lên **khung thời gian** nghĩa là phân bổ khoảng thời gian cố định gọi là **khung thời gian**, cho mỗi hoạt động được lên kế hoạch. Một số phương pháp
**Công nghệ phần mềm** () là sự áp dụng một cách tiếp cận có hệ thống, có kỷ luật, và định lượng được cho việc phát triển, sử dụng và bảo trì phần mềm. Ngành
Dưới đây là danh sách các môi trường phát triển tích hợp ## Các môi trường phát triển tích hợp nguồn mở/miễn phí ### Các môi trường phát triển tích hợp đa nền miễn phí
**Hãng phát triển trò chơi điện tử** là hãng chuyên phát triển phần mềm về trò chơi điện tử, cũng như quy trình và các nguyên tắc liên quan để tạo ra các trò chơi
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần
Trong các ngành kỹ thuật hệ thống và kỹ nghệ phần mềm, **phân tích yêu cầu** là công việc bao gồm các tác vụ xác định các yêu cầu cho một hệ thống mới hoặc
**Unity** là một game engine đa nền tảng được phát triển bởi Unity Technologies, mà chủ yếu để phát triển video game cho máy tính, consoles và điện thoại. Lần đầu tiên nó được công
**Quỹ Phần mềm Tự do** hay **Tổ chức Phần mềm Tự do** (tiếng Anh: _Free Software Foundation_, viết tắt **FSF**) là một tổ chức phi lợi nhuận do Richard Stallman thành lập ngày 4 tháng
**Wine** là một lớp tương thích tự do nguồn mở dùng để chạy các phần mềm viết cho Windows trên các hệ điều hành tương tự Unix (Linux, FreeBSD,...). Wine cũng cung cấp một thư
**Phân phối liên tục **(tiếng Anh: Continuous delivery - viết tắt: CD) là một cách tiếp cận của kỹ thuật phần mềm, trong đó các đội sẽ sản xuất phần mềm trong chu kỳ ngắn,
**T****iêu chuẩn ISO 12207** _Hệ thống và kỹ thuật phần mềm – quy trình vòng đời phần mềm_ là một tiêu chuẩn quốc tế cho quy trình phát triển phần mềm. Tiêu chuẩn này nhằm
**T****iêu chuẩn ISO/IEC 12207** _Hệ thống và kỹ thuật phần mềm – quy trình vòng đời phần mềm_ là một tiêu chuẩn quốc tế cho quy trình phát triển phần mềm. Tiêu chuẩn này nhằm
**Blender** là một phần mềm đồ họa 3D miễn phí và nguồn mở, được sử dụng để làm phim hoạt hình, kỹ xảo, ảnh nghệ thuật, mẫu in 3D, phần mềm tương tác 3D và
**Trung tâm Quốc tế Nghiên cứu và Phát triển Công nghệ định vị sử dụng vệ tinh Đông Nam Á** (tên đầy đủ Tiếng Anh: _Collaboration Centre for Research and Development on Satellite Navigation Technology
**Atlassian Corporation Plc** () là một công ty phần mềm có trụ sở tại Vương quốc Anh, nhưng có nguồn gốc từ Úc và Hoa Kỳ. Nó chuyên phát triển sản phẩm cho các lập
phải|nhỏ|267x267px| Menu Symbian S60v3 (3rd Edition - Phiên bản thứ 3) trên Nokia N73. |liên_kết=Special:FilePath/S60_3rd_Edition_from_N73.jpg **S60** (hay còn gọi là **nền tảng S60** - trước đây là **Giao diện người dùng Series 60**) là một
**Robert Cecil Martin**, thường được gọi là "Uncle Bob", người Mỹ. Ông là một kỹ sư phần mềm, người tư vấn, và là tác giả của nhiều cuốn best-seller. Ông được công nhận nhiều nhất
thumb|[[:en:Zen garden|Vườn thiền ở Ryōan-ji. Công trình này được tạo dựng trong thời kì Higashiyama. Bức tường đất sét, ám màu theo thời gian với hai tông màu nâu và cam tinh tế, phản ánh
Với 25 năm kinh nghiệm phát triển và triển khai các giải pháp phần mềm cho khách hàng từ 30 nước, TMA đã tích lũy nhiều công nghệ tiên tiến và giải pháp phong phú
**Mastodon** là một dịch vụ mạng xã hội tự do nguồn mở hoạt động với hình thức tự lưu trữ (self-hosting). Nó cho phép bất cứ ai cũng có thể xây dựng một hệ thống
**Howard G. "Ward" Cunningham** (sinh ngày 26 tháng 5 năm 1949) là một lập trình viên người Mỹ, có công phát triển wiki đầu tiên và là đồng tác giả của _Tuyên ngôn về phát
Công ty CP Đầu Tư & Phát Triển Công Nghệ A.Yersin lấy tôn chỉ là nỗ lực nghiên cứu, đầu tư, kết nối, hợp tác các chương trình khoa học công nghệ với các tổ
**Origin** là một nền tảng phân phối kỹ thuật số được phát triển bởi Electronic Arts để mua và chơi các trò chơi điện tử. Phần mềm này có sẵn cho máy tính và
**Lực lượng Phòng vệ Phần Lan** là lực lượng chiến đấu của nước Cộng hòa Phần Lan với trách nhiệm chiến đấu, bảo vệ độc lập, chủ quyền, thống nhất, toàn vẹn lãnh thổ, an
**SUSE Linux** ( or ; ) là một hệ điều hành máy tính. Nó được xây dựng từ mã nguồn của Linux kernel và phân phối cùng với các phần mềm hệ thống và và
Sau sáp nhập, ngành giáo dục TP Cần Thơ (mới) có nhiều điều kiện thuận lợi để phát triển nhưng vẫn gặp thách thức về thừa, thiếu giáo viên cục bộ. Theo Nghị quyết số
Trong thời đại công nghệ số hiện nay, API (Application Programming Interface - Giao diện lập trình ứng dụng) không chỉ đơn giản là một ứng dụng công nghệ. Nó còn là đại diện cho
Công Ty Cổ Phần TMDV Phượng Hoàng (Phoenix Company) là công ty công nghệ phần mềm, thành lập năm 2007, với chính sách luôn luôn tối ưu hóa giải pháp CNTT linh hoạt, khai thác
**Sega Corporation** (tiếng Nhật: 株式会社セガ, Kabushiki-kaisha Sega) là một công ty đa quốc gia có trụ sở tại Nhật Bản, chuyên ngành trong lĩnh vực phát triển phần mềm và phần cứng trò chơi điện
Công ty hoạt động trong lĩnh vực đầu tư và phát triển với nhiều ngành nghề kinh doanh đa dạng, bao gồm giáo dục, bán buôn đồ dùng gia đình, và thiết bị công nghệ
là một công ty kinh doanh hàng tiêu dùng điện tử và trò chơi điện tử đa quốc gia của Nhật Bản có trụ sở chính tại Kyoto. Công ty thành lập vào năm 1889
PaaS là một dịch vụ trong điện toán đám mây cung cấp nền tảng phát triển ứng dụng, gồm hệ điều hành, phần mềm trung gian, cơ sở dữ liệu...Bạn là nhà phát triển hay
**Steve Paul Jobs ** (; 24 tháng 2 năm 1955 – 5 tháng 10 năm 2011) là doanh nhân và nhà sáng chế người Mỹ. Ông là đồng sáng lập viên, chủ tịch, và cựu
**Unix** (; được đăng ký nhãn hiệu là **UNIX**) là một họ hệ điều hành máy tính đa nhiệm, đa người dùng được viết vào những năm 1960 và 1970 do một số nhân viên
**Lịch sử của Linux** bắt đầu vào năm 1991 với sự bắt đầu của một dự án cá nhân của sinh viên Phần Lan Linus Torvalds để tạo ra một hạt nhân hệ điều hành
Nguồn gốc của video game nằm trong quá trình phát triển với ống phóng tia âm cực -dựa trên hệ thống phòng thủ tên lửa vào cuối những năm 1940. Các chương trình này sau
**Nền tảng như một dịch vụ** (tiếng Anh: **Platform as a service**), gọi tắt là **PaaS**, là một dịch vụ điện toán đám mây trong đó nhà cung cấp sẽ cung cấp các nền tảng
Công nghệ giáo dục là sự kết hợp giữa tri thức sư phạm với công nghệ hiện đại để tạo ra môi trường học tập linh hoạt, hiệu quả và cá nhân hóa. Đây được