Đánh giá chất lượng thiết kế phần mềm kỹ nghệ phần mềm

21 613 24
Đánh giá chất lượng thiết kế phần mềm kỹ nghệ phần mềm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm MỤC LỤC A. MỞ ĐẦU I. LÝ DO CHỌN ĐỀ TÀI Ngày nay, hàng triệu máy tính được ra đời cùng các hệ phần mềm để phục vụ các hoạt động cho cá nhân, tập thể, cơ quan, quốc gia Dường như con người chúng ta ngày càng phụ thuộc hơn vào máy tính, vào các hệ phần mềm. Mà yêu cầu của khách hàng về phần mềm không phải lúc nào cũng giống nhau, yêu cầu đó ngày càng cao hơn. Khi tham khảo qua truyền hình, qua internet tôi thấy, hiện nay có hàng loạt phần mềm Việt Nam ra đời. Nhưng đặt câu hỏi tại sao, trong những phần mềm đó, có bao nhiêu phần mềm lớn, phần mềm đáp ứng mọi nhu cầu của khách hàng ? Phải chăng vấn đề chất lượng của một phần mềm vẫn chưa được chú trọng một cách thích đáng ? Trong quy trình phát triển phần mềm, theo [5] thiết kế phần mềm là bước được coi là “Nơi chất lượng phần mềm được nuôi dưỡng trong quá trình phát triển, cung cấp cách biểu diễn phần mềm có thể xác nhận về chất lượng, là cách duy nhất mà chúng ta có thể chuyển hóa một cách chính xác các yêu cầu của khách hàng thành sản phẩm hay hệ thống phần mềm cuối cùng”. Còn theo [3] thì “Trong ba giai đoạn: thiết kế, cài đặt và bảo trì thì thiết kế là giai đoạn quan trọng nhất, chịu trách nhiệm đến 80% đối với sự thành công của một sản phẩm. Cài đặt là việc thực thi những gì đã thiết kế. Nếu trong quá trình cài đặt có xuất 1 Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm hiện vấn đề thì phải quay lại sửa bản thiết kế. Quá trình thiết kế tốt là cơ sở để quản lý và giảm chi phí cho công việc bảo trì phần mềm sau này”. Vậy, thiết kết phần mềm là bước đầu tiên để đảm bảo chất lượng phần mềm. Nhưng hiện nay các tài liệu liên quan đến chất lượng thiết kế phần mềm vẫn còn mang tính chất lý thuyết chung chung, chưa dễ hiểu, rõ ràng. Mặt khác, qua tìm hiểu trên internet và qua các kết quả thiết kế phần mềm của các sinh viên khoa tin học, khóa học 2007-2010 trường ĐHSP Huế tôi thấy còn gặp nhiều sai sót để đạt một thiết kế phần mềm tốt. Vấn đề đánh giá chất lượng thiết kế phần mềm vẫn còn mơ hồ đối với người làm thiết kế phần mềm. Chính vì thế mà tôi lựa chọn đề tài : ” ĐÁNH GIÁ CHẤT LƯỢNG THIẾT KẾ PHẦN MỀM” II. MỤC ĐÍCH NGHIÊN CỨU Mục đích của đề tài là sau khi đọc xong đề tài này, bạn và tôi sẽ hiểu rõ về thiết kế phần mềm sao cho có chất lượng, thông qua phần phân tích kèm theo các ví dụ cụ thể. Và qua đề tài người đọc cũng biết được một số giải pháp để thiết kế phần mềm sao cho có chất lượng. Từ đó những người làm việc về thiết kế phần mềm có thể ứng dụng các giải pháp đó để tạo ra những bản thiết kế phần mềm có chất lượng, hoặc những người khác có thể đánh giá chất lượng thiết kế của một phần mềm nào đó một cách chính xác hơn. III. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đề tài này liên quan đến chất lượng và các giải pháp để có bản thiết kế tốt, có thể đáp ứng mọi nhu cầu của khách hàng. Và tất nhiên nó cũng liên quan đến bất kì một bản thiết kế phần mềm nào đó mà bạn bắt gặp. IV. PHƯƠNG PHÁP NGHIÊN CỨU Với đề tài này, tôi dựa trên các tài liệu liên quan mà các nhà đánh giá thiết kế phần mềm đã đúc kết qua sách, qua các file *doc, *pdf hay các bài giảng của các nhà tìm hiểu, nghiên cứu về chất lượng thiết kế phần mềm ở trên các trang web. Đồng thời tôi dựa vào các kiến thức đã được học tập về phần mềm, về phương pháp lập trình qua những năm ở Đại học, hoặc dựa vào các kết quả thiết 2 Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm kế phần mềm sưu tầm được để hiểu thêm về thiết kế phần mềm. Nếu những phần nào chưa rõ thì tôi nhờ các bạn viết phần mềm đó giải thích giùm.Và tât nhiên tôi đã nhận được sự hướng dẫn từ thầy giáo hướng dẫn để từ đó xác định được đề tài này nên viết những gì, làm những gì 3 Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm B. PHẦN NỘI DUNG I. THẾ NÀO LÀ THIẾT KẾ CÓ CHẤT LƯỢNG ? Qua tham khảo các tài liệu, tôi thấy hiện tại chưa có một tiêu chuẩn chính xác nào để xác định thế nào là thiết kế tốt. Tiêu chuẩn đó còn phụ thuộc vào ứng dụng và yêu cầu của mỗi dự án. Một thiết kế tốt có thể xem là một thiết kế đáp ứng mọi yêu cầu về phần mềm của khách hàng. Thiết kế phần mềm được coi là tốt nếu nó sản sinh ra một chương trình tối ưu; thiết kế càng chặt chẽ, gọn gàng và nhẹ càng tốt. Đồng thời thiết kế dể bảo dưỡng thích nghi, bổ sung cải tiến, dể đọc, dể hiểu, các thành phần của thiết kế phải gắn kết với nhau theo một quan hệ logic chặt chẽ giữa các thành phần của thiết kế được ghép nối một cách dể dàng. Để xem một thiết kế có là tốt hay không, người ta tiến hành thiết lập một số độ đo chất lượng thiết kế: - Độ kết dính thành phần trong module - Mức ghép nối giữa các module - Tính hiểu được - Tính thích nghi được Ta đi tìm hiểu cụ thể từng độ đo. II. ĐỘ ĐO CHẤT LƯỢNG THIẾT KẾ 1. Thế nào là độ kết dính thành phần trong module (cohesion) ? Theo [1], [3], [5] sự kết dính của 1 thành phần trong module là độ đo về tính gắn kết chặt chẽ với nhau giữa các bộ phận trong module đó. Muốn vậy, một thành phần phải thực hiện một chức năng logic hay một thực thể logic, và tất cả các bộ phận của nó đều phải tham gia vào việc thực hiện này. Nếu một phần không trực tiếp tham gia vào việc thực hiện chức năng logic đó thì mức độ kết dính của nó là thấp. Ví dụ: Độ kết dính của một lớp (Coupling Between Object classes) tính bằng số lớp mà lớp đó kết dính với. Một lớp gọi là có tính kết dính với lớp khác nếu nó gọi tới phương thức hoặc thuộc tính của lớp khác. 4 Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm Gape-Jones (1980) đưa ra 7 mức kết dính theo thứ tự tăng dần sau đây: - Kết dính gom góp : - Kết dính lôgic - Kết dính thời điểm - Kết dính thủ tục - Kết dính truyền thông - Kết dính tuần tự - Kết dính chức năng a. Kết dính gom góp : Các thành phần không liên quan với nhau, song lại bị bó vào một thành phần. Tôi xin đưa ra ví dụ đơn giản, khi ta gom các câu lệnh không liên quan tới nhau để tạo thành 1 hàm nhập trong c++ như sau : Class NhanSu { … Void nhap() { cout <<”nhap hoten: ” ; gets(hoten); cout <<”nhap ngay sinh: ” ; gets(ngaysinh); cout << ”nhap dia chi nha: ”; gets(diachi) } } Rõ ràng, độ kết dính dạng này của nó rời rạc và xấu nhất. b. Kết dính lôgic (logical cohesion) Các thành phần làm chức năng logic tương tự. Ví dụ như các hàm xử lí lỗi chung, cập nhật… Cụ thể hơn, tôi xin đưa ra một đoạn chương trình viết bằng c++: thêm n NhanSu vào hệ thống trong chương trình quản lý nhân sự trường Đại học. 5 Kết dính gom góp Private Sub sua_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sua.Click If DataGridView1.CurrentRow Is Nothing Then Exit Sub ‘trước tiên, kiểm tra xem chưa có dữ liệu trong bảng DataGridView1(hiện tại) thì không thực hiện sửa gì cả (thoát). Dim frm As New hoso frm.MS = DataGridView1.CurrentRow.Cells("maso").Value ‘khai báo biến frm bằng bảng hồ sơ để thực hiện sửa frm.Show() ‘ mở bảng frm Do NhanSu * NS ;int chon; … For (i=0; i<n; i++) Cout<<”bạn nhập dữ liệu cho giáoviên, sinhviên hay ngườigiúpviệc thứ”<<i +1; Cout << ”1. Nếu la giao vien \n”; Cout << ”2. Nếu la Sinh Viên \n”; Cout <<”3. Nếu la Người giúp việc \n”; Cin >> chon; Switch (chon) { case 1: {GiaoVien p; NS[i]=&p ; NS[i]-> nhap() ; } case 2: {SinhVien p; NS[i]=&p ; NS[i]-> nhap() ; } case 3: {GiupViec p; NS[i]=&p ; NS[i]-> nhap() ; } } Theo tôi, với 3 trường hợp case, con trỏ NS[i] trỏ đến hàm nhập của các class cho phù hợp,để thêm Nhân Sự vào hệ thống. -> Các câu lệnh ở 3 trường hợp đều thực hiện tương tự nhau -> có sự Kết dính lôgic Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm Hay một ví dụ khác trong phần thiết kế Nút sửa dữ liệu ở bảng Cap_Nhat_Ho_So viết bằng ngôn ngữVb.net, Phần mềm quản lý tin 3b [8’] 6 For (i=0; i<n; i++) { … { case 1: {GiaoVien p; NS[i]=&p ; NS[i]-nhap() } } My.Application.DoEvents() Loop While frm.Visible = True ‘trong khi bảng frm còn mở thì tiếp tục thì DataGridView1 tiếp tục thực hiện. Dim h As New DataSet khai báo 1 QRY("select * from db_hoso where maso='" & frm.MS & "'", h, "hoso") DataGridView1.CurrentRow.Cells("maso").Value = h.Tables("hoso").Rows(0)("maso") DataGridView1.CurrentRow.Cells("hoten").Value = h.Tables("hoso").Rows(0)("hoten") ‘ cập nhật dữ liệu với mã số, họ tên mới khi khách hàng đồng ý lưu frm.Dispose() ‘ đóng bảng frm End Sub Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm Ở đây các câu lệnh đưa ra để kiểm tra các trường hợp để có thể sửa dữ liệu hay không. Cụ thể các lệnh được giải thích rõ ở trên. Các lệnh if và do - loop while ở trên đều có chức năng là kiểm tra các điều kiện để sửa dữ liệu hay không. Vì vậy ở đây có sự kết dính logic. Qua đây ta cũng thấy mức kết dính này được đánh giá chất lượng thiết kế của nó vẫn tốt. c. Kết dính thời điểm (temporal cohesion). Các thành phần hoạt động cùng thời điểm. Ở ví dụ thêm nhân sự tôi đưa ra trên, các câu lệnh trong trường hợp chon = 1 sau: 7 Class NhanSu { char * hoten; public: Void nhap() { NhanSu(const char *s, const char *s1, const char *s2) { hoten= new char[strlen(s) + 1]; Strcpy (hoten, s); ……… } ~ NhanSu () {delete hoten ; } } }; Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm Trong trường hợp biến chon = 1 này, con trỏ p là kiểu GiaoVien. NS[i] được gán bằng địa chỉ của p và NS[i] truy xuất đến hàm nhập trong class GiaoVien. Và các thành phần này sẽ cùng kết thúc sau khi thoát khỏi vòng lặp. Hay tôi xin đưa ra một ví dụ về cấp phát bộ nhớ ta sẽ thấy rõ hơn : Khi nhập họ tên nhân sự, có thể có họ tên dài ngắn khác nhau. Do vậy ta không nên cấp phát sẵn ô nhớ chứa độ dài họ tên. Bởi như thế là không cần thiết, tốn ô nhớ. Ta nên cấp phát bộ nhớ động. Và khi đó các thành phần cùng khởi tạo và cùng kết thúc ở hàm hủy tử ~ nhansu ( ) và con trỏ hoten sẽ được cấp phát đúng bằng độ dài của họ tên +1 ô nhớ null. Những thành phần này gọi là có kết dính thời điểm. Theo [4] thì mức ghép nối này cũng được đánh giá chất lượng là vẫn tốt. d. Kết dính thủ tục (procedural cohesion). Các phần tử trong thành phần được ghép lại trong một dãy điều khiển. các thành phần tạo có một thứ tự xác định. Chẳng hạn, khi thiết kế các phần mềm tính toán trong tính lương cơ bản, tính phụ cấp, tính bảo hiểm. Hay trong phần tính toán trong phần thiết kế phần mềm xét tuyển sinh Đại học, đầu tiên điểm thi các môn đã biết và điểm ưu tiên, sau đó sẽ tính điểm khối đó theo hệ số môn thi và điểm ưu tiên. Một dãy lệnh thực hiện tuần tự như thế 8 Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm thực hiện để nhằm tính điểm thi cho thi sinh. Phần thiết kế này theo tôi cũng có sự kết dính thủ tục. Theo [4] mức dính này được nâng lên một mức cao hơn, được đánh giá là tốt. e. Kết dính truyền thông(communicational cohesion) Tất cả các phần tử của thành phần cùng thao tác trên cùng một dữ liệu vào và đưa ra cùng 1 dữ liệu ra. Tôi xin đưa ra ví dụ : Khi thống kê điểm tuyển sinh Đại học ta cần đưa ra toàn bộ dữ liệu, hay đưa ra người có điểm thủ khoa, điểm trung bình mà các thí sinh đạt được trong năm nay, lọc ra danh sách các em thi đậu … Hay ở các lệnh thực hiện các nút thêm, sửa, xóa dữ liệu trong bảng cap_nhat_ho_so của [8’] đều cùng thao tác trên cùng 1 dữ liệu trong bảng hoso. f. Kết dính tuần tự (sequential cohesion). Trong một thành phần, cái ra của thành phần này là cái vào của thành phần kia Tôi thấy trong phần mềm quản lý Tin 3B [8’]. Đây là đoạn code đọc file Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm As New ChonHoso frm.MdiParent = Me.MdiParent frm.Show() Do My.Application.DoEvents() Loop While frm.Visible = True If frm.Result <> "" Then Dim S As String = "" If frm.Result = "*" Then S = "select maso,hoten from db_hoso" Else S = "select maso,hoten from db_hoso where " & frm.Result 9 Đánh giá chất lượng thiết kế Phần mềm_Kỹ Nghệ Phần Mềm End If If ds.Tables("hoso") IsNot Nothing Then ds.Tables("hoso").Clear() End If QRY(S, ds, "hoso") MessageBox.Show(ds.Tables("hoso").Rows.Count) DataGridView1.Columns.Clear() DataGridView1.AutoGenerateColumns = True DataGridView1.DataSource = ds.Tables("hoso") With DataGridView1.Columns("maso") .HeaderText = "Mã SV" .Width = 80 .DisplayIndex = 0 End With With DataGridView1.Columns("hoten") .HeaderText = "Họ và tên sinh viên" .Width = 180 .DisplayIndex = 1 End With DataGridView1.ReadOnly = True End If End Sub Sau khi đọc dữ liệu từ file thì việc xử lý (chỉnh sửa ) dữ liệu đó bắt đầu được thực hiện. g. Kết dính chức năng (functional cohesion) Mỗi phần của thành phần đều là cần thiết để thực hiện 1 chức năng nào nó. Các thành phần đó là kết quả của phân rã chức năng. 10 [...]... ngữ lập trình, 19 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm hiểu về phần mềm Và đề tài đã đưa ra được các giải pháp để có thiết kế tốt, để người làm thiết kế phần mềm có thể ứng dụng vào phần mềm của mình Trong vốn khả năng của mình và việc vận dụng, phân tích vào các tài liệu liên quan đến Đánh giá chất lượng thiết kế phần mềm , nên đề tài vẫn còn cần nhiều sự đánh giá, góp ý Tôi hi... triễn C TỔNG KẾT Đề tài đã hoàn thành với việc tổng hợp, phân tích nhiều kết quả của các nhà nghiên cứu, tìm hiểu về Đánh giá chất lượng thiết kế phần mềm và vận dụng, phân tích vào các ví dụ cụ thể của các thiết kế phần mềm sưu tầm hoặc các đoạn code tự tôi chế tác Qua đề tài, tôi đã học được nhiều điều không những về kiến thức Đánh giá thiết phần mềm có chất lượng mà còn về khả năng đánh giá, hiểu,... cấu trúc hệ thống 4) Thiết kế phải rút ngắn được khoảng cách giữa các phần mềm và vấn đề tồn tại trong thế giới thực 5) Thiết kế cần thể hiện tính nhất quán và tích hợp 6) Thiết kế cần được cấu trúc để dễ thay đổi 7) Thiết kế không phải mã hóa, mã hóa không phải thiết kế 8) Thiết kế cần được xem xét ngay từ đầu để tối thiểu hóa các lỗi 9) Thiết kế cần được đánh giá và rà soát chất lượng trong quá trình... Mềm - Đại Học Quốc Gia Hà Nội 20 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm - [5] Nguyễn Việt Hà, ” bài giảng Kỹ Nghệ Phần Mềm - [6] Ian Sommerville, ”Software Engineering”, 6th ed., Addison-Wasley, 2001 - [7] Trang web về Mô hình chất lượng ISO - 9126 http://www.pcworld.com.vn/articles/quan-ly/tu-van/2004/02/1185833/mohinh-chat-luong-iso-9126/ - [8] Một số phần mềm : + [8’] Quản lý Tin 3b... Hà ,”Giáo Trình Kỹ Nghệ Phần Mềm - Nhà Xuất Bản Đại Học Quốc Gia Hà Nội , 02/2003 - [2] Ngô Trung Việt, Nguyễn Kim Ánh, ”nhập môn Kỹ Nghệ Phần Mềm - Nhà Xuất Bản Khoa Học Và Kỹ Thuật Hà Nội-14/03/2008 - [3] Lê Văn Tường Lân, ”giáo trình Công Nghệ Phần Mềm ”- khoa Công nghệ thông tin,trường ĐHKH huế, 02/2004 - [4] Silde bài giảng cho lớp K50CA và K50CB- PGS.TS Nguyễn Ngọc Bình, ”Công Nghệ Phần Mềm -.. .Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm Chẳng hạn khi cập nhật dữ liệu cần có các phần : Đọc dữ liệu về, thêm dữ liệu, xóa dữ liệu, sửa dữ liệu Theo tôi, các phần đó kết dính chức năng để tạo tạo nên chức năng cập nhât dữ liệu 2 Thế nào là mức ghép nối giữa các module (coupling) ? Ghép nối chỉ ra mức độ độc lập giữa các đơn vị thành phần (môđun) của một chương... các thiết kế này hoàn chỉnh hơn III CÁC GIẢI PHÁP CHO MỘT THIẾT KẾ TỐT Theo [1], ta có thể nhận được một thiết kế tốt nếu thực hiện đúng tiến trình thiết kết phần mềm thông qua việc áp dụng các nguyên lý cơ bản, các phương pháp luận hệ thống, các công cụ trợ giúp và việc xét duyệt nghiêm túc Tuy nhiên, điều đó chưa đủ đảm bảo chắc chắn một thiết kế đã hoàn hảo Về nguyên tắc để đảm bảo chất lượng thiết. .. coupling) 14 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm Loại này xảy ra khi một thành phần trực tiếp tham chiếu đến hoạt động của một thành phần khác Chẳng hạn ở các ngôn ngữ bậc thấp có sử dụng goto, lệnh cho phép thực hiện bước nhảy đến một nhãn nhất định trong chương trình 3 Tính hiểu được (Understandability): Theo [1], tính hiểu được liên quan tới một số đặc trưng sau : a Tính kết dính:... phải viết ra dễ đọc) Một thiết kế dễ thích nghi cần phải có mức nhìn thấy được cao, tức là có một quan hệ rõ ràng giữa các mức khác nhau: Cấu trúc hệ thống được thể hiện qua từng bước làm mịn qua từng biểu đồ luồng dữ liệu từ một mức qua mức sau và có thể lần vết ngược lại Để có độ thích nghi tối ưu thì một thành phần phải tự 17 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm chứa Muốn là tự chứa... lại các phần mềm đã có, trong đó có các mã nguồn, các mẫu thiết kế … 2 Những nguyên lý thiết kế cần vận dụng 1) Không rõ ràng tiến trình thiết kế trong một “Cách nhìn hạn hẹp” Người thiết kế cần tính đến mọi cách tiếp cận khác nhau dựa trên yêu cầu của vấn đề đặt ra và khả năng của các nguồn lực đó có được 2) Thiết kế có thể lần vết trở lại mô hình phân tích hay các bước trước nó 3) Thiết kế không . 19 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm hiểu về phần mềm Và đề tài đã đưa ra được các giải pháp để có thiết kế tốt, để người làm thiết kế phần mềm có thể ứng dụng vào phần mềm. được học tập về phần mềm, về phương pháp lập trình qua những năm ở Đại học, hoặc dựa vào các kết quả thiết 2 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm kế phần mềm sưu tầm được. 1 Đánh giá chất lượng thiết kế Phần mềm_ Kỹ Nghệ Phần Mềm hiện vấn đề thì phải quay lại sửa bản thiết kế. Quá trình thiết kế tốt là cơ sở để quản lý và giảm chi phí cho công việc bảo trì phần mềm

Ngày đăng: 18/10/2014, 11:07

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan