Khác biệt giữa bản sửa đổi của “Phát triển phần mềm”

Bách khoa toàn thư mở Wikipedia
Nội dung được xóa Nội dung được thêm vào
→‎Xem thêm: chuyển nộidung từ bài Công nghệ phần mềm
Dòng 20: Dòng 20:


===Mô hình thác nước===
===Mô hình thác nước===
{{bài chính|Mô hình thác nước}}
Mô hình này làm cho ý nghĩa việc sản xuất phần được thấy rõ hơn.
Mô hình này làm cho ý nghĩa việc sản xuất phần được thấy rõ hơn.
[[Tập tin:MoHinhThacNuoc.gif]]
<!------[[Tập tin:MoHinhThacNuoc.gif]]--hình này không đúng, mô hình thác nước không cho phép quay lui--------->


#Phân tích các yêu cầu và định nghĩa: hệ thống dịch vụ, khó khăn và mục tiêu được hình thành bởi sự trợ ý của hệ thống người tiêu dùng. Sau đó các yếu tố này được định nghĩa sao cho có thể hiểu được bởi cả người phát triển và người tiêu dùng.
#Phân tích các yêu cầu và định nghĩa: hệ thống dịch vụ, khó khăn và mục tiêu được hình thành bởi sự trợ ý của hệ thống người tiêu dùng. Sau đó các yếu tố này được định nghĩa sao cho có thể hiểu được bởi cả người phát triển và người tiêu dùng.

Phiên bản lúc 12:17, ngày 3 tháng 1 năm 2011

Phát triển phần mềm là việc chuyển nhu cầu của người dùng hoặc mục tiêu tiếp thị thành một sản phẩm phần mềm.[1][2] Phát triển phần mềm đôi khi được hiểu là sự bao gồm các quá trình của kỹ nghệ phần mềm cộng với sự nghiên cứu và các mục tiêu tiếp thị phần mềm để phát triển những sản phẩm phần mềm máy tính.[3] Nó tương phản với tiếp thị phần mềm, vì nó có thể có hoặc không liên quan tới phát triển sản phẩm mới.

Thường thì khó để phân định được giữa kỹ thuật và tiếp thị, cái nào đóng vai trò quan trọng hơn trong việc thành bại của một sản phẩm phần mềm bằng cách đánh giá sự thỏa mãn mong đợi của người dùng. Đó là lý do tại sao việc hiểu rằng cả hai quá trình và/hoặc sự hợp tác hiệu quả giữa cả kỹ thuật và tiếp thị trong toàn bộ quá trình phát triển phần mềm, là rất quan trọng. Sự quan tâm về mặt kỹ thuật lẫn tiếp thị thường được xem xét một cách cân bằng bởi giám đốc dự án.

Vấn đề tiếp thị còn được gọi là phân tích yêu cầu phần mềm.[4] Vì phát triển phần mềm có thể bao gồm việc thỏa hiệp hay vượt ra ngoài yêu cầu của người dùng cuối, nên một dự án phát triển phần mềm phải thực hiện những công việc thường không dính dáng đến kỹ thuật như nghiên cứu thị trường, nguồn nhân lực, quản lý rủi ro, sở hữu trí tuệ, ngân quỹ, quản lý khủng hoảng, v.v... Những công việc này sẽ đóng vai trò là sự phát triển kinh doanh đi kèm với phát triển phần mềm.

Trong cuốn sách "Những tranh cãi phần mềm vĩ đại", Alan M. Davis đã nói trong chương "Requirements" (sự đòi hỏi), phần "The Missing Piece of Software Development" (Những mảnh còn thiếu của Phát triển phần mềm):

Các mô hình phát triển sản phẩm phần mềm

Quá trình phát triển phần mềm là tập hợp các thao tác và các kết quả tương quan để sản xuất ra một sản phẩm phần mềm. Hầu hết các thao tác này được tiến hành bởi các kỹ sư phần mềm. Các công cụ hỗ trợ máy tính về kỹ thuật phần mềm có thể được dùng để giúp trong một số thao tác.

