ky nghe phan mem

38
 Chương 1. Phn mm và knghphn mm 1.1.Khái nim phn mm 1.1.1. Khái nim Phn mm gm 3 thành phn: - Tp c ác l nh tr ên má y tín h (ch ương t rình máy tính) khi đ ược thc hin sto ra c ác dch vđem li nhng kết qumong mun cho người dùng. - c cu t rúc d liu ( lưu t rtrê n bnh ) là m cho chư ơng t rìn h tha o tác h iu q uvi các thông tin thích hp và ni dung thông tin được shóa. - Các tài li u để m ô tc tha o tác, các h sdn g và bo t rì phn mm (hướng dn s dng, tài liu kthut, phân tích, thiết kế, thnghim…) 1.1.2. Các đ c trưng ca ph n mm a. Phn mm được p hát tr in, nó khôn g được ch ế to t heo ng hĩa cđ in Phn mm cũng được thiết kế, chế to như phn cng, nhưng nó không được định hình trước. Chkhi phát trin xong người ta mi có sn phm cthvà biết được nó hot động có hiu quhay không. Quá trình phát trin phn mm quyết định giá thành và cht lượng ca nó. b. Phn mm kh ông “hng đi” nh ưng tho ái hóa th eo thi gian Phn mm không bnh hưởng tnhng tác động ca môi trường bên ngoài vn gây cho phn cng mòn cũ đi. Vmt lý thuyết, tlli ca phn mm là không đổi khi đưa và sdng, nhưng trên thc tế nó li thoái hóa qua thi gian do li mi sinh ra mi khi tiến hành bo trì trong quá trình sdng. Phn mm còn lc hu do công nghmi ra đời. c. Phn l n ph n mm đ ược x ây dn g the o đơn đặt hàn g ca kh ách d. Sph c t p v à tín h tha y đổi lu ôn là bn cht ca ph n mm Phn mm không phi là thc thvt lý, mà bn cht phn mm là nhng khái nim được thhin bng mt hthng logic dưới các ngôn ngkhác nhau được lưu trtrên giy hoăc vt mang. Do đó nó là khó hiu. Mt khác, phn mm là mt mô hình ca thế gii thc. Bn cht đa dng ca thế gii thc không cho phép mi người có đủ kiến thc để hiu nó mt cách ddàng. Phn mm là “không nhìn thy được” mà chcó thnhn biết qua smô ttnhng khía cnh khác nhau ca nó (sơ đồ điu khin, sơ đồ lung dliu, sơ đồ tương tác gia các mô-đun…). Thế gii thc luôn thay đổi theo không gian và thi gian, phn mm là mô hình ca thế gii thc nên nó chcó ý nghĩa khi thích nghi được vi sthay đổi đã din ra, tc là phi thay đổi mt cách tương ng cùng vi thi gian. Thay đổi trthành yêu cu và thuc tính tt yếu ca phn mm. e. Ngà y na y phn mm đượ c ph át t ri n the o nh óm 1.1.3. Các th ành ph n phn mm Phn mm máy tính là thông tin tn ti dưới hai dng: - Th ành p hn máy th c hin được : các câ u ln h được xâ y dng t rên mt ng ôn ng lp trình 1

Upload: nhung-nguyen

Post on 18-Jul-2015

120 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 1/38

 

Chương 1. Phần mềm và kỹ nghệ phần mềm

1.1.Khái niệm phần mềm

1.1.1. Khái niệmPhần mềm gồm 3 thành phần:

- Tập các lệnh trên máy tính (chương trình máy tính) khi được thực hiện sẽ tạo ra cácdịch vụ và đem lại những kết quả mong muốn cho người dùng.

- Các cấu trúc dữ liệu (lưu trữ trên bộ nhớ) làm cho chương trình thao tác hiệu quảvới các thông tin thích hợp và nội dung thông tin được số hóa.

- Các tài liệu để mô tả các thao tác, cách sử dụng và bảo trì phần mềm (hướng dẫn sửdụng, tài liệu kỹ thuật, phân tích, thiết kế, thử nghiệm…)

1.1.2. Các đặc trưng của phần mềma. Phần mềm được phát triển, nó không được chế tạo theo nghĩa cổ điển

Phần mềm cũng được thiết kế, chế tạo như phần cứng, nhưng nó không được địnhhình trước. Chỉ khi phát triển xong người ta mới có sản phẩm cụ thể và biết đượcnó hoạt động có hiệu quả hay không. Quá trình phát triển phần mềm quyết định giáthành và chất lượng của nó.b. Phần mềm không “hỏng đi” nhưng thoái hóa theo thời gianPhần mềm không bị ảnh hưởng từ những tác động của môi trường bên ngoài vốngây cho phần cững mòn cũ đi. Về mặt lý thuyết, tỷ lệ lỗi của phần mềm là khôngđổi khi đưa và sử dụng, nhưng trên thực tế nó lại thoái hóa qua thời gian do lỗi mớisinh ra mỗi khi tiến hành bảo trì trong quá trình sử dụng.Phần mềm còn lạc hậu do công nghệ mới ra đời.c. Phần lớn phần mềm được xây dựng theo đơn đặt hàng của khách

d. Sự phức tạp và tính thay đổi luôn là bản chất của phần mềmPhần mềm không phải là thực thể vật lý, mà bản chất phần mềm là những kháiniệm được thể hiện bằng một hệ thống logic dưới các ngôn ngữ khác nhau đượclưu trữ trên giấy hoăc vật mang. Do đó nó là khó hiểu.Mặt khác, phần mềm là một mô hình của thế giới thực. Bản chất đa dạng của thếgiới thực không cho phép mỗi người có đủ kiến thức để hiểu nó một cách dễ dàng.Phần mềm là “không nhìn thấy được” mà chỉ có thể nhận biết qua sự mô tả từnhững khía cạnh khác nhau của nó (sơ đồ điều khiển, sơ đồ luồng dữ liệu, sơ đồtương tác giữa các mô-đun…).Thế giới thực luôn thay đổi theo không gian và thời gian, phần mềm là mô hình củathế giới thực nên nó chỉ có ý nghĩa khi thích nghi được với sự thay đổi đã diễn ra,

tức là phải thay đổi một cách tương ứng cùng với thời gian.Thay đổi trở thành yêu cầu và thuộc tính tất yếu của phần mềm.e. Ngày nay phần mềm được phát triển theo nhóm

1.1.3. Các thành phần phần mềmPhần mềm máy tính là thông tin tồn tại dưới hai dạng:

- Thành phần máy thực hiện được: các câu lệnh được xây dựng trên một ngôn ngữlập trình

1

Page 2: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 2/38

 

- Các thành phần máy không thực hiện được: gồm các giải thích trong chương trình phần mềm, các tài liệu phân tích hướng dẫn sử dụng và khai thác nó…

1.1.4. Phân loại các phần mềmCó thể phân loại các phần mềm theo một số cách:

- Theo mức độ hoàn thiện của phần mềm được xây dựng:Chương trình -> sản phẩm (khi có thêm yếu tố người dùng) -> hệ thống (khi cóthêm yếu tố môi trường cài đặt).

- Theo vai trò - chức năng phần mềm thực hiện được:o Phần mềm hệ thốngo Phần mềm công cụo Phần mềm ứng dụng

- Theo lĩnh vực hoạt động:o Phần mềm hệ thốngo Phần mềm thời gian thựco Phần mềm nghiệp vụo Phần mềm khoa học và công nghệo Phần mềm nhúngo Phần mềm máy tính cá nhâno Phân mềm trên nền webo Phần mềm trí tuệ nhân tạo

1.2.Sự phát triển của phần mềm và thách thức

1.2.1. Quá trình phát triển của phần mềmQuá trình phát triển của phần mềm gắn liền với sự tiến hóa của phần cứng hệ thống

máy tính.- Những năm đầu từ 1950-1960: năng lực phần cứng hạn chế, phần mềm phần lớnmang tính chuyên dụng, chưa có phương pháp mang tính hệ thống, phát triển phầnmềm chưa được quản lý…

- Thời kỳ từ 1960 đến giữa những năm 1970:o Hệ thống phần mềm đa chương trình, đa người sử dụng phát triển dẫn đến

khái niệm tương tác người máy-> đòi hỏi mức độ tinh vi của phần cứng và phần mềm.

o Hệ thống thời gian thực ra đời.o Tiến bộ lưu trữ trực tuyến làm xuất hiện các hệ quản trị CSDL thế hệ đầu.o Số lượng các hệ thống máy tính phát triển, thư viện phần mềm phát triển,

qui mô phần mềm ngày càng lớn -> nẩy sinh nhu cầu bảo trì.- Thời kỳ giữa những năm 1970 đến 1990

o Phát triển mạng toàn cục và cục bộ, truyền thông tín hiệu số giải thông cao-> tăng nhu cầu truy nhập dữ liệu, yêu cầu phát triển phần mềm quản lý dữliệu và sự phát triển của các hệ thống phân tán -> làm tăng qui mô và độ phức tạp của phần mềm.

o Sự tiến bộ nhanh và sử dụng phổ biến các bộ vi xử lý trong công nghiệp,dịch vụ và đời sống sinh hoạt

2

Page 3: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 3/38

 

o Phần cứng ngày càng ổn định, chi phí phần mềm có khuynh hướng tăngnhanh hơn chi phí mua máy-> nảy sinh yêu cầu tăng năng suất làm phầnmềm.

- Thời kỳ sau 1990- thời kỳ thứ tư mới bắt đầuo Cách tiếp cận hướng đối tượng nhanh chóng thay thế các cách tiếp cận

truyền thống. Các hệ thống thông minh: hệ chuyên gia và phần mềm trí tuệnhân tạo chuyển từ phòng thí nghiệm ra thực tế.o Sự phát triển của Internet làm người dùng máy tính tăng vọt, nhu cầu phần

mềm càng lớn, quy mô và độ phức tạp của những hệ thống phần mềm tăngđáng kể.

1.2.2. Khủng hoảng phần mềm và sự ra đời của kỹ nghệ phầnmềm

 Những vấn đề tạo ra thách thức cho phần mềm:- Sự tăng qui mô phần mềm- Sự tăng chi phí làm phần mềm

- Sự kéo dài thời gian phát triển một phần mềm- Sự phụ thuộc nhiều vào kinh nghiệm của người làm phần mềm- Chất lượng phần mềm không ổn định do phụ thuộc vào con người- Sự thiếu nghiêm trọng kỹ sư làm phần mềm- Gánh nặng bảo trì hệ thống cũ để tiếp tục hoạt động.

Giải quyết các vấn đề nêu trên làm nảy sinh việc nghiên cứu các giải pháp cho chúng:- Những năm 70, phát triển phần mềm được thừa nhận và bắt đầu trở thành một

ngành công nghiệp.- Năm 1975, sau hội nghi về kỹ nghệ phần mềm quốc tế, nhiều lý thuyết, phương

 pháp luận và kỹ nghệ được đề nghị.- Những năm 90, công cụ trợ giúp kỹ nghệ phần mềm bằng máy tính (CASE) phát

triển mạnh.Tuy nhiên, tính ổn định của các sản phẩm phần mềm và kỹ thuật kiểm thử nó chưa giảiquyết một cách trọn vẹn. Vì vậy, kỹ nghệ phần mềm ra đời như một đòi hỏi tất yếu của sự phát triển phần mềm.

1.2.3. Thách thức đối với sự phát triển phần mềm máy tính hiệnnay

 Những thách thức đối với việc phát triển phần mềm gia tăng trong những năm gầnđây vì những nguyên nhân:

- Năng lực phần cứng đã vượt xa khả năng xây dựng phần mềm để có thể sử dụngtiềm năng của nó.

- Khả năng xây dựng các phần mềm mới không giữ được cùng nhịp so với nhu cầu- Quy mô và độ phức tạp của phần mềm mới ngày càng tăng, khả năng bảo trì các hệ

thống cũ khó khăn, tốn kém tài nguyên…Tất cả những thách thức trên đã dẫn đến việc chấp nhận thực hành kỹ nghệ phần mềm đểcó thể tạo ra nhanh các phần mềm với chất lượng cao, có quy mô và số lượng ngày mộtlớn, có những tính năng tương ứng với tiềm năng phần cứng.

3

Page 4: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 4/38

 

1.3.Kỹ nghệ phần mềm

1.3.1. Các khái niệm-  Định nghĩa:

o “Kỹ nghệ phần mềm là việc thiết lập và sử dụng đúng đắn các nguyên lý

công nghệ để thu được phần mềm một cách kinh tế vừa tin cậy, vừa làmviệc hiệu quả trên các máy tính thực” (theo Fritz Bauer)

o “Kỹ nghệ phần mềm là lĩnh vực liên quan đến lý thuyết, phương pháp vàcông cụ dùng cho phát triển phần mềm” (theo Ian Sommerville, 1995)

o “Kỹ nghệ phần mềm là bộ môn tích hợp cả qui trình, các phương pháp, cáccông cụ để phát triển phần mềm máy tính” (theo Pressman, 1995)

Với nguồn lực không hạn chế thì đa số các vấn đề của phần mềm đều giải quyếtđược. Thách thức ở đây là phải tạo ra phần mềm chất lượng cao với sự hạn chế về nguồnlực và tuân thủ một lịch trình định trước.

Kỹ nghệ phần mềm là kỹ nghệ phát triển một hệ thống gồm một loạt các bước chứađựng ba yếu tố chủ chốt sau:

Phương pháp Công cụ Thủ tục

- Các phương pháp trong kỹ nghệ phần mềm:Phương pháp cho cách làm về mặt kỹ thuật để xây dựng phần mềm. Phương pháp baogồm: phương pháp luận và phương pháp cụ thể.

o Phương pháp luận mô tả một cách tiếp cận mang tính kỹ thuật để tạo ra phần mềm, thường bao gồm các hoạt động theo một định hướng công nghệvà trình tự thực hiện chúng.

Các định hướng công nghệ như hướng cấu trúc, hướng dữ liệu,

hướng đối tượng… Các hoạt động bao gồm: lập kế hoạch, ước lượng dự án, phân tíchyêu cầu hệ thống và phần mềm, thiết kế cấu trúc dữ liệu, kiến trúcchương trình và thuật toán, mã hóa, kiểm thử và bảo trì.

Các phương pháp thường bao gồm các thành phần sau:• Các khái niệm: mô tả các phần tử của mô hình• Các ký pháp (toán học, đồ họa) biểu diễn các phần tử mô

hình• Các qui tắc liên kết các phần tử tạo thành mô hình một cách

đúng đắn• Một qui trình hướng dẫn các bước để phát triển mô hình•  Những gợi ý đề xuất cho việc vận dụng phương pháp vào

các trường hợp thích hợp và để có được mô hình mô tả thếgiới thực tốt nhất có thể.

- Các công cụ trong kỹ nghệ phần mềm:Các công cụ là những phần mềm khác nhau được xây dựng trên cơ sở những mô

hình và phương pháp cụ thể nhằm cung cấp sự trợ giúp cho việc tự động hay bán tự độnghóa các hoạt động phát triển, gọi chung là kỹ nghệ phần mềm có máy tính trợ giúp (CASE-Computer Aided Software Engineering).

4

Page 5: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 5/38

 

- Thủ tục liên kết phương pháp và công cụ, làm cho chúng được sử dụng đúng vàhợp lý. Các thủ tục thường bao gồm:

o Xác định trình tự theo đó các phương pháp sẽ được áp dụng cho một dự áno Định ra các sản phẩm cần bàn giao (tài liệu, báo cáo, bản mẫu,…) các

chuẩn, các độ đo để đánh giá kết quả công việc và sản phẩm, kiểm soát quá

trình phát triển, đảm bảo chất lượng phần mềm, điều tiết sự thay đổi,…o Xác định những cột mốc mà tại đó các sản phẩm được bàn giao để người

quản lý nắm được tiến độ, phân bổ tài nguyên và kiểm soát được kết quả.Kỹ nghệ phần mềm bao gồm nhiều giai đoạn, mỗi giai đoạn lại bao gồm cả phương pháp, công cụ và thủ tục thường được gọi là một tiến trình của kỹ nghệ phần mềm.- Tiến trình phần mềmKhi xây dựng một phần mềm, cần xác định các bước hoạt động dự kiến trước- một lộtrình mà theo đó ta có thể tạo ra một phần mềm chất lượng, hiệu quả và đúng hạn, đóchính là tiến trình phần mềm. Trong đó phải có các hoạt động mang tính kỹ thuật đểtạo ra sản phẩm và các hoạt động quản lý để đảm bảo chất lượng của sản phẩm. Cáchoạt động thường được phân chia thanh từng bước. Các bước có thể thực hiện tuần tự

hoặc lặp lại ở một số bước nào đó.Về mặt kỹ thuật, bốn hoạt động cơ bản bao gồm:o Xác định yêu cầu phần mềm: Xác định các chức năng của phần mềm và các

ràng buộc mà nó cần tuân thủ, đặc tả nó.o Phát triển phần mềm: tạo ra phần mềm theo đúng đặc tảo Thẩm định phần mềm: Phần mềm cần được kiểm tra xem có đáp ứng được

yêu cầu của người sử dụng không.o Tiến hóa phần mềm: Phần mềm cần được tiến hóa để đáp ứng yêu cầu thay

đổi của người dùng và môi trường.- Mô hình tiến trình

Mô hình tiến trình phần mềm là sự mô tả tiến trình một cách đơn giản hóa khi xem

xét nó từ một khía cạnh cụ thể.Một số mô hình phổ biến: mô hình thác nước, mô hình xoắn ốc, mô hình làm bản

mẫu…- Chi phí trong kỹ nghệ phần mềm: chi phí cho một phần mềm bao gồm toàn bộ chi

 phí cho tiến trình kỹ nghệ nó, thường phụ thuộc vào nhiều yếu tố khách quan như:tiến trình được sử dụng, loại phần mềm đặt hàng, chất lượng sản phẩm được yêucầu…

- Các thuộc tính cần được kỹ nghệ tốt:Việc đánh giá chất lượng phần mềm được kỹ nghệ đòi hỏi phải chỉ ra các thuộc

tính chung mà mọi phần mềm nên có. Ví dụ theo chuẩn ISO 9126: Có thể bảo trì được,đáng tin cậy, có hiệu quả, khả dụng…

5

Page 6: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 6/38

 

1.3.2. Mô hình thác nướcMô hình thác nước hay còn gọi là mô hình vòng đời truyền thống do Royce đề xuấtnăm 1970. Mô hình gồm các hoạt động: kỹ nghệ hệ thống, phân tích, thiết kế, mã hóa,kiểm thử và bảo trì.

o Kỹ nghệ hệ thống: gồm việc thu thập yêu cầu ở mức hệ thống với một

lượng nhỏ thiết kế và phân tích ở mức đỉnh. Bắt đầu từ việc thiết lập yêucầu cho toàn bộ hệ thống rồi trích ra một tập con yêu cầu cho phần mềm.

o Phân tích: tập trung vào việc thu thập và phân tích các thông tin cần cho phần mềm, các chức năng phần mềm cần phải thực hiện, hiệu năng, giaodiện với người dùng, các ràng buộc. Sau đó lập tư liệu về yêu cầu cho hệthống phần mềm để khách hàng duyệt lại.

o Thiết kế: là quá trình chuyển hóa cá yêu cầu phần mềm thành các mô tảthiết kế. Thiết kế chia làm hai giai đoạn: thiết kế logic và thiết kế vật lý.Thiết kế logic nhằm tạo ra hệ thống có kiến trúc tốt và các giải pháp chomỗi vấn đề. Thiết kế vật lý là áp các điều kiện thực tế có được vào thiết kếlogic để được một mô tả hệ thống vật lý như nó tồn tại trong thực tế. Thiết

kế tập trung vào bốn loại chính: thiết kế kiến trúc, thiết kế dữ liệu, thiết kếcác thủ tục và thiết kế giao diện. Thiết kế cũng cần lập tư liệu để phê duyệt.

o Mã hóa: là dịch các đặc tả thiết kế thành các chương trình mã nguồn trongmột ngôn ngữ lập trình nào đó mà máy có thể thực hiện được.

o Kiểm thử: bắt đầu khi đã có chương trình mã nguồn, tập trung vào phát hiệnvà sửa lỗi phần logic trong chương trình. Về chức năng bên ngoài, kiểm thửnhằm mục đích phát hiện ra lỗi và kiểm tra xem với đầu vào xác định có tạora kết quả mong muốn hay không. Kiểm thử được tiến hành từ mức đơn vị,sau đó tích hợp ở mức từng chương trình, từng hệ thống con và toàn bộ hệthống. Các kiểm thử lần cuối liên quan đến việc thẩm định xem phần mềmcó thỏa mãn yêu cầu của người dùng không.

o Bảo trì: là kiểm tra, sửa lỗi khi đưa chương trình vào sử dụng, thích ứng phần mềm với thay đổi của môi trường bên ngoài hoặc bổ sung chức nănghay nâng cao hiệu năng khi khách hàng yêu cầu. Việc bảo trì có thể áp dụnglại các bước của vòng đời phát triển phần mềm.

Đây là mô hình có sớm nhất và được sử dụng rộng rãi nhất. Nó đưa ra các phương pháp khoa học, các bước tổng quát áp dụng cho nhiều mô hình. Các dự án phần mềm thựctế hiếm khi tuân theo trình tự tuần tự, quá trình lặp lại là không thể tránh khỏi. Khi áp dụngmô hình này, nếu không quay lại dễ gặp bất trắc, mà quay lại thì khó quản lý được tiến độ.Mặt khác đến cuối dự án mới có sản phẩm để khách hàng làm việc.

1.3.3. Các mô hình tiến hóa-  Mô hình làm bản mẫu (prototyping)Làm bản mẫu là tạo ra một mô hình như thực tế phần mềm cần xây dựng. Mô hình cóthể ở ba dạng:

o Bản mẫu trên giấy mô tả giao diện người dùngo Mẫu cài đặt: chứa một tập con chức năng của phần mềm mong đợio Bản mẫu là một chương trình có thể chạy được một phần hay tất cả các

chức năng mong muốn nhưng sơ lược.

6

Page 7: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 7/38

 

 Người phát triển xác định mục tiêu tổng thể của khách hàng, thiết kế nhanh bản mẫu banđầu, trình diễn để người dùng đánh giá rồi tiếp tục làm min dần. Tiến trình được lặp lại chođến khi bản mẫu thỏa mãn yêu cầu của khách hàng.Cách tiếp cận này là thực tế, phù hợp với các hệ thống vừa và nhỏ đặc biệt khi yêu cầuchưa rõ ràng.

-  Mô hình xoắn ốcMô hình xoắn ốc được Boehm đưa ra năm 1988. Nó dựa trên ý tưởng là tối thiểuhóa rủi ro bằng việc phân tích các yếu tố rủi ro ở mỗi bước lặp và sử dụng phương pháplàm bản mẫu. Quá trình phát triển được chia thành nhiều bước lặp, các hoạt động tại mỗi bước lặp:

o Lập kế hoạch: xác định mục tiêu, giải pháp và ràng buộco Phân tích rủi roo Kỹ nghệ: phát triển sản phẩm ở mức tiếp theoo Đánh giá

Mô hình này thích hợp để phát triển hệ thống lớn, đòi hỏi có sự liên kết chặt chẽ giữangười phát triển và khách hàng và cần có chi phí phân tích rủi ro.

-  Mô hình RUP (Rational Unified Process)RUP là mô hình phát triển phần mềm hướng đối tượng sử dụng ngôn ngữ UML với ba đặctrưng: Lấy kiến trúc làm trung tâm, điều khiển bởi use-case, lặp và tăng dần.

-  Mô hình phát triển tăng dần-  Mô hình phát triển ứng dụng nhanh (RAD)

1.3.4. Phát triển hệ thống hình thức hóaÝ tưởng của phương pháp này là biểu diễn đặc tả yêu cầu ở dạng biểu diễn ký pháp

toán học, sau đó áp dụng các biến đổi khác nhau để chuyển đặc tả hình thức thành chươngtrình. Trong quá trình chuyển đổi, biểu diễn hình thức của đặc tả được làm mịn dần nhưngluôn đảm bảo tính đúng đắn toán học của biểu diễn hệ thống mà không đòi hỏi sự kiểm tra

tốn kém. Cách tiếp cận này có thể chứng minh tính đúng đắn của đặc tả. Chi phí đặc tả cao,tuy nhiên chi phí cho các bước tiếp theo nhỏ hơn các phương pháp khác. Quá trình chuyểnđổi có thể theo dõi được. Việc đặc tả đòi hỏi một trình độ trừu tượng cao nên phương phápnày khó được áp dụng.

1.3.5. Phát triển phần mềm theo hướng sử dụng lạiHướng phát triển này dựa trên cơ sở nhiều thành phần phần mềm có thể sử dụng lại

và tích hợp chúng trong một khung làm việc. Tiến trình bắt đầu từ việc đặc tả yêu cầu, phân tích yêu cầu thành những thành phần, cải biên các thành phần này để chúng tương tựvới các thành phần sẵn có. Sau đó thiết kế hệ thống dựa trên các thành phần đã có, pháttriển và tích hợp hệ thống. Khi các thành phần chưa có sẵn cần phát triển bổ sung. Một

trong những phương pháp phát triển theo hướng sử dụng lại là phương pháp phát triển dựatrên thành phần (CBSE-Component-Base Software Engineering).Phương pháp này rút ngắn thời gian phát triển, giảm chi phí, ít rủi ro, độ tin cậy cao.

1.3.6. Kỹ thuật thế hệ thứ 4Kỹ thuật thế hệ thứ 4 (4GT- 4 Generation Technology) bao gồm tập lớn các công

cụ phần mềm. Mỗi công cụ cho phép xác định một số đặc trưng của phần mềm ở mức cao,

7

Page 8: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 8/38

 

sau đó tự động sinh mã chương trình. Môi trường phát triển phần mềm hỗ trợ cho tiến trình4 GT bao gồm một số hoặc tất cả các công cụ sau:

- Ngôn ngữ phi thủ tục để truy vấn cơ sở dữ liệu- Bộ sinh báo cáo- Bộ thao tác dữ liệu

- Bộ tương tác và xác định màn hình- Bô sinh chương trình/mã- Khả năng làm trang tính.

1.3.7. Các hoạt động của tiến trình phát triển và các tài liệu

Các hoạt động Tài liệu1. Phân tích yêu cầu Nghiên cứu khả thi, Yêu cầu khái quát2. Xác định yêu cầu Tài liệu yêu cầu3. Đặc tả hệ thống Đặc tả chức năng, kế hoạch kiểm thử chấp nhận,

tóm tắt cách sử dụng

4. Thiết kế kiến trúc Đặc tả kiến trúc, kế hoạch kiểm thử hệ thống5. Đặc tả phần mềm Cấu trúc các hệ con và giao diện, mô tả các hệ

con phần mềm6. Thiết kế dữ liệu Cấu trúc dữ liệu logic/vật lý, Từ điển dữ liệu7. Thiết kế giao diện Đặc tả giao diện, kế hoạch kiểm thử tích hợp8. Thiết kế chi tiết Đặc tả thiết kế, kế hoạch kiểm thử đơn vị9. Mã hóa Chương trình nguồn10. Kiểm thử đơn vị Báo cáo kiểm thử đơn vị11. Kiểm thử môđun Báo cáo kiểm thử môđun12. Kiểm thử tích hợp Báo cáo kiểm thử tích hợp, hướng dẫn sử dụng

cuối cùng

13. Kiểm thử hệ thống Báo cáo kiểm thử hệ thống14. Kiểm thử chấp nhận Hệ thống chương trình và các tài liệu

1.4.Chất lượng phần mềmKhi đánh giá về phần mềm, một số tiêu chí được đưa ra:

- Đạt được các mục tiêu thiết kế đề ra của tổ chức- Chi phí vận hành chấp nhận được (không quá cao so với kết quả mà nó mang lại)- Đáp ứng được các chuẩn mực của một hệ thống thông tin hiện hành (ví dụ như tính

sẵn sàng)- Sản phẩm tạo ra có giá trị xác đáng

- Bảo trì được (dễ bảo trì, bảo trì không quá tốn kém)- Khả dụng (dễ học và dễ sử dụng)- Mềm dẻo, có khả năng thích nghi- Có tính khả chuyểnViệc đánh giá chất lượng phần mềm là rất khó. Thường người ta quan tâm đến đảm bảo chất lượng phần mềm, đó là những giải pháp bảo đảm đạt được những độ đo khácnhau của phần mềm trong quá trình phát triển. Hy vọng rằng khi các độ đo được đảm bảo thì phần mềm chắc chắn sẽ có chất lượng.

