CHƯƠNG I: NỀN TẢNG LÝ THUYẾT 1. Quy trình phát triển phần mềm 1. Khái niệm Quy trình phát triển phần mềm là tập các giai đoạn và các kết quả tương quan để sản xuất ra một sản phẩm phần mềm. Quy trình là một trong những yếu tố cực kỳ quan trọng đem lại sự thành công cho các nhà sản xuất phần mềm, nó giúp cho mọi thành viên trong dự án từ người cũ đến người mới, trong hay ngoài công ty đều có thể xử lý đồng bộ công việc tương ứng vị trí của mình thông qua cách thức chung của công ty, hay ít nhất ở cấp độ dự án.
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ó 4 giai đoạn là nền tảng của hầu hết các quy trình phần mềm là: Đặ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. Phát triển phần mềm: Để phần mềm đạt được đặc tả thì phải có quy trình phát triển này. Đánh giá thẩm định phần mềm: Phần mềm phải được đánh giá để chắc chắn rằng nó thực hiện đúng những gì mà khách hàng mong muốn.
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ột số mô hình phát triển Có nhiều mô hình phát triển phần mềm: mô hình thác nước, mô hình chữ V, mô hình tiến hóa, mô hình mẫu, mô hình xoắn ốc, mô hình CMM/CMMI. Mỗi mô hình phát triển có những đặc điểm và ưu nhược điểm riêng, nó phù hợp với từng loại dự án. Nên tùy theo dự án mà người quản lý dự án chọn cho mình mô hình phát triển riêng, phù hợp với đặc điểm của dự án.
Đặc điểm và ưu nhược điểm của mỗi mô hình phát triển được thể hiện như sau: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 9 Mô hình thác nước Xác định yêu cầu hệ thống Kiểm chứng Xác địnhYêu yêu cầu cầu phần mềm cấp Kiểm chứng phát Thiết kế căn bản Kiểm chứng Thiết kế chi tiết Kiểm thử Lập trình Kiểm chứng Kiểm thử Kiểm chứng Vận hành, bảo trì Hình 1.1: 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 mềm đượ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. Thiết kế phần mềm và hệ thống: Thiết kế hệ thống các quy 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. 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ó.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail. 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. 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. Mô hình này, yêu cầu tiếp cận một cách truyền thống, tuần tự và chặt chẽ đối với việc phát triển phần mềm. Điểm 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. Với mô hình này quá trình lặp lại là không tránh khỏi, nếu không quay lại thì dễ gặp bất trắc mà lặp lại thì khó quản lý tiến độ dẫn đến không đáp ứng kịp thời yêu cầu của khách hàng. Không phù hợp với hoàn cảnh phần mềm luôn thay đổi, thực hiện triển khai và phát triển đồng thời. Thời gian thực hiện dài và khách hàng phải đợi đến giai đoạn cuối mới có chương trình làm việc được.
Nếu đến giai đoạn cuối mới phát hiện lỗi thì có thể là một thảm họa. 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ả và đâ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 chữ V Mô hình chữ V gần giống với mô hình thác nước, pha sau thực hiện khi pha trước đã thực hiện xong.
Thực hiện test kết hợp với các pha trước nó. Ưu điểm: có thể thực hiện một số việc song song, đạt được phần mềm chất lượng, các pha tương thích và hỗ trợ nhau, các hoạt động kiểm thử được chú trọng. Nhược điểm: các yêu cầu phần mềm phải được đặc tả rõ ràng, pha trước thực hiện xong pha sau mới bắt đầu và người sử dụng không có cơ hội tham gia vào quá trình phát triển. Mô hình làm bản mẫu Tạo ra một mô hình như thực tế cho phần mềm cần xây dựng.
Thực hiện thiết kế nhanh các bản mẫu rồi làm mịn dần và thực hiện trình diễn để người dùng đánh giá rồi tiếp tục làm mịn các yêu cầu. Là cách tiếp cận thực tế nhất, thích hợp với các hệ thống vừa và nhỏ. Nó được sử dụng hiệu quả khi kết hợp với các mô hình khác. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11 Mô hình xoắn ốc (Boehm-1988) Hình1.2: mô hình xoắn ốc Mô hình xoắn ốc dựa trên ý tưởng tối thiểu hóa rủi ro, bằng việc phân tích yếu tố rủi ro ở mỗi bước lặp và sử dụng phương pháp làm bản mẫu, hoàn thiện và phát triển hệ thống, duyệt lại và tiếp tục.
Với phương pháp này thì các phiên bản được hoàn thiện dần và luôn có sự tham gia đánh giá của khách hàng. Mô hình này thích hợp để phát triển các hệ thống phần mềm với quy mô lớn. Trong mô hình này không có sự phân biệt rõ ràng giữa hoạt động bảo trì và phát triển. Mỗi vòng lặp đại diện cho một pha của quy trình phát triển phần mềm.
Vòng trong cùng tập trung về tính khả thi, vòng kế tiếp lo về định nghĩa các yêu cầu, kế đến là thiết kế v. Trong mô hình này không có một pha nào được xem là cố định. Tuy nhiên, việc thay đổi một cách linh hoạt đòi hỏi nhà phát triển và khách hàng phải có sự liên hệ một cách chặt chẽ. Mô hình phân tầng (layer) Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau.
Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều tầng, mỗi tầng sẽ thực hiện một chức năng nào đó, trong đó mô hình ba tầng là phổ biến nhất. Mô hình ba tầng này là gì? Là tầng trình diễn (Presentation), tầng logic (Business Logic), và tầng CSDL (Data Access). Các tầng này sẽ giao tiếp với nhau thông qua các dịch vụ (services) mà mỗi tầng cung cấp để tạo nên ứng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 dụng, tầng này cũng không cần biết bên trong tầng kia làm gì mà chỉ cần biết tầng kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi. Tầng trình diễn (Presentation Layer) Tầng này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng.
Tầng này sẽ sử dụng các dịch vụ do tầng Business Logic cung cấp.NET thì bạn có thể dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực tầng này. Trong tầng này có 2 thành phần chính là User Interface Components và User Interface - UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối.NET thì những thành phần này có thể là các TextBox, các Button, DataGrid… - UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard… Business Logic Layer Tầng này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do tầng Data Access cung cấp, và cung cấp các dịch vụ cho tầng Presentation. Tầng này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình (ví dụ như sử dụng dịch vụ của các cổng thanh toán trực tuyến như VeriSign, Paypal…).
Data Access Layer Tầng này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường tầng này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle, … để thực hiện nhiệm vụ của mình. Trong tầng này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents). Lập trình hướng đối tượng Lập trình hướng đối tượng (Object-oriented programming - OOP), là kỹ thuật lập trình hỗ trợ công nghệ đối tượng.
OOP được xem là giúp tăng năng suất, đơn giản LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn. Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các phương pháp trước đó. Lập trình hướng đối tượng dựa trên ba đặc trưng cơ bản là bao gói/che dấu thông tin, kế thừa và đa hình. Bao gói/che dấu thông tin là đặc trưng cơ bản nhất của OOP.