Có 4 thao tác là nền tảng của hầu hết các quá trình phần mềm là:

  1. Đặc tả phần mềm: Các chức năng của phần mềm và điều kiện để nó hoạt động phải được định nghĩa.
  2. Sự phát triển phần mềm: Để phần mềm đạt được đặc tả thì phải có quá trình phát triển này.
  3. Đánh giá phần mềm: Phần mềm phải được đánh giá để chắc chắn rằng nó làm những gì mà khách hàng muốn.
  4. Sự tiến hóa của phần mềm: Phần mềm phải tiến hóa để thỏa mãn sự thay đổi các yêu cầu của khách hàng.

Mô hình thác nước

Mô hình này làm cho ý nghĩa việc sản xuất phần được thấy rõ hơn.

  1. Phân tích các yêu cầu và định nghĩa: hệ thống dịch vụ, khó khăn và mục tiêu được hình thành bởi sự trợ ý của hệ thống người tiêu dùng. Sau đó các yếu tố này được định nghĩa sao cho có thể hiểu được bởi cả người phát triển và người tiêu dùng.
  2. Thiết kế phần mềm và hệ thống: Thiết kế hệ thống các quá trình, các bộ phận và các yêu cầu về cả phần mềm lẫn phần cứng. Hoàn tất hầu như tất cả kiến trúc của các hệ thống này. Thiết kế phần mềm tham gia vào việc biểu thị các chức năng hệ thống phần mềm mà có thể được chuyển dạng thành một hay nhiều chương trình khả thi.
  3. Thực hiện và thử nghiệm các đơn vị: Trong giai đoạn này, thiết kế phần mềm phải được chứng thực như là một tập họp nhiều chương trình hay nhiều đơn vị nhỏ. Thử nghiệm các đơn vị bao gồm xác minh rằng mỗi đơn vị thỏa mãn đặc tả của nó.
  4. Tổng hợp và thử nghiệm toàn bộ: Các đơn vị chương trình riêng lẻ hay các chương trình được tích hợp lại và thử nghiệm như là một hệ thống hoàn tất và chứng tỏ được các yêu cầu của phần mềm được thỏa mãn. Sau khi thử nghiệm phần mềm được cung ứng cho người tiêu dùng.
  5. Sản xuất và bảo trì: Thông thường (nhưng không bắt buộc) đây là pha lâu nhất của chu kỳ sống (của sản phẩm). Phần mềm được cài đặt và được dùng trong thực tế. Bảo trì bao gồm điều chỉnh các lỗi mà chưa được phát hiện trong các giai đọan trước của chu kì sống; nâng cấp sự thực hiện của hệ thống các đơn vị và nâng cao hệ thống dịch vụ cho là các phát hiện vê yêu cầu mới.

Chỗ yếu của mô hình này là nó không linh hoạt. Các bộ phận của đề án chia ra thành những phần riêng của các giai đoạn. Hệ thống phân phối đôi khi không dùng được vì không thỏa mãn được yêu cầu của khách hàng. Mặc dù vậy mô hình này phản ảnh thực tế công nghệ. Như là một hệ quả đây vẫn là mô hình cơ sở cho đa số các hệ thống phát triển phần mềm - phần cứng.

Mô hình phát triển tiến hoá của phần mềm

  • Phân loại sự phát triển tiến hóa
    1. Lập trình thăm dò: đối tượng của quá trình bằng cách làm việc với khách hàng để thăm dò các yêu cầu và phân phối phần mềm dứt diểm. Sự phát triển nên bắt đầu với những phần nào đã được hiểu rõ. Phần mềm sẽ được thêm vào các chức năng mới khi mà nó được đề nghị cho khách hàng (và nhận về các thông tin).
    2. Mẫu thăm dò: đối tượng của phát triển tiến hoá này là nhằm hiểu các yêu cầu của khách hàng và do đó phát triển các định nghĩa yêu cầu tốt hơn cho phần mềm. Các mẫu tập trung trên các thí nghiệm với những phần đòi hỏi nào của khách hàng mà có thể gây sự khó hiểu hay ngộ nhận.