8

Page 9: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 9/38

 

1.5.Kỹ nghệ hệ thống dựa trên máy tính

1.5.1. Hệ thống dựa trên máy tínhMột hệ thống dựa trên máy tính gồm có các thiết bị tin học (phần cứng), các

chương trình phần mềm, các dữ liệu, con người và các thủ tục làm việc được tổ chức lại để

tạo ra các chức năng hay dịch vụ phục vụ cho một tổ chức.Sự thành công của mỗi thành phần trong hệ thống phụ thuộc vào sự hoạt động của

một số thành phần liên quan. Một hệ thống gồm nhiều hệ thống con, khi các thành phầnnày liên kết lại thành một hệ thống, chúng tạo ra những đặc tính nổi trội mà mỗi thành phần riêng rẽ không thể có.

Một hệ thống dựa trên máy tính có hai loại thuộc tính nổi trội:- Các thuộc tính chức năng- Các thuộc tính phi chức năng như tính đáng tin cậy (phần cứng, phần mềm, người

điều khiển), hiệu suất, độ an toàn và bảo mật…Các hệ thống luôn tồn tại trong một môi trường. Môi trường ảnh hưởng đến chức năng,hiệu suất của hệ thống.

Trong nhiều trường hợp, hệ thống được dự kiến để tạo ra một số thay đổi lên môitrường của nó.Chức năng của một hệ thống có thể bị ảnh hưởng bởi các thay đổi trong môi trườngcủa nó theo những cách rất khó dự đoán.

1.5.2. Mô hình hóa hệ thốngMô hình kiến trúc hệ thống được sử dụng để xác định các thành phần phần cứng và

 phần mềm. Một kiến trúc hệ thống nên được thiết kế dưới dạng các hệ thống con chứcnăng mà không cần quan tâm đến hệ thống đó là hệ thống con phần cứng hay phần mềm.Các thành phần chức năng tiêu biểu trong một hệ thống cần được phân loại theo một sốtiêu chí sau:

- Các thành phần thu nhận thông tin (sensor, thiết bị ngoại vi)- Các thành phần thao tác (actuator) gây ra tự thay đổi lên môi trường- Các thành phần truyền thông giữa các thànnh phần và với môi trường- Các thành phần phối hợp- Các thành phần giao diện chuyển đổi dạng biểu diễn thông tin giữa các thành phần

1.5.3. Tiến trình kỹ nghệ hệ thốngTiến trình kỹ nghệ hệ thống gồm các bước sau:

-  Xác định yêu cầuXác định yêu cầu bao gồm:

o Xác định các yêu cầu chức năng trừu tượngo Các thuộc tính của hệ thốngo Các thuộc tính mà hệ thống không bộc lộ.

Một phần quan trọng của giai đoạn xác định yêu cầu là thiết lập một tập các mục tiêutổng thể mà hệ thống cần có, trả lời câu hỏi: tại sao hệ thống được phát triển là cầnthiết cho môi trường đích cụ thể?- Thiết kế hệ thống 

Thiết kế hệ thống bao gồm những hoạt động sau:

9

Page 10: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 10/38

 

o Phân chia các yêu cầuo Xác định các hệ thống cono Gán các yêu cầu cho các hệ thống cono Đặc tả chức năng hệ thống cono Xác định các giao diện của mỗi hệ thống con.

-  Phát triển hệ conTrong quá trình phát triển hệ thống, các hệ thống con được xác định khi thiết kế hệthống được thực thi. Nó có thể bao gồm việc sử dụng các tiến trình kỹ nghệ hệ thốngcho mỗi hệ thống đơn. Trong số đó, hệ thống con quan trọng là hệ thống phần mềm.Các hệ thống con được phát triển độc lập và song song. Khi có vấn đề xuất hiện trongtất cả các hệ thống con thì yêu cầu sửa đổi cần được thực hiện ở mức hệ thống.- Tích hợp hệ thống Tích hợp hệ thống bao gồm việc lấy các hệ thống con đã phát triển độc lập và lắp ghépchúng lại- Cài đặt hệ thống Trong quá trình cài đặt hệ thống, mỗi hệ thống con được đặt vào môi trường mà ở đó

nó được dự định sẽ hoạt động.-  Đưa hệ thống vào hoạt động Để đưa hệ thống vào hoạt động cần các khóa đào tạo cho người vận hành và hoàn thiệnqui trình nghiệp vụ để có thể sử dụng hiệu quả hệ thống mới. Các vấn đề có thể phátsinh trong giai đoạn này. Một vấn đề có thể gặp phải là sự không tương thích vớinhững hệ thống đang tồn tại. Vì vậy, hoạt động bảo trì là một yêu cầu cấp thiết.- Tiến hóa hệ thống Các hệ thống lớn, phức tạp có một vòng đời rất dài. Trong thời gian tồn tại, chúng cầnđược sửa những lỗi trong các yêu cầu của hệ thống ban đầu và có các yêu cầu mới phátsinh. Sự tiến hóa của hệ thống, giống như sự tiến triển của phần mềm, là khá tốn kém.Việc bổ sung, sửa đổi hay tiến hóa hệ thống đến mức nào đó có thể tạo thành một hệ

mới khác về cơ bản hệ thống ban đầu. Khi đó hệ thống bước sang vòng đời của một thếhệ mới.-  Loại bỏ hệ thống.

Loại bỏ hệ thống có nghĩa là kiến cho hệ thống ngừng làm việc sau khi nó kết thúcthời gian hoạt động có ích.

10

Page 11: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 11/38

 

Chương 2. Xác định và đặc tả yêu cầu phần mềm

2.1.Tổng quan về yêu cầu phần mềm

2.1.1. Khái niệm yêu cầu phần mềmQuá trình thiết lập các dịch vụ mà hệ thống phải cung cấp và các ràng buộc mà hệ

thống phải tuân thủ khi hoạt động hay phát triển được gọi là nắm bắt và phân tích yêu cầu.Kết quả của công việc này là bản đặc tả yêu cầu, nó thường là tư liệu chính thức đầu tiênđược tạo ra trong tiến trình phần mềm.

Yêu cầu của một hệ thống phần mềm mô tả những việc mà hệ thống làm và nhữngràng buộc mà nó phải tuân thủ. Theo mức độ trừu tượng, yêu cầu được phân như sau:

- Yêu cầu người sử dụng : là những phát biểu bằng ngôn ngữ tự nhiên, biểu đồ… đểmô tả các dịch vụ mà hệ thống cung cấp và các ràng buộc. Đó là những phát biểuhướng người dùng.

- Yêu cầu hệ thống : nêu ra các dịch vụ của hệ thống và chi tiết các ràng buộc. Tài

liệu này (có thể được gọi là đặc tả chức năng) cần rõ ràng, chính xác. Nó đượcdùng làm cơ sở cho hợp đồng giữa khách hàng và người phát triển hệ thống.

-  Đặc tả phần mềm: là mô tả khái quát các chức năng phần mềm trợ giúp hoạt độngnghiệp vụ làm cơ sở để thiết kế và triển khai phần mềm sau này. Tài liệu đặc tả phần mềm được bổ sung thêm các chi tiết để trở thành tài liệu đặc tả yêu cầu hệthống.

2.1.2. Phân loại yêu cầu phần mềmYêu cầu phần mềm có thể phân thành ba loại:- Các yêu cầu chức năng: là những phát biểu về chức năng hay dịch vụ mà hệ thống

cung cấp.

- Các yêu cầu phi chức năng: là những ràng buộc lên các dịch vụ hoặc chức năng củahệ thống. Nó bao gồm các ràng buộc về mặt thời gian, ngân sách, về chuẩn sửdụng…

Yêu cầu phi chức năng bao gồm các kiểu sau:o Yêu cầu về sản phẩm:

Yêu cầu khả dụng Yêu cầu hiệu quả (về hiệu năng, về không gian) Yêu cầu về độ tin cậy Yêu cầu khả chuyển

o Yêu cầu về tổ chức

Yêu cầu chuyển giao Yêu cầu triển khai Yêu cầu về chuẩn

o Yêu cầu mở rộng Yêu cầu hoạt động bên trong Yêu cầu đạo đức Yêu cầu pháp lý Yêu cầu về cá nhân

11

Page 12: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 12/38

 

Yêu cầu an toàn- Các yêu cầu miền lĩnh vực: là yêu cầu xuất phát từ miền ứng dụng. Nó phản ánh

các đặc trưng của lĩnh vực ứng dụng.

2.1.3. Tiến trình kỹ nghệ yêu cầu

-  Nghiên cứu khả thi: Việc nghiên cứu khả thi sẽ quyết định đưa ra một hệ thốngđáp ứng được yêu cầu của khách hàng, đảm bảo về công nghệ, có giá cả phảichăng, có thể thực hiện được trong điều kiện ngân sách và thời hạn định trước.

-  Phát hiện và phân tích yêu cầu: Sau khi phân tích khả thi, người phát triển khảosát hệ thống, làm việc với khách hàng và người sử dụng để hiểu về miền ứng dụngvà thông tin liên quan.

-  Đặc tả yêu cầu: là mô tả chính xác và chi tiết các yêu cầu hệ thống để làm cơ sở giao kèo giữa khách hàng và người phát triển.

- Thẩm định yêu cầu: thẩm định là xem xét đặc tả yêu cầu có mô tả chính xácnhững yêu cầu của khách hàng. Thẩm định phải đảm bảo tính đúng đắn, nhất quán,đầy đủ và hiện thực.

2.1.4. Tài liệu yêu cầu phần mềmYêu cầu hệ thống được biểu diễn bằng tài liệu yêu cầu phần mềm hay đặc tả yêu

cầu phần mềm (SRS- Software Requirement Specification). Nó là tài liệu chính thức chongười phát triển phần mềm. Tài liệu gồm: tài liệu xác định yêu cầu và tài liệu đặc tả yêucầu. Có thể trình bày hai tài liệu trong một bản mô tả chung, trong đó phần đặc tả như là phụ lục của tài liệu xác định yêu cầu. Nó được dùng để viết bản thiết kế. Từ một yêu cầu phải tham chiếu được tới các phần thiết kế tương ứng để thực thi nó. Nếu các dịch vụ vàràng buộc, thuộc tính trong tài liệu yêu cầu phù hợp với bản thiết kế phần mềm thì bảnthiết kế là lời giải đúng cho bài toán đặt ra.

Heniger (1980) đã đưa ra sáu yêu cầu cho một tài liệu yêu cầu phần mềm:

- Chỉ mô tả các hoạt động của hệ thống từ bên ngoài.- Chỉ ra được ràng buộc của hệ thống trong quá trình vận hành.- Dễ thay đổi.- Phục vụ như tài liệu tham khảo cho người bảo trì hệ thống- Dự toán trước vòng đời của hệ thống- Mô tả được các đáp ứng đối với mỗi sự cố thay đổi ngoài dự tính.Cấu trúc tài liệu yêu cầu phần mềmChuẩn IEEE/ANSI 830-1993 đã gợi ý một cấu trúc cho tài liệu yêu cầu như sau:

1 Giới thiệu1.1 Mục tiêu của tài liệu yêu cầu1.2 Phạm vi của sản phẩm

1.3 Các định nghĩa, chữ viết tắt và từ viết rút gọn1.4 Tài liệu tham khảo1.5 Tổng quan về tài liệu2 Mô tả chung2.1 Các đặc điểm của sản phẩm2.2 Các chức năng của sản phẩm2.3 Các đặc trưng người dùng2.4 Các ràng buộc chung

12

Page 13: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 13/38

 

2.5 Các giả định và những phụ thuộc3 Các yêu cầu cụ thể4 Phụ lục5 Các chỉ số chỉ dẫn

Tài liệu có thể có thêm các chương hay phụ lục với các thông tin:

- Kiến trúc chung của hệ thống phần cứng- Cơ sở dữ liệu- Chú dẫn

2.2.Xác định yêu cầu phần mềm

2.2.1. Khảo sát hệ thống và phân tích khả thiSau khi được khách hàng đặt hàng, các nhà phát triển cần tiến hành khảo sát hiện

trạng hệ thống đang vận hành để thu thập thông tin phục vụ phân tích khả thi. Trên cơ sở thông tin thu được và những yêu cầu của khách hàng, nhóm nghiên cứu đưa ra một số phương án về hệ thống cần xây dựng. Sau đó tiến hành phân tích, lập luận chứng, phân tích

rủi ro và chọn phương án thích hợp. Phân tích rủi ro thường tập trung vào một số mặt:- Khả thi về kinh tế- Khả thi về kỹ thuật- Khả thi về pháp lý- Khả thi về hoạt động- Khả thi về thời gianBản nghiên cứu khả thi cần được xét duyệt, phải đề xuất quyết định: tiến hành haykhông tiến hành? Các quyết định tiến hành khác sẽ được đưa ra trong các bước lập kếhoạch. Sau khi giải pháp và phương án đã được chọn, nhóm phân tích cần lập hồ sơ nhiệm vụ. Nó được dùng làm cơ sở cho một thỏa thuận không chính thức giữa ba phía:người phân tích, nhà đầu tư, khách hàng và người sử dụng.

2.2.2. Phát hiện và phân tích yêu cầuSau khi có phương án khả thi cần tiếp tục thu thập thông tin với sự góp mặt của các

 bên liên quan (stakeholder), nhận biết yêu cầu, phân tích chúng. Phân tích yêu cầu là mộtquá trình khó khăn, các nhà phát triển phải hiểu các yêu cầu của những bên liên quan, dịchchúng sang một hình thức thể hiện thống nhất. Mỗi hệ thống đều có những đặc trưng riêngtạo nên sự khó khăn khi thiết lập các yêu cầu, đòi hỏi việc xử lý thông tin của người pháttriển luôn bổ sung hoàn thiện.

Tiến trình phát hiện và phân tích yêu cầu- Tìm hiểu miền ứng dụng: bao gồm các hoạt động nghiệp vụ, nôi dung của nó, các

qui tắc nghiệp vụ cần tuân thủ, các sản phẩm, lĩnh vực liên quan.

- Thu thập yêu cầu: là quá trình giao tiếp với các bên liên quan để phát hiện các yêucầu của họ đối với hệ thống.- Phân loại yêu cầu- Giải quyết xung đột- Sắp xếp ưu tiên- Kiểm tra yêu cầu.

