Đề cương ôn tập Công Nghệ Phần Mềm CNTT-K7 QUI 1. Khái niệm công nghệ phần mềm Click để xem Phần mềm là các chương trình máy tính và những tài liệu liên quan đến nó như: các yêu cầu, mô hình thiết kế, tài liệu hướng dẫn sử dụng… Do đó, chúng ta thấy rằng đặc điểm của phần mềm là trừu tượng và vô hình. Công nghệ phần mềm là những quy tắc công nghệ (engineering discipline) có liên quan đến tất cả các khía cạnh của quá trình sản xuất phần mềm. 2. Phân loại phần mềm Click để xem Lớp Phần mềm Hệ thống: Phần mềm quản trị hệ thống: Các Hệ thống điều hành (HĐH) Môi trường điều hành Các Hệ thống quản trị CSDL Giám sát viễn thông Phần mềm hỗ trợ hệ thống: Tiện ích (Utilities) hệ thống Giám sát hiệu năng Giám sát an ninh Các chương trình phát triển hệ thống: Chương trình dịch cho các ngôn ngữ lập trình Các môi trường lập trình Các gói chương trình về kỹ nghệ phần mềm có máy tính hỗ trợ (CASE) Lớp Phần mềm ứng dụng: Các chương trình ứng dụng chung (hay các phần mềm phổ dụng): Xử lý văn bản Bảng tính điện tử Phần mềm quản trị CSDL (loại nhỏ) Phần mềm viễn thông Thư điện tử Đồ họa biểu diễn Đa phương tiện Quản trị thông tin cá nhân Công cụ cho Nhóm làm việc Các chương trình ứng dụng đặc thù (hay các phần mềm chuyên dụng): Kế toán, sổ cái Tiếp thị, bán hàng Chế tạo, sản xuất Tài chính, ngân sách Quản trị quan hệ khách hàng Quản lý chuỗi cung ứng Hoạch đinh nguồn lực xí nghiệp Quản trị nguồn nhân lực, … 3. Các giai đoạn phát triển phần mềm Click để xem Gồm 4 giai đoạn: Giai đoạn 1: 1950 - 1960 + Chương trình nhỏ, tính toán chuyên dụng + Xử lí số, theo lô + Ngôn ngữ: mã máy hợp ngữ đặc thù cho từng máy + Tiêu chí đánh giá - Tính nhanh - Giải được bài toán lớn (dùng bộ nhớ hiệu quả) Công nghệ: bóng điện tử (tính chậm, bộ nhớ nhỏ) Giai đoạn 2: Giữa thập kỷ 70 + Là sản phẩm: Đa nhiệm, đa người sử dụng + Xử lý số, ký tự, theo lô & thời gian thực + Xuất hiện lưu trũ trực tuyến (CSDL) + Ngôn ngữ: có cấu trúc: PL1, Algol 60, Fortran, COBOL + Tiêu chí đánh giá: + Tính nhanh + Giải được bài toán lớn + Nhiều người dùng Công nghệ: bán dẫn (tính nhanh hơn, bộ nhớ khá), CSDL Yêu cầu trì (sửa lỗi, thích nghi) Giai đoạn 3: -> 1990 + Phần mềm các nhân + mạng, hệ lớn, chia sẻ được + Ra đời phần mềm nhúng + Xử lý số, ký tự, âm thanh, hình ảnh; theo lô, thời gian thực, phân tán, song song + Truy nhận dữ liệu phát triển, cả từ xa + Ngôn ngữ: bậc cao, hướng đối tượng, logic + Tiêu chí: - Tiện dụng - tin cậy - Dễ bảo trì Công nghệ: Mạch tích hợp lớn, vi mạch, các cấu hình mạng, internet, CSDL quan hệ Giai đoạn 4: Từ 1990 đến nay + Phần mềm lớn, tinh vi ,tin cậy, hướng người dùng + Hệ chuyên gia, trí tuệ nhân tạo, phần mềm nhúng, webservice sử dụng rộng rãi, internet mở rộng + CSDL hướng đối tượng, kho dữ liệu phát triển + Ngôn ngữ: hướng đối tượng, thế hệ thứ 4, visual + Tiêu chí đánh giá: - Tiện dụng, tinh vi - Tin cậy - Dễ bảo trì Công nghệ: Vi mạch siêu tích hợp, internet, mạng không dây tốc độ cao, hướng đối tượng, web 4. Các mô hình phát triển, các bước cơ bản trong xây dựng phần mềm Click để xem Mô hình thác nước: Các pha của mô hình thác nước bao gồm: + Phân tích và xác định các yêu cầu + Thiết kế hệ thống và phần mềm + Cài đặt và kiểm thử đơn vị + Tích hợp và kiểm thử hệ thống + Vận hành và bảo trì. Trong mô hình thác nước, năm pha trên phải được thực hiện một cách tuần tự; kết thúc pha trước, rồi mới được thực hiện pha tiếp theo. Do đó, nhược điểm chính của mô hình thác nước là rất khó khăn trong việc thay đổi các pha đã được thực hiện. Mô hình xây dựng tiến triển: Mô hình xây dựng tiến triển dựa trên ý tưởng xây dựng một mẫu thử ban đầu và đưa cho người sử dụng xem xét; sau đó, tinh chỉnh mẫu thử qua nhiều phiên bản cho đến khi thoả mãn yêu cầu của người sử dụng thì dừng lại. Có hai phương pháp để thực hiện mô hình này: Phát triển thăm dò: Mục đích : để làm việc với khách hàng và để đưa ra hệ thống cuối cùng từ những đặc tả sơ bộ ban đầu. Phương pháp này thường bắt đầu thực hiện với những yêu cầu được tìm hiểu rõ ràng và sau đó, bổ sung những đặc điểm mới được đề xuất bởi khách hàng. Cuối cùng, khi các yêu cầu của người sử dụng được thoả mãn thì cũng là lúc chúng ta đã xây dựng xong hệ thống. Loại bỏ mẫu thử: mục đích là để tìm hiểu các yêu cầu của hệ thống. Phương pháp này thường bắt đầu với những yêu cầu không rõ ràng và ít thông tin. Các mẫu thử sẽ được xây dựng và chuyển giao tới cho người sử dụng. Từ đó, ta có thể phân loại những yêu cầu nào là thực sự cần thiết và lúc này mẫu thử không còn cần thiết nữa. Như vậy, mẫu thử chỉ có tác dụng để làm sáng tỏ yêu cầu của người sử dụng. Tuy nhiên, nhược điểm của mô hình xây dựng tiến triển là: thiếu tầm nhìn của cả quy trình; các hệ thống thường hướng cấu trúc nghèo nàn; yêu cầu các kỹ năng đặc biệt. Mô hình xây dựng tiến triển chỉ nên áp dụng với những hệ thống có tương tác ở mức độ nhỏ hoặc vừa; trên một phần của những hệ thống lớn; hoặc những hệ thống có thời gian chu kỳ tồn tại ngắn. CNPM dựa thành phần: Mô hình này dựa trên kỹ thuật tái sử dụng một cách có hệ thống; trong đó hệ thống được tích hợp từ nhiều thành phần đang tồn tại hoặc các thành phần thương mại COTS (Commercial-off-the-shelf). Các trạng thái chính của quy trình bao gồm: Phân tích thành phần sẵn có Điều chỉnh yêu cầu Thiết kế hệ thống với kỹ thuật tái sử dụng Mô hình phát triển lặp lại, tăng thêm: Mô hình này được đề xuất dựa trên ý tưởng thay vì phải xây dựng và chuyển giao hệ thống một lần thì sẽ được chia thành nhiều vòng, tăng dần. Mỗi vòng là một phần kết quả của một chức năng được yêu cầu. Các yêu cầu của người sử dụng được đánh thứ tự ưu tiên. Yêu cầu nào có thứ tự ưu tiên càng cao thì càng ở trong những vòng phát triển sớm hơn. Từ đó, chúng ta có thể thấy rõ một số ưu điểm của mô hình phát triển tăng vòng: + Sau mỗi lần tăng vòng thì có thể chuyển giao kết quả thực hiện được cho khách hành nên các chức năng của hệ thống có thể nhìn thấy sớm hơn. + Các vòng trước đóng vai trò là mẫu thử để giúp tìm hiểu thêm các yêu cầu ở những vòng tiếp theo. + Những chức năng của hệ thống có thứ tự ưu tiên càng cao thì sẽ được kiểm thử càng kỹ. Mô hình xoắn ốc: Trong mô hình xoắn ốc, quy trình phát triển phần mềm được biểu diễn như một vòng xoắn ốc. Các pha trong quy trình phát triển xoắn ốc bao gồm: + Thiết lập mục tiêu: xác định mục tiêu cho từng pha của dự án. + Đánh giá và giảm thiểu rủi ro: rủi ro được đánh giá và thực hiện các hành động để giảm thiểu rủi ro. + Phát triển và đánh giá: sau khi đánh giá rủi ro, một mô hình xây dựng hệ thống sẽ được lựa chọn từ những mô hình chung. + Lập kế hoạch: đánh giá dự án và pha tiếp theo của mô hình xoắn ốc sẽ được lập kế hoạch. 5. Khái niệm yêu cầu phần mềm, phân loại, các kỹ thuật đặc tả yêu cầu phần mềm Click để xem Định nghĩa Yêu cầu cho 1 phần mềm cụ thể là tổng hợp những yêu cầu từ nhiều người khác nhau về tổ chức, mức độ chuyên môn và mức độ tham gia, tương tác với phần mềm trong môi trường hoạt động của nó. Có thể kiểm chứng một cách riêng rẽ ở mức chức năng(yêu cầu chức năng) hoặc mức hệ thống(yêu cầu phi chức năng) Cung cấp các chỉ số đánh giá độ ưu tiên về các mặt khi cân nhắc về nguồn tài nguyên. Cung cấp các giá trị trạng thái để theo dõi tiến độ của dự án. Phân loại theo sản phẩm và tiến trình Yêu cầu sản phẩm: là những đòi hỏi hay ràng buộc mà phần mềm phải thực hiện. Yêu cầu tiến trình: là những ràng buộc liên quan đến việc phát triển phần mềm đó(quy trình, đối tác kiểm thử, phân tích, kĩ thuật sử dụng,...). Ví dụ: Trong Project 1: Yêu cầu sản phẩm là xây dựng trang web Trường học điện tử với các tính năng như Giáo viên quản lý câu hỏi, đề thi; Học sinh tham gia làm bài; Admin duyệt câu hỏi của giáo viên trước khi đăng,... Yêu cầu tiến trình: Phải thực hiện theo mô hình Agile. Sản phẩm cuối cùng bao gồm cả sản phẩm và backlog cho từng Sprint. Theo chức năng Yêu cầu chức năng: đặc tả các chức năng mà phần mềm phải thực hiện. Yêu cầu phi chức năng: là các ràng buộc về giải pháp và chất lượng(hiệu năng, việc bảo trì, độ an toàn, bảo mật,...). Yêu cầu đặc tả các thuộc tính nổi bật: là các đặc tả cho các thuộc tính phụ thuộc vào sự vận hành,… đặc biệt là kiến trúc hệ thống. Các thuộc tính này không thể xác định được cho từng thành phần đơn lẻ. Theo tính kiểm định Mơ hồ, không thể kiểm định Rõ ràng, định lượng và có thể kiểm định được. Theo phạm vi đặc tả Yêu cầu hệ thống: đặc tả các cấu hình, cơ sở hạ tầng, phần cứng, phần mềm, con người, kỹ thuật,… của toàn bộ hệ thống. Yêu cầu phần mềm: đặc tả các chức năng, giao diện,… của các cấu phần phần mềm. Các kỹ thuật đặc tả yêu cầu phần mềm Đặc tả yêu cầu phần mềm tạo cơ sở cho việc thỏa thuận giữa khách hàng và nhà thầu hoặc các nhà cung cấp về những gì sản phẩm phần mềm có làm việc đúng như mong muốn không. Nó cho phép một đánh giá nghiêm ngặt các yêu cầu trước khi có thể bắt đầu vào việc thiết kế và làm giảm việc thiết kế lại. Nó cũng cần cung cấp một cơ sở thực tế để ước tính giá thành sản phẩm, rủi ro, và lịch trình. Các tổ chức cũng có thể sử dụng một tài đặc tả yêu cầu phần mềm làm cơ sở để phát triển kế hoạch kiểm tra và xác minh. Đặc tả yêu cầu phần mềm cung cấp một cơ sở thông báo cho chuyển một sản phẩm phần mềm cho người dùng mới hoặc các nền tảng phần mềm. Cuối cùng, nó có thể cung cấp một cơ sở để nâng cao phần mềm. Yêu cầu phần mềm thường được viết bằng ngôn ngữ tự nhiên, nhưng đặc tả yêu cầu phần mềm có thể được bổ sung bằng các mô tả chính thức hoặc gần chính thức. Lựa chọn các ký hiệu thích hợp và các khía cạnh của kiến trúc phần mềm cụ thể được mô tả chính xác hơn so với ngôn ngữ tự nhiên. Các nguyên tắc chung là ký hiệu nên được sử dụng cho phép các yêu cầu để được mô tả là chính xác càng tốt. Điều này đặc biệt quan trọng đối với các phần mềm an toàn cao và một số loại phần mềm đáng tin cậy khác. Tuy nhiên, sự lựa chọn của các kí hiệu thường được hạn chế bởi việc đào tạo, kỹ năng, và sở thích của các tác giả và độc giả. Một số chỉ tiêu chất lượng đã được phát triển có thể được sử dụng liên quan đến chất lượng của đặc tả yêu cầu phần mềm như chi phí, hài lòng, hiệu quả, đúng tiến độ, và tái sản xuất. Chỉ tiêu chất lượng cho đặc tả yêu cầu của cá nhân bao gồm mệnh lệnh, chỉ thị, các pha yếu, tùy chọn, và sự duy trì. Các chỉ số cho các tài liệu đặc tả yêu cầu phần mềm bao gồm kích thức, dễ đọc, đặc tả kỹ thuật, chiều sâu và cấu trúc văn bản. u đặc tả yêu cầu phần mềm bao gồm kích thức, dễ đọc, đặc tả kỹ thuật, chiều sâu và cấu trúc văn bản. 6. Kỹ thuật xác định và thu thập yêu cầu Click để xem Quá trình thực hiện xác định yêu cầu gồm 2 bước chính sau: B1: khảo sát hiện trạng, kết quả nhận được là các báo cáo về hiện trạng. B2: Lập danh sách các yêu cầu, kết quả nhận được là danh sách các yêu cầu sẽ được thực hiện trên máy tính. Đối tượng tham gia gồm 2 nhóm người: chuyên viên tin học, nhà chuyên môn. a. khảo sát hiện trạng - Quan sát - Phỏng vấn trực tiếp - Thu thập thông tin, tài liệu. Quy trình thực hiện - Tìm hiểu tổng quan về thế giới thực - Tìm hiểu cơ cấu tổ chức - Tìm hiểu hiện trạng nghiệp vụ - Nghiệp vụ lưu trữ, nghiệp vụ tra cứu, nghiệp vụ tính toán, nghiệp vụ tổng hợp, thống kê. b. Lập các danh sách các yêu cầu Tiến hành các bước sau: - Xác định yêu cầu chức năng nghiệp vụ - Xác định yêu cầu chức năng hệ thống - Xác định yêu cầu phi chức năng. 7. Các mô hình phát triển hệ thống Click để xem Mô hình ngữ cảnh Trong quá trình phát hiện và phân tích yêu cầu, chúng ta nên xác định phạm vi hệ thống, tức là phân biệt cái gì là hệ thống và cái gì là môi trường của hệ thống. Điều này sẽ giúp giảm chi phí và thời gian phân tích. Khi đã xác định phạm vi của hệ thống, hoạt động tiếp theo của quy trình phân tích là định nghĩa ngữ cảnh của hệ thống và sự phụ thuộc giữa hệ thống với môi trường của nó. Thông thường, mô hình kiến trúc đơn giản của hệ thống sẽ được tạo ra trong bước này. Ví dụ: mô hình ngữ cảnh của hệ thống ATM Mô hình kiến trúc mô tả môi trường của hệ thống,nhưng không chỉ ra quan hệ giữa các hệ thống khác nhau trong một môi trường. Vì vậy, người ta thường sử dụng thêm mô hình tiến trình hoặc mô hình luồng dữ liệu để bổ trợ cho nó. Mô hình tiến trình biểu diễn tất cả các tiến trình được hệ thống hỗ trợ. Mô hình luồng dữ liệu có thể được sử dụng để biểu diễn các tiến trình và luồng thông tin đi từ tiến trình này tới tiến trình khác. Mô hình ứng xử Mô hình ứng xử được sử dụng để mô tả toàn bộ ứng xử của hệ thống. Có hai kiểu mô hình ứng xử là: Mô hình luồng dữ liệu: biểu diễn cách xử lý dữ liệu trong hệ thống Mô hình máy trạng thái: biểu diễn cách đáp ứng của hệ thống với các sự kiện xảy ra. Hai mô hình này biểu diễn những góc nhìn khác nhau, nhưng cả hai đều cần thiết để mô tả ứng xử của hệ thống. Mô hình luồng dữ liệu Mô hình luồng dữ liệu được sử dụng để mô hình hoá quy trình xử lý dữ liệu của hệ thống. Mô hình này sẽ biểu diễn các bước mà luồng dữ liệu phải trải qua trong hệ thống từ điểm đầu tới điểm cuối. Mô hình luồng dữ liệu mô hình hoá hệ thống từ góc độ một chức năng. Việc tìm vết và tư liệu hoá quan hệ giữa dữ liệu với một quy trình rất có ích đối với việc tìm hiểu toàn bộ hệ thống. Mô hình luồng dữ liệu là phần cốt lõi của rất nhiều phương pháp phân tích. Nó chứa các ký pháp rất dễ hiểu đối với khách hàng. Mô hình luồng dữ liệu (tt1) Ví dụ: Mô hình luồng dữ liệu của chức năng xử lý đơn Mô hình máy trạng thái Mô hình máy trạng thái mô tả đáp ứng của hệ thống với các sự kiện bên trong và bên ngoài của nó. Mô hình máy trạng thái biểu diễn các trạng thái của hệ thống và các sự kiện gây ra sự dịch chuyển trạng thái. Mô hình máy trạng thái biểu diễn các trạng thái của hệ thống là các nút và sự kiện là các cung nối giữa các nút đó. Khi có một sự kiện xảy ra, hệ thống sẽ dịch chuyển từ trạng thái này sang trạng thái khác. Biểu đồ trạng thái là một biểu đồ trong UML và được sử dụng để biểu diễn mô hình máy trạng thái. Biểu đồ trạng thái cho phép phân tích một mô hình thành nhiều mô hình con và mô tả ngắn gọn về các hành động cần thực hiện tại mỗi trạng thái. Ta có thể vẽ các bảng để mô tả mối quan hệ giữa trạng thái và tác nhân kích hoạt. Mô hình dữ liệu Giới thiệu: Mô hình dữ liệu được sử dụng để mô tả cấu trúc logic của dữ liệu được xử lý bởi hệ thống. Thông thường, chúng ta hay sử dụng mô hình thực thể quan hệ thuộc tính (ERA) thiết lập các thực thể của hệ thống, quan hệ giữa các thực thể và thuộc tính của các thực thể. Mô hình này được sử dụng trong thiết kế CSDL và thường được cài đặt trong các CSDL quan hệ. Giới thiệu : Ví dụ mô hình dữ liệu của LIBSYS Giới thiệu : Tuy nhiên, mô hình dữ liệu thường không chi tiết. Cho nên, chúng ta có thể sử dụng từ điển dữ liệu làm công cụ bổ trợ. Từ điển dữ liệu là danh sách tất cả các tên gọi được sử dụng trong các mô hình hệ thống. Đó có thể là các thực thể, quan hệ và các thuộc tính … Ưu điểm của từ điển dữ liệu là: hỗ trợ quản lý tên và tránh trùng lặp tên, lưu trữ kiến thức một cách có tổ chức kết nối pha phân tích, thiết kế và cài đặt. Giới thiệu : Ví dụ: từ điển dữ liệu của LIBSYS Mô hình đối tượng Giới thiệu: Sử dụng mô hình ứng xử hay mô hình dữ liệu thường rất khó mô tả các vấn đề có liên quan đến thế giới thực. Mô hình đối tượng đã giải quyết được vấn đề này bằng cách kết hợp ứng xử và dữ liệu thành đối tượng. Mô hình đối tượng được sử dụng để biểu diễn cả dữ liệu và quy trình xử lý của hệ thống. Nó mô tả hệ thống dựa theo thuật ngữ các lớp đối tượng và các quan hệ của nó. Một lớp đối tượng là sự trừu tượng hoá trên một tập các đối tượng có thuộc tính và phương thức chung. Mô hình đối tượng phản ánh các thực thể trong thế giới thực được vận dụng trong hệ thống. Nếu ta càng có nhiều thực thể trừu tượng thì việc mô hình hoá càng khó khăn. Giới thiệu : Phát hiện các lớp đối tượng là một quy trình rất khó khăn khi tìm hiểu sâu về lĩnh vực của ứng dụng. Các lớp đối tượng thường phản ảnh các thực thể liên quan tới miền ứng dụng của hệ thống. Các mô hình đối tượng bao gồm: mô hình thừa kế, mô hình kết hợp và mô hình ứng xử. Trong phần tiếp theo, chúng ta sẽ tìm hiểu từng loại mô hình này. Mô hình thừa kế Mô hình thừa kế tổ chức các lớp đối tượng theo một cấu trúc phân cấp. Các lớp ở đỉnh của cấu trúc phân cấp phản ánh những đặc trưng chung của tất cả các lớp. Các lớp đối tượng thừa kế những thuộc tính và phương thức của các lớp cha của nó nó có thể bổ sung những đặc điểm của riêng nó. Thiết kế lớp phân cấp là một quy trình khá phức tạp, ta nên loại bỏ sự trùng lặp giữa các nhánh khác nhau. Mô hình thừa kế Ví dụ: cấu trúc phân cấp của lớp Library trong LIBSYS Mô hình thừa kế: Ví dụ :cấu trúc phân cấp của lớp User trong LIBSYS Mô hình thừa kế Cấu trúc đa thừa kế: lớp đối tượng có thể thừa kế từ một hoặc nhiều lớp cha. Tuy nhiên, điều này có thể dẫn tới sự xung đột về ngữ nghĩa khi các thuộc tính/phương thức trùng tên ở các lớp cha khác nhau có ngữ nghĩa khác nhau. Mô hình thừa kế Ví dụ: lớp Talking book thừa kế từ hai lớp Book và Voice recording. Mô hình kết hợp Mô hình kết hợp biểu diễn cách cấu tạo của một lớp từ các lớp khác. Mô hình kết hợp tương tự như quan hệ hợp thành (part-of). Ví dụ: Mô hình kết hợp Đối tượng ô tô được tạo thành từ nhiều đối tượng khác như: cửa, bánh xe ... Mô hình ứng xử Mô hình ứng xử mô tả tương tác giữa các đối tượng nhằm tạo ra một số ứng xử cụ thể của hệ thống mà đã được xác định như là một ca sử dụng. Biểu đồ trình tự hoặc biểu đồ cộng tác trong UML được sử dụng để mô hình hoá tương tác giữa các đối tượng. Ví dụ: Mô tả ca sử dụng Rút tiền của hệ thống ATM. Phương pháp hướng cấu trúc Ngày nay, phương pháp hướng cấu trúc rất ít khi được sử dụng do không còn phù hợp với các hệ thống lớn. Tuy nhiên, trong giáo trình này, chúng tôi vẫn trình bày phần này để học viên có cái nhìn mang tính tổng quan về vấn đề này. Các phương pháp hướng cấu trúc đều cung cấp framework để mô hình hoá hệ thống một cách chi tiết. Chúng thường có một tập hợp các mô hình đã được định nghĩa trước, quy trình để đưa ra các mô hình đó và các quy tắc, hướng dẫn có thể áp dụng cho các mô hình. Tuy nhiên, các phương pháp hướng cấu trúc thường có một số nhược điểm sau: Không mô hình hoá được các yêu cầu hệ thống phi chức năng Không chứa những thông tin để xác định liệu một phương thức có thích hợp với một vấn đề đưa ra hay không. Tạo ra quá nhiều tài liệu Mô hình hoá hệ thống quá chi tiết và khó hiểu đối với người sử dụng. CASE workbenches là tập hợp các công cụ được thiết kế để hỗ trợ các quy trình xây dựng hệ thống phần mềm như phân tích, thiết kế và kiểm thử. CASE tools hỗ trợ mô hình hoá hệ thống là một công cụ quan trọng của phương pháp hướng cấu trúc. Một số CASE tool thường được sử dụng: Soạn thảo biểu đồ Công cụ phân tích mô hình và kiểm tra Ngôn ngữ truy vấn Từ điển dữ liệu Công cụ tạo và định nghĩa báo cáo Công cụ định nghĩa form Bộ dịch Công cụ tạo mã lệnh tự động 8. Thiết kế phần mềm (Khái niệm, vai trò, nguyên tắc thiết kế) Click để xem Khái Niệm thiết kế có thể được xem như là một hình thức giải quyết vấn đề. Thiết kế là một quá trình áp dụng nhiều kỹ thuật và các nguyên lý để tạo ra mô hình của một thiết bị, một tiến trình hay một hệ thống đủ chi tiết mà theo đó có thể chế tạo ra sản phẩm vật lý tương ứng với nó. Mục tiêu thiết kế là để tạo ra một mô hình biểu diễn của một thực thể mà sau này sẽ được xây dựng. Vai Trò Là cách duy nhất để chuyển hóa chính xác yêu cầu của KH thành mô hình TKHT phần mềm cuối cùng làm cơ sở cho việc triển khai chương trình phần mềm. Là tài liệu cung cấp đầy đủ các thông tin cần thiết cho để bảo trì HT. Nếu không có TK thì hệ thống không tin cậy Gây nguy cơ thất bại. Thiết kế tốt là chìa khóa cho PM hữu hiệu. Nguyên Tắc Nguyên tắc là “một giả định, giáo lý hoặc luật căn bản và toàn diện”. Nguyên tắc thiết kế phần mềm là quan niệm chính cung cấp kiến thức cơ bản cho khái niệm và hướng tiếp cận thiết kế phần mềm khác nhau. Nguyên tắc thiết kế phần mềm bao gồm: trừu tượng hóa (abstraction); ghép nối và liên kết (coupling and conhesion); phân rã và modul hóa (decomposition and modularization); đóng gói/ẩn thông tin (encapsulation/information hiding); tách giao diện và thực hiện (separation of interface and implementation); đầy đủ, toàn vẹn và nguyên thủy (sufficiency, completeness, and primitiveness); và tách mối quan tâm (separation of cencerns) Abstraction: là một cách nhìn của một đối tượng mà tập trung vào thông tin liên quan để cụ thể hóa mục đích và tránh bỏ xót thông tin”. Trong bối cảnh của thiết kế phần mềm, 2 cơ chế trừu tượng hóa chìa khóa là tham số hóa và cụ thể hóa. Trừu tượng bởi tham số hóa trừu tượng đến từ biểu diễn dữ liệu chi tiết bởi biểu diễn dữ liệu như tên những tham số. Trừu tượng hóa bởi cụ thể hóa dẫn đến 3 loại trừu tượng: trừu tượng thủ tục, trừu tượng dữ liệu và trừu tượng điều khiển (trừu tượng tương tác lẫn nhau) Trừu tượng thủ tục (trừu tượng hàm) cung cấp cơ chế để trừu tượng những thủ tục dễ định nghĩa hoặc những thao tác thành những thực thể. Trưu tượng thủ tục đã được áp dụng rộng rãi và các ngôn ngữ lập trình hầu như tất cả đều cung cấp hỗ trợ khái niệm này (ví dụ pascal, java,...) Trừu tượng dữ liệu: đây là nguyên tắc chính trong hướng đối tượng. Trong kiểu trừu tượng này, thay vì chỉ tập trung vào thao tác, chúng ta tập trung và dữ liệu đầu tiên và sau đó những thao tác tác động lên dữ liệu. Một ví dụ đơn giản là queue data và những thao tác liên quan như add() and delete(). Trong trừu tượng hóa thủ tục, thao tác add và delete chỉ là riêng biệt không có quan hệ với dữ liệu. Điểm mạnh của trừu tượng hóa dữ liệu so với trừu tượng hóa thủ tục là dữ liệu và các thao tác liên quan được đưa ra vì vậy rất dễ để sửa code khi dữ liệu thay đổi. Trừu tượng điều khiển liên quan để sử dụng các chương trình con và liên quan đến luồng điều khiển. Coupling and Conhesion: Ghép nối là một độ đo của độ phụ thuộc lẫn nhau giữa các module trong chương trình máy tính, trong khi đó liên kết là độ đo độ mạnh của mối liên kết giữa các phần tử trong một module. Phân rã hóa và module hóa: Phân rã hóa và modul hóa nghĩa là phần mềm lớn được chia thành một số thành phần định danh (dễ định nghĩa interface) mà mô tả tương tác giữa các thành phần. Thông thường mục tiêu là thay thế những chức năng và trách nhiệm trong những thành phần khác nhau. Đóng gói và ẩn thông tin: nghĩa là nhóm và đóng gói chi tiết bên trong của một trừu tượng và làm cho những chi tiết không thể được truy cập từ bên ngoài Tách giao diện và thực hiện liên quan đến việc xác định mọt thành phần bằng cách xác định một giao diện public (được biết đến như là client) mà là tách từ chi tiết của thành phần được hiện thực hóa như thế nào. Tính đầy đủ, toàn vẹn và nguyên thủy: mục tiêu của tính đầy đủ, toàn vẹn và nguyên thủy nghĩa là chắc rằng một thành phần chỉ tương ứng với những đặc điểm quan trọng của một trừu tượng. Nguyên thủy nghĩa là thiết kế nên được dựa trên mô hình dễ thực hiện Tách mối quan tâm. Một mối quan tâm là một “khu vực quan tâm với sự liên quan đến thiết kế phần mềm”. Một mối quan tâm thiết kế là một lĩnh vực của thiết kế mà liên quan đến một hay nhiều các bên liên quan (stakeholders). Mỗi kiến trúc nhìn một hay nhiều khung nhìn quan tâm. Tách mối quan tâm bởi những khung nhìn cho phép quan tâm các bên liên quan (stakeholders) tập trung vào một việc tại một thời điểm và yêu cầu và cung cấp một phương tiện quản lý phức tạp. 9. Khái niệm V$V, mục đích, vai trò, cách tiến hành V$V Click để xem - Khái niệm: Xác minh và thẩm định là sự kiểm tra việc phát triển phần mềm. Là công việc xuyên suốt quá trình phát triển phần mềm, chứ không chỉ ở khâu kiểm thử khi đã có mã nguồn. Xác minh (verification) là sự kiểm tra xem sản phầm có đúng với đặc tả không, chú trọng vào việc phát hiện lỗi lập trình. Thẩm định (validation) là sự kiểm tra xem sản phẩm có đáp ứng được nhu cầu người dùng không, có hoạt động hiệu quả không, tức là chú trọng vào việc phát hiện lỗi phân tích, lỗi thiết kế. - Mục đích: phát hiện và sửa lỗi PM, đánh giá tính dung được của PM, tạo sự tự tin về phần mềm đạt được mục tiêu đề ra - Thứ tự thực hiện: Verification -> Validation 10. Khái niệm, mục tiêu, quy trình, các phương pháp kiểm thử Click để xem Khái niệm Kiểm thử phần mềm 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ụ được kiểm thử. Kiểm thử có thể cung cấp cho doanh nghiệp một quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá và thấu hiểu được những rủi ro trong quá trình triển khai phần mềm. Trong kỹ thuật kiểm thử không chỉ giới hạn ở việc thực hiện một chương trình hoặc ứng dụng với mục đích đi tìm các lỗi phần mềm (bao gồm các lỗi và các thiếu sót) mà còn là một quá trình phê chuẩn và xác minh một chương trình máy tính / ứng dụng / sản phẩm nhằm: • Đáp ứng được mọi yêu cầu hướng dẫn khi thiết kế và phát triển phần mềm. • Thực hiện công việc đúng như kỳ vọng. • Có thể triển khai được với những đặc tính tương tự. • Và đáp ứng được mọi nhu cầu của các bên liên quan. Tùy thuộc vào từng phương pháp, việc kiểm thử có thể được thực hiện bất cứ lúc nào trong quá trình phát triển phần mềm. Mục Tiêu Mục tiêu của thử nghiệm có thể khác nhau: một mô-đun duy nhất, một nhóm các mô-đun như (liên quan theo mục đích, sử dụng, hành vi, hoặc cơ cấu), hay toàn hệ thống. Ba giai đoạn thử nghiệm có thể được phân biệt: đơn vị, tích hợp và hệ thống. Quy Trình Là những hoạt động của QC-Tester Team để kiểm thử một ứng dụng phần mềm. Bao gồm: Chuẩn bị chiến lược kiểm thử : phương pháp kiểm thử tiếp cận , xác định chiến lược kiểm thử, tùy theo yêu cầu của khách hàng mà nên ưu tiên vấn đề nào trước. Thường giai đoạn này ta sẽ tự đặt câu hỏi : sẽ kiểm thử cái gì và kiểm thử như thế nào. Chuẩn bị các kế hoạch kiểm thử : lập kế hoạch kiểm thử . Xác định và phân chia hợp lý thời gian, nhân sự, các tool được sử dụng cho từng chức năng. Tạo môi trường kiểm thử: Chuẩn bị môi trường , nền tảng cho công việc kiểm thử phần mềm, gồm hệ điều hành , trình duyệt , thiết bị. Các Phương Pháp Kiểm Thử 1. Kiểm thử hộp đen Là phương pháp kiểm thử mà người thực hiện kiểm thử chỉ cần quan tâm đến dữ liệu đầu vào, đầu ra mà không cần biết phần mềm xử lý như thế nào. Trên thực tế ở Việt Nam đã số các kiểm thử viên sẽ thực hiện áp dụng theo phương pháp này để kiểm tra các chức năng của phần mềm. Với phương pháp kiểm thử này, kiểm thử viên không cần hiểu biết về mã lệnh để xử lý chức năng đó thế nào. Các kiểm thử viên sẽ căn cứ vào tài liệu đặc tả, bản prototype của phần mềm cũng như dựa trên các testcase đã viết để kiểm tra chức năng. 2. Kiểm thử hộp trắng Là phương pháp kiểm thử cần yêu cầu kiểm thử viên hiểu rõ về kiến trúc bên trong phần mềm cần kiểm thử. Khi thiết kế test case và test, các tester truy cập thẳng vào bên trong source code, cấu trúc và thuật toán của chương trình để xác định xem đơn vị PM thực hiện như thế nào ? Trong thực tế ở Việt Nam thì các kiểm thử viên thực hiện được theo phương pháp này còn khá hạn chế mà chủ yếu kỹ thuật này được dùng để kiểm thử mức đơn vị do các lập trình viên thực thi. Ví dụ: Kiểm tra chức năng đăng nhập hệ thống của phần mềm theo giao diện như sau. Nếu đăng nhập thành công tức là đúng tài khoản và mật khẩu thì người dùng mới được phép sử dụng chức năng phần mềm. Khi đó người lập trình sẽ viết đoạn mã xử lý như sau: Trong trường hợp này nếu kiểm thử viên biết về chuyên môn sẽ thấy người lập trình này chưa xử lý nhập kí tự trắng. Do vậy khi xem code có thể đưa ra trường hợp nhập toàn kí tự trắng là có thể bắt được lỗi cho chức năng này. Đề thi CNTT K7 QUI Xem slide bài giảng công nghệ phần mềm tại đây