Phát triển phần mềm theo mô hình tiến hoá
  • Phân tích mô hình: Mô hình phát triển tiến hóa này hiệu quả hơn mô hình thác nước. Tuy nhiên, nó vẫn còn các khuyết điểm:
    1. Quá trình thì không nhìn thấy rõ được: Các nhà quản lý cần phân phối thường xuyên để đo lường sự tiến bộ. Nó không kinh tế trong việc làm ra các hồ sơ cho phần mềm.
    2. Phần mềm thường dược cấu trúc nghèo nàn: Sự thay đổi liên tục dễ làm đổ vỡ cấu trúc của phần mềm, tạo ra sự khó khăn và tốn phí.
    3. Thường đòi hỏi những kỹ năng đặc biệt: Hầu hết các hệ thống khả dĩ theo cách này được tiến hành bởi các nhóm nhỏ có kỹ năng cao cũng như các cá nhân phải năng động.
  • Mô hình này thích hợp với:
    1. Phát triển các loại phần mềm tương đối nhỏ
    2. Phát triển các loại phần mềm có đời sống tương đối ngắn
    3. Tiến hành trong các hệ thống lớn hơn ở những chỗ mà không thể biểu thị được các đặc tả chi tiết trong lúc tiến hành. Thí dụ của trường hợp này là các hệ thống thông minh nhân tạo (AI) và các giao diện cho người dùng.

Mô hình xoắn ốc Boehm

Tập tin:MoHinhBoehm.gif
Phát triển phần mềm theo kiểu Boehm

Đây là mô hình phát triển từ mô hình thác nước cho thấy mức độ tổng quát hơn của các pha sản xuất của một sản phẩm. Mô hình được đề nghị bởi Boehm vào năm 1988. Mô hình này có thể chỉ ra các rủi ro có thể hình thành trên căn bản của mô hình quá trình (sản xuất) tổng quát.

Mô hình Boehm có dạng xoắn ốc. Mỗi vòng lặp đại diện cho một pha của quá trình phần mềm. Vòng trong cùng tập trung về tính khả thi, vòng kế lo về định nghĩa các yêu cầu, kế đến là thiết kế, ...

Không có một pha nào được xem là cố định trong vòng xoắn. Mỗi vòng có 4 phần tương ứng với một pha.

  1. Cài đặt đối tượng: Chỉ ra các đối tượng của pha trong đề án. Những khó khăn hay cưỡng bức của quá trình và của sản phẩm được xác định và được lên kế hoạch chi tiết. Xác định các yếu tố rủi ro của đề án. Các phương án thay thế tùy theo các rủi ro này có thể được dự trù.
  2. Lượng định và giảm thiểu rủi ro. Tiến hành phân tích mỗi yếu tố rủi ro đã xác định. Các bước đặt ra để giảm thiểu rủi ro.
  3. Phát triển và đánh giá: Sau khi đánh giá các yếu tố rủi ro, một mô hình phát triển cho hệ thống được chọn.
  4. Lên kế hoạch: Đề án được xem xét và quyết định có nên hay không tiếp tục pha mới trong vòng lặp.

Hình vẽ là một thí dụ đơn giản của mô hình Boehm.

Các quá trình linh hoạt

Là quá trình mà trong đó cấu trúc khởi động sẽ nhỏ nhưng linh động và lớn dần của các đề án phần mềm nhằm tìm ra các khó khăn trước khi nó trở thành vấn đề có thể dẫn tới những hủy hoại. Quá trình này nhấn mạnh sự gọn nhẹ và tập trung hơn là các phương pháp truyền thống. Các quá trình linh hoạt dùng các thông tin phản hồi thay vì dùng các kế hoạch, như là một cơ chế diều khiển chính. Các thông tin phản hồi có được từ các thử nghiệm và các phiên bản phát hành của phần mềm tham gia.