Tiến trình trên đây có thể được phát triển lặp.

13

Page 14: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 14/38

 

2.2.3. Các kỹ thuật phân tích yêu cầu-  Kỹ thuật phân tích yêu cầu dựa trên mô hình

Phân tích dựa trên mô hình được sử dụng rộng rãi để phân tích yêu cầu. Các phântích dựa trên mô hình điển hình đi theo hai hướng tiếp cận: hướng chức năng và hướng đốitượng.

Để phát hiện các yêu cầu cả hai cách tiếp cận đều tập trung mô tả nghiệp vụ của hệthống thực và kết quả thu được là mô hình nghiệp vụ. Mô hình nghiệp vụ được xây dựngtrên cơ sở của phương pháp phân tích hệ thống bao gồm:

o  Mô hình ngữ cảnh mô tả hệ thống được xem xét trong môi trường của nó,chú y đến các tác nhân. Thông qua mô hình này cho phép xác định phạm vicủa hệ thống cần nghiên cứu. Tùy theo cách tiếp cận mà các tác nhân vàmối quan hệ tương tác của hệ thống được mô tả bằng các cách khác nhau.

o Các mô hình cấu trúc chức năng mô tả cấu trúc các chức năng bên trong hệthống. Các mô hình này thường có nhiều mức.

o  Mô tả chi tiết các chức năng thường được sử dụng đối với các chức năng ở mức thấp (trong mô hình phân cấp chức năng), nhưng cũng có thể mô tả

chưc năng ở mức cao để dễ hiểu và lần vết trong quá trình tiếp cận.o  Mô tả các đối tượng dữ liệu. Theo hướng cấu trúc, mô tả dữ liệu bao gồm

tất cả các hồ sơ được sử dụng trong hoạt động nghiệp vụ và các bản mẫuthực của chúng.Còn theo đối tượng, mô tả bao gồm các đối tượng và kháiniệm của thế giới thực.

o  Mô tả mối liên kết giữa dữ liệu và chức năng o Từ điển giải thích

-  Kỹ thuật phân tích hình thức hóaKỹ thuật phân tích hình thức hóa dựa trên việc sử dụng các khái niệm, ký pháp và môhình toán học để phân tích và biểu diễn hệ thống. Kết quả của hoạt động phân tích là bản đặc tả yêu cầu hệ thống.

2.2.4. Sự tiến hóa và quản lý yêu cầuTrong quá trình phân tích yêu cầu và phát triển hệ thống, các yêu cầu có thể thay

đổi vì nhiều lý do như môi trường hay bản thân khách hàng. Vậy nên tiến hóa yêu cầu làmột nhu cầu khách quan. Có thể chia thành hai loại yêu cầu:

- Yêu cầu lâu dài là những yêu cầu ổn định- Yêu cầu dễ thay đổi là những yêu cầu thường bị thay đổi trong quá trình phát triển

hoặc sau khi đưa hệ thống vào hoạt động.Để quản lý yêu cầu cần lập kế hoạch, trong đó cần thực hiện:- Định danh các yêu cầu, mỗi yêu cầu phải có định danh duy nhất.- Định ra tiến trình quản lý thay đổi: là tập các hoạt động đánh giá tác động và chi

 phí của các thay đổi, bao gồm: phân tích và đặc tả các thay đổi, dự toán chi phí,triển khai thay đổi.

- Có một chiến lược lần vết: chiến lược này cho phép ghi nhận được mối quan hệgiữa các yêu cầu, yêu cầu với hệ thống và cách thức bảo trì thường xuyên chúngthế nào.

14

Page 15: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 15/38

 

2.3.Đặc tả yêu cầu

2.3.1. Khái niệm đặc tả yêu cầuĐặc tả yêu cầu là quá trình bổ sung các thông tin vào tài liệu xác định yêu cầu và

 phát triển các mô hình phân tích. Nó rất quan trọng vì chi phí cho việc sửa đổi các yêu cầu

sẽ rất cao, đặc biệt nếu các sai sót còn chưa được phát hiện trước khi hệ thống được bàngiao. Việc tìm ra các phương pháp và công cụ đặc tả được đặt ra và không ngừng hoànthiện.

 Ngôn ngữ tự nhiên thường được sử dụng để đặc tả, tuy nhiên nó có một số nhượcđiểm: không hoàn toàn xác định, quá mềm dẻo, khó phân chia yêu cầu một cách hiệu quả.Do đó, nhiều phương pháp khác được nhiên cứu để đặc tả, đó là:

- Ngôn ngữ tự nhiên có cấu trúc-  Ngôn ngữ mô tả chương trình – PDL(Program Description Language)PDL tương tự như một ngôn ngữ lập trình nhưng nó trừu tượng hơn, có nhiều tính năngđặc tả hơn ngôn ngữ tự nhiên có cấu trúc. Đặc tả có thể kiểm tra được lỗi cú pháp vàngữ nghĩa bằng các công cụ phần mềm. PDL thích hợp trong các trường hợp: các thao

tác được xác định là một chuỗi các hành động đơn giản và thứ tự thực hiện là quantrọng, hoặc sử dụng để đặc tả giao diện giữa phần cứng và phần mềm, giữa các hệthống con trong một hệ thống.- Ngôn ngữ đặc tả yêu cầu- Đặc tả dựa trên mô hình với ký pháp đồ họa- Đặc tả hình thức hóa

2.3.2. Đặc tả yêu cầu dựa trên mô hình-  Đặc tả dữ liệu hướng cấu trúc – Mô hình thực thể-quan hệMô hình thực thể-quan hệ (ERM-Entity-Relationships Model) được Chen đề xuất năm1976, Chouinard bổ sung và mở rộng năm 1989. Nó mô tả dữ liệu của thế giới thực

đúng như nó tồn tại. ERM được sử dụng như là phương tiện giao tiếp với người sửdụng để xác định và mô tả đúng và đầy đủ các yêu cầu thông tin hệ thống.Các thành phần chính của mô hình:

o Thực thể (entity): là khái niệm chỉ một lớp các đối tượng hay khái niệm độclập của thế giới thực có những đặc trưng chung, ví dụ: khách hàng, sách,hóa đơn…

o Quan hệ (relationship): là khái niệm chỉ mối quan hệ vốn có giữa các bảnthể của các thực thể, ví dụ: mua, mượn, dạy,…

o Thuộc tính (attribute) là đặc trưng của thực thể hay mối quan hệ của thựcthể, ví dụ: tên hàng, mã sách,…

Các bước xây dựng mô hình:o Bước 1: Xét từng hồ sơ gồm: liệt kê, chính xác hóa, chọn lọc cá mục tin

trong các hồ sơ để được bảng các mục tin cơ sở o Bước 2: Sử dụng bảng danh sách mục tin cơ sở để xác định các thực thể và

thuộc tính của nó.o Bước 3: Xác định mối quan hệ giữa các thực thểo Bước 4: Vẽ biểu đồ của mô hìnho Bước 5: Rút gọn mô hình và xác định các bản số của thực thể.

15

Page 16: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 16/38

 

-  Đặc tả xử lý hướng cấu trúc – Mô hình luồng dữ liệuMô hình luồng dữ liệu (DFD- Data Flow Diagram) xuất hiện ở thập kỷ 80, nó biểu

diễn quá trình di chuyển của dữ liệu và biến đổi trong hệ thống từ vị trí đầu vào tới đầu ra.DFD mô tả toàn bộ quá trình vận hành của hệ thống để thực hiện các chức năng hay dịchvụ mà nó đảm nhận. DFD sử dụng các khái niệm: luồng dữ liệu, tác nhân, kho dữ liệu, tiến

trình. Biểu đồ luồng dữ liệu đặc tả hệ thống gồm một số biểu đồ ở các mức khác nhau(0,1,2,3,…), đầu vào là mô hình nghiệp vụ:

o Biểu đồ mức 0 nhận được bằng cách làm mịn biểu đồ ngữ cảnh và sử dụngcác thành phần khác nhau của mô hình nghiệp vụ. Bao gồm việc thay thếtiến trình của biểu đồ ngữ cảnh bằng các tiến trình con (lấy từ biểu đồ phânrã chức năng), thêm vào các kho dữ liệu (lấy từ danh sách hồ sơ) và cácluồng dữ liệu.

o Biểu đồ mức i (i>0) nhận được bằng cách làm mịn các tiến trình của biểuđồ mức i-1 khi nó chưa phải là tiến trình sơ cấp.

-  Đặc tả hành vi hướng đối tượng – Biểu đồ phân tích tương tác

Biểu đồ đặc tả hành vi đối tượng nhận được từ việc phân tích thực hiện từng use-case thuộc các gói use-case đã xét trong mô hình nghiệp vụ phân tích. Thực thi use-case phân tích là mô tả sự cộng tác giữa các phần tử trong mô hình để thực hiện chức năng củamột use-case cụ thể và thể hiện dưới dạng các lớp phân tích và các đối tượng của nó tươngtác với nhau. Các lớp phân tích có ba dạng lớp cơ bản: lớp biên, lớp điều khiển, lớp thựcthể.

Các bước xây dựng biểu đồ phân tícho Xác định các lớp phân tích, ví dụ: các lớp phân tích tham gia vào use-case

“rút tiền”: máy trả tiền, thủ quỹ (lớp biên), điều khiển rút tiền (lớp điềukhiển), tài khoản (lớp thực thể).

o Xác định mối liên kết giữa các lớp phân tích với các tác nhân

o Mô tả luồng sự kiện phân tích: bổ sung thêm các mô tả văn bản giải thích,mũi tên vào biểu đồ.

o Phân tích xác định trách nhiệm của lớp trong sự cộng tác thực thi use-caseo Xác định thuộc tính của các lớpo Xác định các liên kết và kết hợpo  Nắm bắt các yêu cầu đặc biệt của lớp phân tích.o Phân tích để nhóm các lớp thành các gói.

2.4.Thẩm định yêu cầu

2.4.1. Khái niệm thẩm định yêu cầuThẩm định yêu cầu là xem xét xem đặc tả yêu cầu có thực sự xác định được hệ

thống mà khách hàng mong muốn hay không. Nó khác với phân tích yêu cầu ở chỗ nó trútrọng đến một số tính chất của đặc tả có ảnh hưởng lớn đến hoạt động thiết kế và bảo trì hệthống sau này. Khi thẩm định yêu cầu, những tính chất sau đây của yêu cầu phải đượckiểm tra:

- Tính đúng đắn (validity): hệ thống cần bao quát được các nhu cầu khác nhau củangười dùng, yêu cầu phải đáp ứng được cả cộng đồng người sử dụng.

16

Page 17: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 17/38

 

- Tính nhất quán (consistency): mọi yêu cầu không được phép xung đột với bất kỳyêu cầu nào khác.

- Tính đầy đủ (completeness): phải xác định được mọi chức năng và ràng buộc màngười sử dụng hệ thống mong muốn.

- Tính hiện thực (realism): không có một đặc điểm nào trong đặc tả yêu cầu là không

thể thực hiện được.- Tính kiểm tra được (verifiability)

2.4.2. Một số kỹ thuật thẩm định yêu cầu-  Rà soát yêu cầu

Rà soát yêu cầu được các đội rà soát phân tích một cách có hệ thống, nó có thể diễnra chính thức hoặc không chính thức. Duyệt lại yêu cầu một cách không chính thức chỉđơn giản đòi hỏi người phát triển hệ thống thảo luận yêu cầu với khách hàng để pháthiện các vấn đề thường nhật. Để rà soát yêu cầu một cách chính thức, người sử dụng phải duyệt các yêu cầu của hệ thống, và đội phát triển phải giải thích nội dung của mỗiyêu cầu. Mỗi yêu cầu được kiểm tra về tính nhất quán, tính đầy đủ, tính kiểm tra được,

tính hiểu được (comprehensibility), tính lần vết được (traceability), tính thích nghiđược (adaptibility) (có nghĩa là thay đổi mà không gây ảnh hưởng lớn đến các yêu cầukhác).

Xung đột, mâu thuẫn, lỗi và thiếu sót trong yêu cầu cần được phát hiện và ghi nhậntrong quá trình rà soát, người dùng và người phát triển hệ thống cần thỏa thuận giải pháp cho các vấn đề được phát hiện ra.-  Làm bản mẫuLàm bản mẫu là một kỹ thuật thẩm định yêu cầu rất quan trọng, nhờ nó mà mô hình hệthống có thể trình diễn cho người sử dụng. Việc xem xét lại yêu cầu theo thủ tục đòihỏi sự tham gia của cả người sử dụng và kỹ sư phần mềm trong quá trình chuẩn bị vàtrình bày tài liệu yêu cầu với sự trợ giúp của các bản mẫu.

2.5.Đặc tả hệ thống và làm bản mẫu

2.5.1. Tiến trình làm bản mẫu phần mềmViệc phát triển bản mẫu thực thi từ giai đoạn sớm của tiến trình phần mềm sẽ đem

lại những lợi ích thiết thực:- Khắc phục sự hiểu lầm giữa người phát triển và người sử dụng.- Phát hiện sự thiếu hụt các dịch người dùng.- Nhận ra sự khó sử dụng hoặc sự nhầm lẫn dịch vụ người dùng.- Giúp đội ngũ phát triển tìm ra những yêu cầu không đầy đủ hoặc thiếu nhất quán.- Giúp thuyết minh tính khả thi và tính hữu dụng của hệ thống đối với nhà quản lý.

- Bản mẫu làm cơ sở cho việc viết đặc tả phần mềm.- Sử dụng để huấn luyện người dùng.- Sử dụng trong quá trình kiểm thử.Tiến trình phát triển bản mẫu gồm bốn bước:- Thiết lập các mục tiêu của việc tạo mẫu- Chọn các chức năng cho việc tạo bản mẫu và quyết định những đặc tả phi chức

năng nào cần phải tạo bản mẫu.- Phát triển bản mẫu.

17

Page 18: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 18/38

 

- Đánh giá bản mẫu.

2.5.2. Tạo bản mẫu trong tiến trình phần mềm

2.5.3. Các kỹ thuật tạo bản mẫu