Các quá trình linh hoạt thưòng có hiệu quả hơn các phương pháp cũ, nó dùng ít thời gian lập trình để sản xuất ra nhiều chức năng hơn, chất lượng cao hơn, nhưng nó không cung cấp một khả năng kế hoạch lâu dài.

Một cách ngắn gọn các phuơng pháp này cung ứng hiệu quả cao nhất cho vốn đầu tư, nhưng lại không định rõ hiệu quả gì.

Lập trình cực hạn, gọi tắt là XP, là loại quá trình linh hoạt được biết đến nhiều nhất. Trong XP, các pha được xúc tiến trong các bước cực nhỏ (hay liên tục) nếu so với các quá trình kiểu cũ, gọi là các "toán" xử lý. Bước đầu tiên (với chủ định là không hoàn tất) cho đến các bước có thể chỉ tốn một ngày hay một tuần, thay vì phải tốn nhiều tháng như trong phương pháp thác nước. Đầu tiên, một người viết các thử nghiệm tự động để cung cấp các mục tiêu cụ thể cho sự phát triển. Kế đến là giai đoạn viết mã (bởi một cặp lập trình viên); giai đoạn này hoàn tất khi mà các mã viết qua được tất cả các thử nghiệm và những người lập trình không tìm ra thêm được thử nghiệm cần thiết nào nữa. Thiết kế và kiến trúc được điều chỉnh và nâng cao ngay sau giai đoạn viết mã này bởi người đã viết mã trong giai đoạn trước. Hệ thống chưa hoàn tất nhưng hoạt động được này được khai thác hay được đem ra minh họa cho (một phần) người tiêu dùng mà trong số đó có người trong đội phát triển phần mềm. Thời điểm này những người thực nghiệm lại bắt đầu viết các thử nghiệm cho những phần quan trọng kế tiếp của hệ thống.

Xem thêm

Tham khảo

  1. ^ Birrell, N.D. (1985). A Practical Handbook for Software Development. Cambridge University Press. ISBN 0-521-25462-0.
  2. ^ DRM Associates (2002). “New Product Development Glossary”. Truy cập ngày 29 tháng 10 năm 2006.
  3. ^ Jim McCarthy. "Dynamics of Software Development" (August 1, 1995), pp:10-30
  4. ^ Won Kim: “On Assuring Software Quality and Curbing Software Development Cost”, in Journal of Object Technology, vol. 5, no. 6, July-August 2006, pp. 35-42 http://www.jot.fm/issues/issue_2006_07/column5
  5. ^ Alan M. Davis. Great Software Debates (October 8, 2004), pp:125-128 Wiley-IEEE Computer Society Press


Đọc thêm

  • Luke Hohmann. "Beyond Software Architecture: Creating and Sustaining Winning Solutions" (January 30, 2003)
  • Jim McCarthy. "Dynamics of Software Development" (August 1, 1995), pp:10-30
  • Robert K. Wysocki. "Effective Software Project Management" (March 27, 2006), pp:72-75
  • PhD, CISM, John Rittinghouse. "Managing Software Deliverables: A Software Development Management Methodology" (November 12, 2003)
  • Dan Conde. "Software Product Management: Managing Software Development from Idea to Product to Marketing to Sales" (September 1, 2002), pp:24-29
  • Edward Hasted. "Software That Sells : A Practical Guide to Developing and Marketing Your Software Project" (June 10, 2005)
  • A. M. Davis, "Just enough requirements management: where software development meets marketing" (May 30, 2005)
  • John W. Horch, "Two Orientations On How To Work With Objects," IEEE Software, vol. 12, no. 2, pp. 117-118, Mar., 1995.
  • Karl E. Wiegers, "More About Software Requirements: Thorny Issues and Practical Advice" (December 20, 2005)