Các kỹ thuật tạo mản mẫu hệ thống cho phép phát triển nhanh một bản mẫu hệ thống.Một số kỹ thuật được sử dụng để tạo bản mẫu:- Sử dụng ngôn ngữ đặc tả thi hành được- Sử dụng ngôn ngữ bậc rất cao- Sử dụng ngôn ngữ bậc cao hướng ứng dụng (ngôn ngữ thế hệ thứ tư)- Lắp ghép từ các thành phần dùng lại được.

18

Page 19: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 19/38

 

Chương 3. Thiết kế phần mềm

3.1.Tổng quan về thiết kế phần mềm

3.1.1. Khái niệm và vai trò của thiết kế-  Khái niệm thiết kế 

Thiết kế phần mềm là quá trình chuyển hóa các đặc tả yêu cầu phần mềm thànhmột biểu diễn thiết kế của hệ thống phần mềm cần xây dựng, sao cho người lập trìnhcó thể ánh xạ nó thành chương trình.

Quá trình thiết kế nhằm tạo ra một mô hình sản phẩm mới thông qua tìm hiểu vàvận dụng các giải pháp công nghệ. Nó là một quá trình sáng tạo, đòi hỏi kinh nghiệmvà sự nhạy bén của người thiết kế.

Thông thường yêu cầu phần mềm được mô tả ở mức quan niệm (các dịch vụ cầncung cấp, các ràng buộc cần tuân thủ), nhiệm vụ của kỹ sư phần mềm là chuyển nhữngyêu cầu này thành một mô tả về hệ thống phần mềm với các giải pháp công nghệ thích

hợp. Người thiết kế phải thực hiện các công việc:o  Nghiên cứu để hiểu vấn đềo Chọn một số giải pháp thiết kế và xác định các đặc điểm thô của nó.o Mô tả trừu tượng cho mỗi giải pháp cụ thể.

- Vai trò của thiết kế o Thiết kế là cơ sở cho việc triển khai chương trình phần mềmo Tài liệu thiết kế là công cụ giao tiếp giữa các nhóm cùng tham gia phát triển

sản phẩm, giúp quản lý rủi ro, đạt đến phần mềm có hiệu quảo Thiết kế phần mềm cung cấp tài liệu đầy đủ để bảo trì hệ thống sau này.

Một thiết kế phần mềm khó xác định được chất lượng chừng nà nó chưa vận hành,nên thiết kế tốt là chìa khóa cho kỹ nghệ phần mềm hữu hiệu. Không thể hình thức hóamọi quá trình thiết kế đối với bất kỳ sản phẩm phần mềm nào .

- Các khái niệm trong thiết kế Bất kể phương pháp luận thiết kế nào, các khái niệm dưới đây cũng cần thiết cho

việc mô tả nội dung thiết kế:o Trừu tượng: là sự mô tả một cách khái quát một đối tượng thực, bỏ qua

nhiều yếu tố không quan trọng của nó. Nhờ có nó mà ta có thể nghiên cứucác đối tượng của thế giới thực thông qua các mô hình của chung. Có nhiềumức trừu tượng khác nhau: mức cao nhất, mức vừa, mức thấp. Có các dạngtrừu tượng như: trừu tượng thủ tục, trừu tượng dữ liệu, trừu tượng điềukhiển.

o Phân rã: là phân chia một đối tượng thành những đối tượng nhỏ hơn mà vốnchúng đã tồn tại, giúp làm giảm độ phức tạp của vấn đề.

o Làm mịn: là một chiến lược thiết kế từ trên xuống. Bắt đầu từ phát biểu vềchức năng ở mức cao nhất, sau đó chi tiết dần cho đến khi có thể biểu diễnchúng bằng ngôn ngữ lập trình.

o Môđun: phần mềm được chia thành nhiều thành phần riêng có tên và địa chỉxác định gọi là môđun. Với môđun, chương trình dễ quản lý hơn, nhiều vấn

19

Page 20: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 20/38

 

đề được giải quyết tốn ít công sức hơn. Tuy nhiên cần thiết kế môđun mộtcách có hiệu quả để tổng chi phí phát triển phần mềm là thấp nhất.

o Thủ tục phần mềm: mô tả chi tiết các bước xử lý cho từng môđun, nó đặc tảquá trình xử lý, đầu vào, đầu ra, trình tự các sự kiện, các điều kiện rẽ nhánhhoặc điều kiện lặp, có thể cả cấu trúc/tổ chức dữ liệu.

o Che dấu thông tin: các môđun nên được thiết kế sao cho dấu kín dữ liệu đốivới mọi môđun khác.

3.1.2. Triển khai thiết kế- Tiến trình thiết kết 

Thiết kế bắt đầu từ bước phác thảo phi hình thức, thiết kế phi hình thức, các thiếtkế hình thức hơn và thiết kế chi tiết cuối cùng. Tiếp cận hệ thống thường đi từ trênxuống, nhưng khi thiết kế thì thường thực hiện từ dưới lên. Tiến trình thiết kế được lặpcho tới khi các thành phần hợp thành của mỗi hệ con được xác định đều có thể ánh xạtrực tiếp vào các thành phần biểu diễn bằng ngôn ngữ lập trình.- Các hoạt động và sản phẩm thiết kế 

Dựa trên đặc tả yêu cầu, thiết kế một hệ thống lớn thường bao gồm các hoạt động:o Thiết kế kiến trúc: xác định các hệ con tạo nên hệ thống tổng thể và mối

quan hệ giữa chúng.o Đặc tả trừu tượng: đối với mỗi hệ con, cần mô tả trừu tượng các dịch vụ mà

nó cần cung cấp và các ràng buộc.o Thiết kế giao diện thành phần: thiết kế các giao diện của từng hệ con với

các hệ con khác, với các hệ thống khác (từ môi trường) sao cho có thể sửdụng hệ con khác thông qua giao diện mà không cần biết nó sẽ thực hiệnthế nào, nhờ đó có thể phát triển các hệ con một cách độc lập.

o Thiết kế cấu trúc dữ liệu: Thiết kế cấu trúc dữ liệu lưu trữ và đặc tả các cấutrúc dữ liệu sử dụng trong thực thi hệ thống.

o Thiết kế hệ thống giao diện người dùng: Thiết kế các giao diện bên ngoàimà qua đó người dùng có thể sử dụng hệ thống.

o Thiết kế thành phần: phân chia các dịch vụ mà một hệ con cung cấp vào cácthành phần hợp thành của nó.

o Thiết kế thủ tục: thiết kế đặc tả các thuật toán, qui trình dùng để thực thi cácdịch vụ của mỗi thành phần sao cho có thể ánh xạ trực tiếp vào ngôn ngữlập trình.

-  Biểu diễn thiết kế Một bản thiết kế phần mềm là một mô hình mô tả một đối tượng của thế giới thực

với nhiều thành phần và các mối quan hệ giữa chúng với nhau. Có ba hình thức biểudiễn thiết kế:

o Các biểu đồ: được dùng để thể hiện các mối quan hệ giữa các thành phầnlập nên hệ thống và mô tả thế giới thực.

o  Ngôn ngữ mô tả chương trình: dùng để kiểm tra và xây dựng cấu trúcchương trình.

o Dạng văn bản không hình thức hóa: mô tả các thông tin không thể hình thứchóa được như các thông tin phi chức năng bên cạnh các cách mô tả khác.

- Các giai đoạn thiết kế 

20

Page 21: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 21/38

 

Có thể nhìn nhận tiến trình phần mềm theo những cách nhìn khác nhau: theo ngườiquản lý, theo nhà phát triển, theo mức độ hình thức hóa. Theo quan điểm quản lý, thiếtkế chia làm hai giai đoạn: thiết kế sơ bộ và thiết kế chi tiết. Thiết kế sơ bộ là thiết kếkiến trúc tổng thể. Giai đoạn tiếp theo là thiết kế chi tiết gồm: thiết kế logic và thiết kếvật lý.

o Thiết kế logic: xác định cấu trúc thiết kế logic mô tả các thành phần của hệthống và các mối quan hệ giữa chúng mà không gắn với bất kỳ một phươngtiên vật lý nào.

o Thiết kế vật lý: chọn các giải pháp công nghệ hữu hiệu để thực hiện các cấutrúc logic đã cho phù hợp với điều kiện của môi trường đích dự kiến.

3.1.3. Các chiến lược và phương pháp thiết kế- Chiến lược và phương pháp hướng cấu trúcTheo cách tiếp cận hướng cấu trúc, hệ thống được phân chia thành các chức năng, bắtđầu ở mức cao nhất, sau đó làm mịn dần dần để thành thiết kế với các chức năng chitiết hơn. Trạng thái của hệ thống thể hiện qua cơ sở dữ liệu chung và được chia sẻ cho

các chức năng thao tác trên nó. Thường có hai hoạt động độc lập là: thiết kế dữ liệu vàthiết kế xử lý. Sau giai đoạn phân tích, đặc tả yêu cầu là thiết kế dữ liệu từ đó xây dựngcơ sở dữ liệu dùng chung, tiếp đó là thiết kế xử lý được xây dựng trên cơ sở dữ liệu đãcó.- Chiến lược và phương pháp hướng cấu trúc

Theo cách tiếp cận hướng đối tượng, hệ thống được nhìn nhận như một bộ các đốitượng tương tác với nhau. Mỗi đối tượng bao hàm trong nó cả dữ liệu và các thao tác thựchiện trên chúng. Đối tượng là thể hiện của một lớp, nó được xác định bởi các thuộc tính vàcác phương thức. Thuộc tính xác định trạng thái đối tượng, phương thức của nó thao tácvới các dữ liệu của thuộc tính. Các lớp có thể kế thừa từ một vài lớp đối tượng cao hơn.Các đối tượng liên lạc với nhau chỉ bằng cách trao đổi các thông điệp để cộng tác thực hiện

một dịch vụ chung.

3.1.4. Chất lượng thiết kế và các giải pháp đảm bảo chất lượngKhông có một hệ tiêu chuẩn chính xác để xác định được thế nào là một thiết kế tốt.

Thiết kế tốt phải cho phép sinh mã hiệu quả, tối thiểu hóa công sức chuyển thành chươngtrình, dễ bảo trì… Thiết kế tốt ngoài đáp ứng yêu cầu người dùng, còn phải giúp bảo trì đểcó thể thích nghi được với việc cải biên các chức năng. Do đó, các thành phần cần có mốiquan hệ logic chặt chẽ. Các thành phần phải tương đối độc lập để làm giảm ảnh hưởng khicó sự sửa đổi một thành phần. Vì vậy, kết dính chặt và hép nối lỏng lẻo là hai tiêu chí quantrọng của chất lượng thiết kế.

- Tính kết dính (cohesion)

Sự kết dính của một thành phần là độ đo về tính gắn kết chặt chẽ với nhau giữa các bộ phận của nó. Page Jones (1980) đưa ra bảy mức kết dính theo thứ tự tăng dần:

o Kết dính gom góp: các thành phần không liên quan bị bó vào một phần.o Kết dính hội hợp logic: các thành phần cùng thực hiện các chức năng tương

tự được ghép vòa một phần.o Kết dính theo thời điểm: tất cả các thành phần cùng thời điểm bắt đầu và

kết thúc được ghép lại với nhau.

21

Page 22: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 22/38

 

o Kết dính thủ tục: các phần tử trong thành phần được ghép lại trong một dãyđiểu khiển.

o Kết dính truyền thông: các phần tử của thành phần cùng thao tác trên mộtdữ liệu vào và đưa ra cùng một dữ liệu ra.

o Kết dính tuần tự: trong một thành phần, đầu ra của phần tử này là đầu vào

của phần tử khác.o Kết dính chức năng: mỗi phần của thành phần đều là cần thiết để thực hiện

cùng một chức năng nào đó. Ngoài ra, còn có kết dính đối tượng: mỗi phép toán thực hiện một chức năng,các chức năng này chỉ tác động lên các thuộc tính của đối tượng, sử dụng chúnglàm cơ sở cho việc cung cấp các dịch vụ của đối tượng.

-  Độ kết nối Ghép nối chỉ ra mức độ độc lập giữa các đơn vị thành phần của một chương trình.

Sự ghép nối của một thành phần với các thành phần khác thể hiện bằng số lượng mối liênkết phụ thuộc giữa nó với các thành phần khác, cũng như bản chất của các mối quan hệ đó.Page Jones cũng đã giới thiệu năm loại ghép nối theo thứ tự từ tốt đến xấu:

o Ghép nối dữ liệu: các môđun truyền thông tin với nhau bằng các phần tử dữliệu hay thông tin điều khiển và không biết những gì diễn ra trong cácmôđun khác.

o Ghép nối nhãn: các dữ liệu được gửi đi là những cấu trúc dữ liệu hoặc toàn bộ bản ghi. Sự thay đổi trong cấu trúc dữ liệu sẽ tác động lên mọi môđun sửdụng nó.

o Ghép nối điều khiển: Điều khiển được thực hiện bằng cách một môđun gửiđi thông tin điều khiển đến một môđun khác.

o Ghép nối chung: khi hai môđun tham chiếu đến cùng một dữ liệu tổng thể.o Ghép nối nội dung: xảy ra khi một môđun trực tiếp tham chiếu đến hoạt

động của một môđun khác.- Tính hiểu được

Tính hiểu được liên quan đến một số đặc trưng như: tính kết dính, đặt tên, soạn tưliệu, độ phức tạp.

- Tính thích nghi đượcMột thiết kế dễ bảo trì thì phải có tính thích nghi tốt. Tư liệu được soạn phải dễ

hiểu, nhất quán với quá trình thực thi. Cấu trúc hệ thống cần rõ ràng, thể hiện từng bướcqua việc làm mịn các biểu đồ từ mức này sang mức sau, để có thể lần vết được.

- Các giải pháp cho một thiết kế tốt Về nguyên tắc, để đảm bảo chất lượng thiết kế cần có một hệ các tiêu chuẩn cho

thiết kế. Tuy nhiên điều này là không đơn giản, thay vào đó người ta đưa ra các hướng dẫnđể đạt được một mức độ chất lượng nhất định.

o Những nguyên lý thiết kế cần vận dụng:1. Không ràng buộc tiến trình thiết kế trong một cái nhìn hẹp, 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ác nguồn lự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 đó.3. Thiết kế không nên tìm giải pháp cho những vấn đề đã được giải quyết, nên sử

dụng các mẫu đã gặp để cấu trúc hệ thống.4. Thiết kế phải rút ngắn được khoảng cách giữa phần mềm và vấn đề tồn tại trong

thế giới thực.

22

Page 23: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 23/38

 

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, và ngược lại.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 phát triển.

o Những hướng dẫn nên vận dụng trong thiết kế1. Tổ chức phân cấp để dễ kiểm soát các thành phần2. Tổ chức theo môđun để phân hoạch một cách logic các thành phần thực hiện

những chức năng và chức năng con.3. Sử dụng các biểu diễn phân biệt và tách biệt giữa dữ liệu và thủ tục.4. Tổ chức các môđun dùng chung cho các chức năng đặc trưng đặc biệt.5. Hình thành giao diện để rút gọn độ phức tạp của việc ghép nối giữa các môđun

với môi trường bên ngoài cũng như giữa chúng với nhau.6. Sử dụng lại các thành phần phần mềm đã có, trong đó có các mã nguồn, mẫu

thiết kế…

3.2.Thiết kế kiến trúc3.2.1. Kiến trúc phần mềm và vai trò của nó

-  Định nghĩa kiến trúc:Kiến trúc phần mềm chỉ ra một cấu trúc tổng thể của phần mềm và qua đó cung cấp

một sự tích hợp về mặt khái niệm của một hệ thống. Ở dạng đơn giản nhất, kiến trúc là cấutrúc phân cấp của các thành phần chương trình, qua đó thể hiện sự tương tác giữa chúngvới nhau và các cấu trúc dữ liệu mà nó sử dụng. Theo nghĩa rộng, kiến trúc biểu diễn cácthành phần lớn, cốt lõi của hệ thống và mối quan hệ giữa chúng với nhau được nhìn nhậntheo những quan điểm khác nhau (cấu trúc, hành vi, dữ liệu…)

- Vai trò của kiến trúc

Kiến trúc có vai trò quan trọng trong phát triển phần mềm, nó là công cụ giao tiếpgiữa các bên liên quan, được sử dụng để phân tích hệ thống và giúp sử dụng lại ở qui môlớn. Kiến trúc là một mô tả về phần mềm cho phép các kỹ sư phần mềm tăng cường hiểu biết về hệ thống cần xây dựng, phân tích đưa ra giải pháp hiệu quả, xem xét, sửa đổi kiếntrúc từ sớm, giảm rủi ro.

3.2.2. Các mô hình kiến trúcKiến trúc phần mềm được mô tả ở dạng các mô hình khác nhau Các mô hình kiến

trúc được phát triển dưới các cách nhìn khác nhau. Mô hình kiến trúc tĩnh chỉ ra các hệ cônhay các thành phần độc lập. Mô hình tiến trình động mô tả hệ thống như các tiến trình vậnhành. Mô hình giao diện xác định giao diện giữa các hệ con. Và mô hình liên kết chỉ ra mối

liên kết giữa các thành phần.- Các kiến trúc theo cách tổ chức dữ liệu: mô hình kho dữ liệu (tổ chức dữ liệu tập

trung), mô hình client/server (tổ chức dữ liệu phân tán)- Các mô hình điều khiển: mô hình điều khiển tập trung (mô hình call-return, mô

hình manager), mô hình điều khiển dựa trên sự kiện (mô hình quảng bá, mô hìnhđiều khiển ngắt).

23

Page 24: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 24/38

 

3.2.3. Tiến trình thiết kế kiến trúcTiến trình xác định các hệ con của một hệ thống và thiết lập khung làm việc cho

việc điều khiển và giao tiếp giữa chúng gọi là thiết kế kiến trúc, kết quả là tài liệu thiết kếkiến trúc. Thiết kế kiến trúc tập trung vào việc biểu diễn cấu trúc các thành phần phầnmềm, các thuộc tính của nó và tương tác giữa chúng. Những hoạt động chung cho mọi tiến

trình là:- Cấu trúc hệ thống: một hệ thống được cấu trúc thành một số hệ con.- Mô hình hóa điều khiển: thiết lập mô hình chung mô tả mối quan hệ điều khiển

giữa các phần trong hệ thống.- Phân rã các môđun: mỗi hệ con được phân rã thành các môđun. Kiến trúc này cần

chỉ ra các loại môđun và liên kết giữa chúng.Thiết kế kiến trúc có thể dựa trên một hoặc một số mô hình kiến trúc cụ thể. Để sử

dụng chúng cần nhận biết những mặt mạnh, mặt yếu của mỗi mô hình. Trên thực tế, hệthống lớn không phù hợp với mô hình kiến trúc đơn, các phần của nó có thể được thiết keétừ các mô hình kiến trúc khác nhau.

3.3.Thiết kế hệ thống hướng chức năngThiết kế hướng chức năng là một giai đoạn của chiến lược phát triển định hướng

chức năng. Đầu vào của hoạt động thiết kế là các mô hình nhận được ở giai đoạn phân tích.Tiến trình thiết kế bắt đầu với thiết kế logic, sau đó là thiết kế vật lý.

3.3.1. Thiết kế dữ liệu- Thiết kế dữ liệu logicĐầu vào của thiết kế dữ liệu logic là mô hình quan hệ-thực thể. Tiến trình bao gồmnhững hoạt động sau: biểu diễn các thực thể -> biểu diễn các mối quan hệ -> chuẩn hóacác quan hệ -> vẽ biểu đồ của mô hình -> mô hình dữ liệu quan hệ.- Thiết kế cơ sở dữ liệu vật lý Trên cơ sở mô hình quan hệ nhận được, lựa chọn hệ quản trị cơ sở dữ liệu, tiến hành phi chuẩn hóa để được số các quan hệ ít nhất nhưng vẫn đủ thông tin và có cấu trúc tốt(ít nhất chuẩn 3). Tiếp theo là thiết kế các tệp, trong đó tệp chính (master file) nhậnđược từ các quan hệ đã phi chuẩn hóa.

3.3.2. Thiết kế xử lý- Thiết kế xử lý logicXuất phát từ luồng dữ liệu vật lý, khi bỏ đi các yêu tố vật lý và cấu trúc lại để mô hìnhvẫn đảm bảo thực hiện các chức năng.- Thiết kế xử lý vật lý Trước hết cần xác định luồng hệ thống từ biểu đồ luồng dữ liệu, thay các kho dữ liệu

liên quan bằng các tệp tương ứng. Khi ánh xạ biểu đồ luồng hệ thống sang kiến trúcmôđun ta được cấu trúc môđun thành phần.

3.3.3. Ưu nhược điểm của thiết kế hướng cấu trúcThiết kế hướng cấu trúc đã phát triển hơn 30 năm qua, nên các phương pháp thiết

kế cũng như những công cụ trợ giúp đã đạt đến mức độ hoàn thiện, đặc biệt có những hệcơ sở dữ liệu mạnh như Oracle, SQLServer… trợ giúp việc lưu trữ và khai thác ở mức độ

24

Page 25: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 25/38

 

tự động hóa cao. Nó rất thích hợp với các bài toán xử lý trên các dữ liệu có thể mô tả ở dạng bảng. Với các bài toán dữ liệu đa dạng và đòi hỏi sự tương tác của nhiều đối tượngthì phương pháp này không thích hợp. Do hệ thống sử dụng cơ sở dữ liệu dùng chung nênkhó sử dụng lại và sai sót ở một số bộ phận có thể lan truyền sang các phần khác của hệthống.

3.4.Thiết kế hệ thống hướng đối tượng

3.4.1. Một số khái niệm của UML Ngôn ngữ mô hình hóa thống nhất (UML) là ngôn ngữ chuẩn dùng cho phát triển

 phần mềm hướng đối tượng. Nó là ngôn ngữ mô hình hóa đồ họa, trực quan, là ngôn ngữđặc tả có cấu trúc và ngôn ngữ làm tài liệu.

Trong UML, khái niệm lớp (class) để đặc tả các đối tượng có những đặc tính chung(thuộc tính, hành động). Nó được biểu diễn bằng hình chữ nhật, chia làm ba phần: tên,thuọc tính và các toán tử thao tác trên các dữ liệu thuộc tính của nó. Các lớp có thể có mộtsố quan hệ với nhau: quan hệ phụ thuộc, quan hệ kế thừa, quan hệ kết hợp hay kết tập.

UML cung cấp các loại biểu đồ cho phép đặc tả các mô hình khác nhau của hệ thốnghướng đối tượng.

3.4.2. Tiến trình thiết kế hướng đối tượngThiết kế hướng đối tượng là một giai đoạn của chiến lược phát triển định hướng

đối tượng. Đầu vào cho hoạt động thiết kế là các mô hình nhận được ở giai đoạn phân tích.Tiến trình thiết kế có thể mô tả khái quát như sau:

- Xác định kiến trúc của hệ thống- Sắp thứ tự ưu tiên các gói- Với mỗi gói, xác định các lớp phân tích trong những ca sử dụng thuộc gói.- Xây dựng biểu đồ tương tác giữa các lớp.

- Thiết kế chi tiết các lớp- Phân tích và hoàn thiện biểu đồ lớp dựa trên các mẫu thiết kế.

3.4.3. Các ưu điểm của thiết kế hướng đối tượng- Thiết kế hướng đối tượng dễ bảo trì- Các đối tượng là các thành phần có thể dùng lại được- Thiết kế có tính dễ hiểu.

3.5.Thiết kế giao diện người-máy

3.5.1. Vai trò của giao diện người-máy

Giao diện người-máy là phương tiện giúp người dùng giao tiếp và sử dụng hệthống máy tính. Giao diện khó sử dụng sẽ dễ tạo sai lầm cho người sử dụng. Giao diện tốtlà một yếu tố dẫn đến thành công của hệ thống.

Giao diện người-máy đã tiến hóa qua các thế hệ: giao diện chỉ lệnh và hỏi, giaodiện menu đơn giản, giao diện đồ họa. Giao diện đồ họa là rất phổ biến hiện nay, nó cho phép hiển thì nhiều kiểu thông tin khác nhau.

25

Page 26: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 26/38

 

3.5.2. Các nguyên tắc thiết kế giao diện người-máyThiết kế giao diện người sử dụng phải lấy con người làm trung tâm. Một số nguyên

tắc chính cho thiết kế giao diện cần đảm bảo:- Tính quen thuộc với người dùng- Tính nhất quán

- Giảm thiểu những điều gây ngạc nhiên- Có khả năng phục hồi (có các cơ chế cho phép khôi phục lại trạng thái trước khi

gặp lỗi)- Hướng dẫn có người dùng sử dụng- Đa dạng người dùng.

3.5.3. Tiến trình thiết kế giao diệnTiến trình thiết kế giao diện bao gồm một số hoạt động:

- Tạo ra các mô hình khác nhau về chức năng hệ thống- Phác họa ra các nhiệm vụ hướng con người và máy tính để đạt tới chức năng hệ

thống.

- Xem xét các giải pháp thiết kế được áp dụng cho các thiết kế giao diện.- Sử dụng các công cụ làm bản mẫu- Cài đặt cho mô hình thiết kế và đánh giá kết quả.

3.6.Tài liệu thiết kếDàn ý tài liệu thiết kế có thể tham khảo:I. Phạm viA. Mục tiêu hệ thốngB. Phần cứng, phần mềm và giao diện con ngườiC. Các chức năng phần mềm chínhD. CSDL được xác định bên ngoàiE. Các ràng buộc, giới hạn thiết kế chínhII. Tài liệu tham khảoA. Tài liệu về phần mềm hiện cóB. Tài liệu hệ thốngC. Tài liệu người cung cấp (phần cứng, phần mềm)D. Tham khảo kỹ thuậtIII. Mô tả thiết kếA. Mô tả dữ liệu1. Tổng quan về luồng dữ liệu2. Tổng quan về cấu trúc dữ liệuB. Cấu trúc chương trình suy diễnC. Giao diện bên trong cấu trúcIV. MôđunVới mỗi môđun cần mô tả:A. Lời thuật xử lýB. Mô tả giao diệnC. Mô tả ngôn ngữ thiết kếD. Các môđun đã dùngE. Bình luận

26

Page 27: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 27/38

 

V. Cấu trúc tệp và dữ liệu toàn cụcA. Cấu trúc tệp dữ liệu1. Cấu trúc logic2. Mô tả bản ghi logic3. Phương pháp truy nhập

B. Dữ liệu toàn cụcC. Tham khảo chéo tệp và dữ liệuVI. Tham khảo chéo yêu cầuVII. Điều khoản kiểm thửA. Hướng dẫn kiểm thửB. Chiến lược kiểm thửC. Xem xét đặc biệtVIII. Đóng góiA. Các điều khoản đặc biệtB. Xem xét chuyển giaoIX. Lưu ý đặc biệt

X. Phụ lục

27

Page 28: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 28/38

 

Chương 4. Lập trình

4.1.Ngôn ngữ lập trình Ngôn ngữ lập trình là phương tiện để liên lạc giữa con người và máy tính. Tiến

trình lập trình-sự liên lạc thông qua ngôn ngữ lập trình- là một hoạt động trí tuệ cao củacon người và là một bước cốt lõi trong tiến trình kỹ nghệ phần mềm.

4.1.1. Đặc trưng của ngôn ngữ lập trình Những đặc trưng kỹ nghệ tổng quát của ngôn ngữ lập trình:

- dễ dịch thiết kế sang chương trình- từ khóa gần với ngô ngữ tự nhiên- có trình biên dịch hiệu quả- khả chuyển chương trình gốc- có sẵn công cụ phát triển- dễ bảo trì

Chất lượng của thiết kế phần mềm được thiết lập độc lập với các đặc trưng củangôn ngữ lập trình. Tuy nhiên các thuộc tính của ngôn ngữ đóng vai trò quan trọng trongchất lượng của thiết kế được cài đặt. Ví dụ ngôn ngữ Ada, C++… hỗ trợ khái niệm về trừutượng dữ liệu-một công cụ quan trọng trong thiết kế và đặc tả dữ liệu. Thiết kế dữ liệucũng có thể bị ảnh hưởng bởi các đặc trưng ngôn ngữ.

Các đặc trưng ngôn ngữ cũng ảnh hưởng tới kiểm thử. Các ngôn ngữ bậc cao hỗ trợ cho việc đặc tả kiểu dữ liệu, đặc tả chương trình con và thủ tục ngoài giúp kiểm thử tíchhợp ít sinh lỗi hơn.

4.1.2. Sự tiến hóa và đa dạng của các ngôn ngữ lập trìnhMục tiêu của người thiết kế ngôn ngữ lập trình là tạo ra các ngôn ngữ có hiệu quả

cao hơn cho phát triển phần mềm, tuy nhiên tùy vào từng giai đoạn và từng kỹ thuật cụ thể,ta có thể nhìn nhận sự tiến hóa này theo một số tiêu chí:

- Xuất hiện các ngô ngữ bậc cao: chúng gắn với tư duy lập trình có cấu trúc(ALGOL, FORTRAN,Pascal, C,…)

- Các ngôn ngữ lập trình hướng đối tượng (MODULA, C++, Java) mở ra khả năngsử dụng lại cao, đồng thời nâng cao một bước về chất lượng phần mềm.

- Các ngôn ngữ thông dịch: tốc độ xử lý ngày càng cao, bộ nhớ lớn khiến cho việcứng dụng các ngôn ngữ thông dịch ngày càng mạnh mẽ như ASP, PHP, JavaScript,… Các ngôn ngữ này với độ trừu tượng cao và đặc thù với các miền ứng dụng giúpcho việc xây dựng ứng dụng vừa và nhỏ đặc biệt là các ứng dụng cơ sở dữ liệu loạinhỏ, sinh báo cáo, quản lý nghiệp vụ…

- Đa dạng hóa và đặc thù với miền ứng dụng: ngược với xu hướng thiết kế các ngônngữ vạn năng là xu hướng thiết kế các ngôn ngữ đặc thù. Hầu hết các ngôn ngữ nàythuộc lớp các ngôn ngữ thông dịch. Ví dụ: ngôn ngữ LISP thiết kế chuyên dụng đểxử lý ngôn ngữ tự nhiên và thao tác chuỗi, PROLOG chuyên dụng cho lập trìnhlogic, SQL để truy vấn cơ sở dữ liệu…

28

Page 29: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 29/38

 

4.1.3. Các loại ngôn ngữ và lựa chọn ngôn ngữ lập trìnhCác đặc trưng của ngôn ngữ lập trình sẽ quyết định miền ứng dụng của ngôn ngữ.

Miền ứng dụng là yếu tố chính để ta lựa chọn ngôn ngữ cho một dự án phần mềm. Ngôn ngữ lập trình C xúc tích, hiệu quả và có khả năng can thiệp vào mức thấp của

hệ thống, thướng được chọn cho việc phát triển phần mềm hệ thống.

Pascal là ngôn ngữ thủ tục được thiết kế rõ ràng, thích hợp cho việc giảng dạy về phương pháp lập trình và mô tả thuật toán.

Fortran là ngôn ngữ thủ tục cổ điển (xuất hiện vào những năm 1960). Tuy còn hạnchế về xử lý tệp và cơ sở dữ liệu nhưng khả năng tính toán với độ chính xác cao và thưviện toán học phong phú, nó vẫn còn là ngôn ngữ thống trị trong lĩnh vực tính toán khoahọc kỹ thuật. Có phiên bản Fortran hỗ trợ tốt cho lập trình song song và được sử dụng trêncác siêu máy tính.

COBOL là ngôn ngữ ứng dụng kinh doanh và khai thác cơ sở dữ liệu lớn, tuy nhiêncác ngôn ngữ ở thế hệ thứ tư đã dần chiếm ưu thế và thay thế ngôn ngữ này. COBOL hầunhư không được sử dụng ở Việt Nam. Trước những năm 2000, Foxpro là ngôn ngữ pháttriển ứng dụng cơ sở dữ liệu vừa và nhỏ phổ biến nhất ở Việt Nam. Phiên bản sau này là

Foxweb vẫn được nhiều nhóm phát triển sử dụng.Basic, với sự đơn giản của cú pháp và tính sẵn có của trình thông dịch, đã có thờiđược sử dụng rất rộng rãi. Visual Basic với cú pháp xuất xứ từ Basic với khả năng xâydựng giao diện đồ họa và truy cập cơ sở dữ liệu dễ dàng đang được nhiều người sử dụngcho máy tính cá nhân, tuy nhiên nó hiếm khi được sử dụng cho phát triển hệ thống.

Xu hướng phát triển phần mềm hướng đối tượng xuyên suốt phần lớn các miền ứngdụng đã sinh ra nhiều các dị bản ngôn ngữ truyền thống. Các ngôn ngữ hướng đối tượngđược dùng phổ biến: Smalltalk, C++, Java. Ngoài ra còn có Eiffel, Object-Pascal,…

Với các đặc trưng hướng đối tượng, tính hiệu quả với nhiều công cụ và thư viện,C++ được sử dụng rộng rãi trong phát triển phần mềm, nó đặc biệt thích hợp với các phầnmềm đòi hỏi hiệu năng cao, phần mềm hệ thống, mô phỏng… Ngôn ngữ Java cũng là một

ngôn ngữ lập trình hướng đối tượng đang được sử dụng phổ biến cho các ứng dụng trênnền Web và phần mềm nhúng vì các lý do độ an toàn cao, tính trong sáng, tính khả chuyểnvà hướng thành phần.

Trong các ứng dụng thời gian thực thường gặp các ngôn ngữ như Ada, C, C++ vàcả hợp ngữ do tính hiệu quả của chúng. Các ngôn ngữ này cùng với Java được dùng cho phát triển phần mềm nhúng.

Các ứng dụng trí tuệ nhân tạo thường dùng các ngôn ngữ như LISP, PROLOG,…tuy nhiên nhiều ngôn ngữ khác như C++, Java cũng được sử dụng.

Các ngôn ngữ thông dịch (script) với những câu lệnh và thư viện mạnh hiện đangđược nhiều người quan tâm. Các ngôn ngữ thông dịch như ASP, PHP, JavaScript, PERLvới khả năng dễ dàng kết nối với cơ sở dữ liệu đang được sử dụng rộng rãi trong phát triển

các ứng dụng trên nền Web. ASP, PHP, PERL được dùng để phát triển các ứng dụng trênmáy chủ (server), JavaScript được dùng để phát triển các xử lý chạy trên các máy khách(client).

29

Page 30: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 30/38

 

4.2.Phương pháp lập trình

4.2.1. Lập trình thủ tụcLập trình thủ tục (procedural programming) là phương pháp tiên tiến gồm hai khái

niệm chính:

- Sử dụng các thủ tục: chia chương trình lớn thành các đoạn chương trình con (thủtục) thực hiện các công việc xác định. Các thủ tục có thể được gọi nhiều lần (sửdụng lại), gọi lẫn nhau và gọi chính nó (đệ qui). Nó góp phần giảm độ phức tạp vàtăng tính hiểu được của chương trình.

- Lập trình có cấu trúc: sử dụng các câu lệnh có cấu trúc (ví dụ: while, for,…) hoặctạo ra các cấu trúc phức tạp từ cấu trúc đơn giản hơn. Việc sử dụng các câu lệnh cócấu trúc giúp loại bỏ việc sử dụng lệnh nhảy GOTO trong lập trình cổ điển, nguyênnhân gây một số lượng lớn lỗi lập trình.

4.2.2. Lập trình hướng đối tượngLập trình hướng đối tượng dựa trên ba đặc trưng cơ bản:

-  Đóng gói/che dấu thông tin: bao gồm việc gắn kết dữ liệu và các phương thức xửlý dữ liệu thành một thể thống nhất là đối tượng, và việc che dấu các cài đặt và cấutrúc dữ liệu cụ thể của đối tượng, đối tượng cung cấp các dịch vụ thông qua giaodiện.

-  Kế thừa: là cơ chế đặc biệt cho phép xây dựng một lớp đối tượng mới kế thừa (sửdụng lại) lớp đối tượng đã có. Kế thừa thúc đẩy việc sử dụng lại trong bản thân một phần mềm cũng như giữa các phần mềm với nhau.

-  Đa hình: là cơ chế cho phép nhìn nhận đối tượng theo các góc nhìn khác nhauđồng thời cho phép các đối tượng khác nhau giải nghĩa cùng một thông điệp (lờigọi phương thức) theo cách thức khác nhau. Cùng với kế thừa, đa hình tạo nên sựmềm dẻo đặc biệt trong lập trình hướng đối tượng. Đa hình đồng thời là cơ chế nền

tảng cho việc thực hiện các thiết kế mở và xây dựng các mẫu thiết kế.

4.2.3. Lập trình hàmLập trình hàm (functional programming) là phương pháp lập trình dựa trên việc

đánh giá các biểu thức toán học và tạo ra các giá trị mới từ các giá trị đã có. Lập trình hàmđánh giá một biểu thức bằng cách thực hiện việc đánh giá các bộ phận (có thể coi là mộtcách song song) thông qua sử dụng các hàm khác hoặc chính nó tạo ra kết quả mà khôngthay đổi các trạng thái đã có. Ngôn ngữ lập trình tiêu biểu là LISP. LISP là ngôn ngữ lậptrình hàm thuận tiện cho việc xử lý các danh sách.

4.2.4. Lập trình logicLập trình logic (logic programming) là phương pháp lập trình dựa trên việc mô tả

tri thức mang tính logic về bài toán và mục tiêu cần giải chứ không phải là các bước để giải bài toán. Tri thức ở đây bao gồm các qui tắc về miền bài toán và các dữ kiện đã có. Hệthống sẽ tìm cách kiểm tra xem từ các dữ kiện và qui tắc đã cho có cách nào để đạt tới mụctiêu hay không. Ngôn ngữ điển hình là PROLOG và miền ứng dụng chủ yếu của phương pháp lập trình này là các hệ chuyên gia và các bài toán chứng minh định lý tự động.

PROLOG là ngôn ngữ lập trình logic chuyên dụng, nó cho phép chứng minh tựđộng một kết luận là đúng hay sai từ các luật và các mệnh đề đã cho.

30

Page 31: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 31/38

 

4.2.5. Phong cách lập trìnhPhong cách lập trình nhấn mạnh đến tính dễ hiểu của chương trình nguồn, nó bao

gồm tài liệu chương trình, phương pháp khai báo dữ liệu, cách xây dựng câu lệnh và các kỹthuật vào/ra.

- Tài liệu chương trình

Tài liệu bên trong chương trình gốc bắt đầu với việc chọn lựa các tên gọi định danh(biến và nhãn), tiếp tục với vị trí và thành phần của việc chú thích và cách tổ chức trựcquan của chương trình.

Việc lựa chọn tên gọi định danh có nghĩa là điều chủ chốt đảm bảo tính dễ hiểu củachương trình.

Lời chú thích cung cấp cho người phát triển một ý nghĩa truyền thông với độc giảkhác về chương trình gốc. Lời chú thích có thể cung cấp một hướng dẫn rõ rệt để hiểutrong pha cuối của kỹ nghệ phần mềm-bảo trì. Các chú thích mở đầu xuất hiện ở ngay đầumôđun, các chú thích chức năng được nhúng bên trong thân của chương trình gốc.

-  Khai báo dữ liệuĐộ phức tạp của cấu trúc dữ liệu phụ thuộc vào thiết kế dữ liệu. Tuy nhiên, người

lập trình với việc tuân theo những chỉ dẫn đơn giản vẫn có thể cài đặt các cấu trúc dữ liệudễ hiểu hơn và thuận tiên hơn trong bảo trì:o Các cấu trúc dữ liệu nên được chú giải đầy đủo Thứ tự khai báo dữ liệu nên được chuẩn hóa. Ví dụ: các biến cùng kiểu

hoặc cùng mục đích sử dụng được xếp cạnh nhau.o Cần thống nhất qui tắc đặt tên cho các biến. Nên thống nhất các tên biến

cho các kiểu hoặc cho các mục đích cụ thể, ví dụ như chỉ mục trong vònglặp.

-  Xây dựng câu lệnhĐể tránh lỗi và nâng khả năng bảo trì, việc xây dựng và câu lệnh nên tuân theo qui tắc:mỗi câu lệnh đơn giản và trực tiếp:

o Tránh dùng các phép kiểm tra điều kiện phức tạpo Khử bỏ các kiểm tra điều kiện phủ địnho Tránh lồng nhau nhiều giữa các điều kiện hay chu trìnho Dùng dấu ngoặc để làm sáng tỏ các biểu thức logic hay số họco Dùng dấu cách và các ký hiệu dễ đọc để làm sáng tỏ nội dung câu lệnho Chỉ nên dùng các tính năng chuẩn của ngôn ngữ.

- Các kỹ thuật vào/ra của các mô-đunVào/ra giữa các môđun nên tuân thủ theo một số hướng dẫn sau:

o Kiểm tra tính hợp lệ của dữ liệu vàoo Giữ cho định dạng dữ liệu vào ra đơn giản, thống nhấto

Giảm độ ghép nối, ví dụ thông qua việc loại bỏ các trường dữ liệu khôngcần thiết.

31

Page 32: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 32/38

 

4.3.Lập trình tránh lỗi

4.3.1. Tránh lỗiTránh lỗi và phát triển phần mềm không có lỗi là một sự nỗ lực trong toàn bộ quá

trình phát triển phần mềm. Một phần mềm tốt cần phải được phát triển dựa trên các yếu tố

sau:- Sản phẩm của một đặc tả hệ thống chính xác.- Tăng cường duyệt lại trong quá trình phát triển và thẩm định hệ thống.- Tổ chức thử nghiệm một cách có hệ thống- Áp dụng tư duy thiết kế hiện đại (môđun hóa và hướng đối tượng).

Một số yếu tố gây lỗi trong lập trình như: gán sai kiểu dữ liệu, mức độ chính xáccủa các số thực dấu phẩy động, sử dụng con trỏ và bộ nhớ động, lập trình song song, sửdụng đệ qui hay sử dụng các ngắt.

4.3.2. Lập trình dung thứ lỗiDung thứ lỗi trong lập trình là khả năng đảm bảo cho hệ thống vẫn hoạt động được

ngay cả khi có thành phần sinh lỗi. Các hoạt động cần thực hiện để hệ thống có khả năngthứ lỗi:

- Phát hiện lỗi- Định ra mức độ thiệt hại: đánh giá mức độ nghiêm trọng của các lỗi và xác định

xem chương trình có thể tiếp tục thực thi được hay không.- Hồi phục sau khi gặp lỗi: hệ thống phải hồi phục về trạng thái mà nó biết là an

toàn. Cũng có thể là chỉnh lý trạng thái bị hủy hoại -hồi phục tiến, cũng có thể luivề một trạng thái trước mà an toàn- hồi phục lùi.

- Chữa lỗi: cải tiến hệ thống để cho lỗi đó không xuất hiện nữa.

4.3.3. Lập trình phòng thủ

Lập trình phòng thủ (defence programming) là một kỹ thuật lập trình dung thứ lỗi.Lập trình phòng thủ chú trọng đến các lỗi mang tính khách quan khi thực hiện chươngtrình, ví dụ lỗi vào ra dữ liệu, lỗi môi trường thực thi (thiếu bộ nhớ,…), hay một số lỗi đặcthù về số học và logic như lỗi tràn số, lỗi chia không. Đây có thể là các lỗi bất thườngkhông dự đoán được.

Thông thường, lập trình phòng thủ dựa trên việc kiểm tra trạng thái hệ thống saukhi biến đổi và tìm cách đảm bảo rằng sự biến đổi trạng thái là đúng đắn. Nếu phát hiệnmột mâu thuẫn thì hủy bỏ việc biến đổi trạng thái, quay lại trạng thái đúng đắn trước đó(phục hồi lỗi) và tìm cách thực hiện lại, có thể với một bộ dữ liệu khác.

Một trong những nguyên nhân gây ra mâu thuẫn trong biến đổi trạng thái là dữ liệuđược gán sai kiểu hoặc miền giá trị. Vấn đề này được giải quyết bằng kỹ thuật đặc tả miền

giá trị (đặc tả kiểu) trong các ngôn ngữ bậc cao, hoặc áp dụng đóng gói/che dấu thông tintrong lập trình hướng đối tượng.

4.4.Lập trình hướng hiệu quả thực hiện

4.4.1. Tính hiệu quả chương trìnhTính hiệu quả của chương trình gốc có liên hệ trực tiếp với tính hiệu quả của thuật

toán được xác định trong pha thiết kế. Tuy nhiên, phong cách lập trình có thể có một tác

32

Page 33: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 33/38

 

động nhất định đến tốc độ thực hiện và yêu cầu bộ nhớ. Các hướng dẫn sau có thể áp dụngkhi thiết kế chi tiết được dịch thành chương trình:

- Đơn giản hóa các biểu thức số học và logic- Tối ưu khối lệnh trong các chu trình- Tránh dùng mảng nhiều chiều

- Tránh dùng con trỏ và danh sách phức tạp- Dùng các phép toán thực hiện nhanh: ví dụ như các phép toán tăng giảm 1 đơn vị,dịch chuyển bit…

- Tránh trộn lẫn các kiểu dữ liệu, sử dụng các kiểu dữ liệu đơn giản.- Tránh gọi chương trình con: lập trình thủ tục dựa trên việc gọi các chương trình

con, tuy nhiên, trong một số trường hợp cần tối ưu hóa tốc độ nhất là trong cácvòng lặp, người ta tìm cách hạn chế việc gọi các chương trình con, nhất là nhữngchương trình con đơn giản như tìm max, min… Gọi chương trình con sinh ra cácchi phí về truyền/nhận dữ liệu đồng thời phá vỡ tính cục bộ của khối dữ liệu. Mộtsố ngôn ngữ bậc cao hỗ trợ các kỹ thuật tránh chương trình con nhỏ như tạo cácmacro hoặc các hàm inline.

4.4.2. Hiệu quả bộ nhớTính hiệu quả trong sử dụng bộ nhớ phải được tính dựa trên vào đặc trưng sử dụng

 bộ nhớ đệm của hệ điều hành. Các kỹ thuật cho hiệu quả về thời gian thực hiện đôi khicũng có thể dẫn đến hiệu quả bộ nhớ.

4.4.3. Hiệu quả vào/ra

33

Page 34: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 34/38

 

Chương 5. Xác minh và thẩm định

5.1.Giới thiệu

5.2.Các kỹ thuật kiểm thử5.3.Chiến lược kiểm thử

Chương 6. Quản lý dự án phần mềmQuản lý dự án phần mềm là một công việc khó khăn. Người quản lý dự án phần

mềm phải làm các công việc như một người quản lý dự án bất kỳ. Tuy nhiên, kỹ nghệ phầnmềm có nhiều đặc điểm riêng, nên việc quản lý nó cũng gặp những trở ngại:

- Phần mềm là sản phẩm không nhìn thấy được, người quản lý chỉ nhận biết được nó

thông qua các công việc đang thực hiện và những tài liệu đã và cần xét duyệt.- Không có một tiến trình phần mềm chuẩn. Mỗi tiến trình cụ thể đều có thể nảy sinhnhững vấn đề hoặc rủi ro riêng và không thể dự kiến trước mọi bất định.

- Các dự án phần mềm lớn thường là dự án mới, người quản lý khó có thể sử dụnglại những kinh nghiệm đã có để giảm tính bất định khi lập kế hoạch.

- Sự thay đổi là cố hữu đối với các dự án phần mềm.

6.1.Dự án và quản lý dự án

6.1.1. Khái niệm về dự ánDự án là một tập hợp các công việc được một số người thực hiện nhằm đạt đến một

kết quả dự kiến là một sản phẩm xác định, trong thời gian nhất định, với kinh phí dự kiến.Khái niệm dự án liên quan đến ba yếu tố:- Kết quả dự án: là một sản phẩm hoàn toàn xác định. Vì vậy, sản phẩm cần được mô

tả về các đặc trưng, tính năng tác dụng, giá trị sử dụng, hiệu quả mang lại…- Do một số người thực hiện. Trước hết những người thực hiện phải có những kỹ

năng và nghiệp vụ phù hợp với yêu cầu tạo ra sản phẩm. Sau đó cần có cách tổchức quản lý để sử dụng tốt năng lực mỗi người và những tài nguyên một cách hiệuquả.

- Có những giới hạn đặt lên các hoạt động dự án: đó là thời gian, kinh phí cần thiết.Một dự án thất bại thường do những nguyên nhân như: quản lý dự án kém, không

lường hết được phạm vi và độ phức tạp của công việc, thiếu thông tin và nhiều sự kiện bất

ngờ khác có thể nảy sinh.6.1.2. Quản lý dự ánQuản lý dự án được xem là việc vận dụng các kiến thức, phương pháp, công cụ và

kỹ thuật để triển khai các hoạt động của dự án nhằm tạo ra sản phẩm theo đúng các yêucầu đặt ra. Công việc quản lý diễn ra suốt vòng đời của dự án: từ lúc hình thành dự án, lậpkế hoạch, thực hiện dự án đến khi kết thúc dự án.

34

Page 35: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 35/38

 

 Nhìn một cách bao quát, các nội dung chính của việc triển khai một dự án gồm cáchoạt động:

- Khởi thảo, xác định dự án:o Viết bản đề xuấto Thiết lập quan hệ với khách hàng

o Xây dựng dự án sơ bộo Thiết lập thủ tục quản lýo Thiết lập môi trường quản lý và tài liệu dự án.

- Lập kế hoạch dự án: lập danh sách công việc, ước lượng, lập lịch, lập kế hoạchngân sách…

- Tổ chức thực hiện: lập tài liệu, tổ chức quản lý, lập tổ dự án, phân bổ tài nguyên- Triển khai kiểm soát: triển khai, theo dõi, phân tích đánh giá, cập nhật lập lịch, xử

lý, quyết định.- Kết thúc dự án

6.2.Các hoạt động quản lý dự án

6.3.Lập kế hoạch dự án

6.4.Lập lịch dự án

6.5.Quản lý rủi ro

6.6.Mô hình trưởng thành khả năng của tổ chức – CMM

35

Page 36: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 36/38

 

Mục lục

Chương 1. Phần mềm và kỹ nghệ phần mềm............................................................11.1. Khái niệm phần mềm........................................................................................1

1.1.1. Khái niệm...................................................................................................1

1.1.2. Các đặc trưng của phần mềm....................................................................11.1.3. Các thành phần phần mềm........................................................................11.1.4. Phân loại các phần mềm............................................................................2

1.2. Sự phát triển của phần mềm và thách thức......................................................21.2.1. Quá trình phát triển của phần mềm...........................................................21.2.2. Khủng hoảng phần mềm và sự ra đời của kỹ nghệ phần mềm................31.2.3. Thách thức đối với sự phát triển phần mềm máy tính hiện nay...............3

1.3. Kỹ nghệ phần mềm...........................................................................................41.3.1. Các khái niệm............................................................................................41.3.2. Mô hình thác nước.....................................................................................61.3.3. Các mô hình tiến hóa.................................................................................6

1.3.4. Phát triển hệ thống hình thức hóa.............................................................71.3.5. Phát triển phần mềm theo hướng sử dụng lại...........................................71.3.6. Kỹ thuật thế hệ thứ 4.................................................................................71.3.7. Các hoạt động của tiến trình phát triển và các tài liệu..............................8

1.4. Chất lượng phần mềm......................................................................................81.5. Kỹ nghệ hệ thống dựa trên máy tính................................................................9

1.5.1. Hệ thống dựa trên máy tính.......................................................................91.5.2. Mô hình hóa hệ thống................................................................................91.5.3. Tiến trình kỹ nghệ hệ thống......................................................................9

Chương 2. Xác định và đặc tả yêu cầu phần mềm...................................................112.1. Tổng quan về yêu cầu phần mềm...................................................................11

2.1.1. Khái niệm yêu cầu phần mềm.................................................................112.1.2. Phân loại yêu cầu phần mềm...................................................................112.1.3. Tiến trình kỹ nghệ yêu cầu......................................................................122.1.4. Tài liệu yêu cầu phần mềm.....................................................................12

2.2. Xác định yêu cầu phần mềm .........................................................................132.2.1. Khảo sát hệ thống và phân tích khả thi...................................................132.2.2. Phát hiện và phân tích yêu cầu................................................................132.2.3. Các kỹ thuật phân tích yêu cầu...............................................................142.2.4. Sự tiến hóa và quản lý yêu cầu................................................................14

2.3. Đặc tả yêu cầu.................................................................................................152.3.1. Khái niệm đặc tả yêu cầu........................................................................15

2.3.2. Đặc tả yêu cầu dựa trên mô hình.............................................................152.4. Thẩm định yêu cầu.........................................................................................162.4.1. Khái niệm thẩm định yêu cầu..................................................................162.4.2. Một số kỹ thuật thẩm định yêu cầu.........................................................17

2.5. Đặc tả hệ thống và làm bản mẫu....................................................................172.5.1. Tiến trình làm bản mẫu phần mềm.........................................................172.5.2. Tạo bản mẫu trong tiến trình phần mềm.................................................182.5.3. Các kỹ thuật tạo bản mẫu........................................................................18

36

Page 37: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 37/38

 

Chương 3. Thiết kế phần mềm.................................................................................193.1. Tổng quan về thiết kế phần mềm...................................................................19

3.1.1. Khái niệm và vai trò của thiết kế............................................................193.1.2. Triển khai thiết kế....................................................................................203.1.3. Các chiến lược và phương pháp thiết kế.................................................21

3.1.4. Chất lượng thiết kế và các giải pháp đảm bảo chất lượng.....................213.2. Thiết kế kiến trúc............................................................................................233.2.1. Kiến trúc phần mềm và vai trò của nó....................................................233.2.2. Các mô hình kiến trúc..............................................................................233.2.3. Tiến trình thiết kế kiến trúc ....................................................................24

3.3. Thiết kế hệ thống hướng chức năng...............................................................243.3.1. Thiết kế dữ liệu........................................................................................243.3.2. Thiết kế xử lý...........................................................................................243.3.3. Ưu nhược điểm của thiết kế hướng cấu trúc...........................................24

3.4. Thiết kế hệ thống hướng đối tượng................................................................253.4.1. Một số khái niệm của UML....................................................................25

3.4.2. Tiến trình thiết kế hướng đối tượng........................................................253.4.3. Các ưu điểm của thiết kế hướng đối tượng.............................................253.5. Thiết kế giao diện người-máy........................................................................25

3.5.1. Vai trò của giao diện người-máy.............................................................253.5.2. Các nguyên tắc thiết kế giao diện người-máy........................................263.5.3. Tiến trình thiết kế giao diện....................................................................26

3.6. Tài liệu thiết kế...............................................................................................26Chương 4. Lập trình..................................................................................................28

4.1. Ngôn ngữ lập trình..........................................................................................284.1.1. Đặc trưng của ngôn ngữ lập trình...........................................................284.1.2. Sự tiến hóa và đa dạng của các ngôn ngữ lập trình................................28

4.1.3. Các loại ngôn ngữ và lựa chọn ngôn ngữ lập trình.................................294.2. Phương pháp lập trình....................................................................................304.2.1. Lập trình thủ tục......................................................................................304.2.2. Lập trình hướng đối tượng......................................................................304.2.3. Lập trình hàm...........................................................................................304.2.4. Lập trình logic.........................................................................................304.2.5. Phong cách lập trình................................................................................31

4.3. Lập trình tránh lỗi...........................................................................................324.3.1. Tránh lỗi...................................................................................................324.3.2. Lập trình dung thứ lỗi.............................................................................324.3.3. Lập trình phòng thủ.................................................................................32

4.4. Lập trình hướng hiệu quả thực hiện...............................................................324.4.1. Tính hiệu quả chương trình.....................................................................324.4.2. Hiệu quả bộ nhớ......................................................................................334.4.3. Hiệu quả vào/ra........................................................................................33

Chương 5. Xác minh và thẩm định..........................................................................345.1. Giới thiệu........................................................................................................345.2. Các kỹ thuật kiểm thử.....................................................................................345.3. Chiến lược kiểm thử.......................................................................................34

37

Page 38: Ky Nghe Phan Mem

5/14/2018 Ky Nghe Phan Mem - slidepdf.com

http://slidepdf.com/reader/full/ky-nghe-phan-mem 38/38

 

Chương 6. Quản lý dự án phần mềm.......................................................................346.1. Dự án và quản lý dự án...................................................................................34

6.1.1. Khái niệm về dự án..................................................................................346.1.2. Quản lý dự án .........................................................................................34

6.2. Các hoạt động quản lý dự án..........................................................................35

6.3. Lập kế hoạch dự án.........................................................................................356.4. Lập lịch dự án.................................................................................................356.5. Quản lý rủi ro..................................................................................................356.6. Mô hình trưởng thành khả năng của tổ chức – CMM...................................35

38