Giáo trình Công nghệ phần mềm - Nghề: Lập trình máy tính

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN  
TRƯỜNG CAO ĐẲNG CƠ GIỚI NINH BÌNH  
GIÁO TRÌNH  
MÔN HỌC: CÔNG NGHỆ PHẦN MỀM  
NGHỀ: LẬP TRÌNH MÁY TÍNH  
TRÌNH ĐỘ: CAO ĐẲNG / TRUNG CẤP  
Ban hành kèm theo Quyết định số:  
/QĐ-… ngày…….tháng….năm 2018  
của Trường Cao đẳng Cơ giới Ninh Bình  
Ninh Bình, năm 2018  
 
TUYÊN BỐ BẢN QUYỀN  
Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể  
được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và  
tham khảo.  
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh  
doanh thiếu lành mạnh sẽ bị nghiêm cấm.  
LỜI GIỚI THIỆU  
Trong hệ thống kiến thức chuyên ngành trang bị cho sinh viên nghề Lập  
trình máy tính, môn học góp phần cung cấp những nội dung liên quan đến việc  
xây dựng các ứng dụng về phân tích xây dựng phần mềm ứng dụng.  
Các nội dung chính được trình bày trong tài liệu này gồm các bài:  
- Đặc trưng của phần mềm  
- Vai trò của phần mềm  
- Các yếu tố cơ bản của kỹ nghệ phần mềm  
- Vai trò của người phân tích yêu cầu  
- Xem xét phần mềm  
- Một số vấn đề thiết kế  
Mặc dù có rất nhiều cố gắng, nhưng không tránh khỏi những khiếm khuyết,  
rất mong nhận được sự đóng góp ý kiến của độc giả để giáo trình được hoàn  
thiện hơn.  
Ninh Bình, ngày….tháng…. năm 2018  
Tham gia biên soạn  
1. Chủ biên – Th.S Nguyễn Anh Văn  
2. Th.S Nguyễn Trung Cương  
3. Th.S Nguyễn Xuân Khôi  
 
MỤC LỤC  
CHƯƠNG TRÌNH MÔ ĐUN CÔNG NGHỆ PHẦN MỀM  
Mã số môm học: Mh 25  
Thời gian môm học: 60 h;  
(Lý thuyết: 36 h; Thực hành: 24 h)  
I. VỊ TRÍ, TÍNH CHẤT CỦA MÔ ĐUN  
- Môn học này được học sau khi học xong các môn học lập trình và các hệ  
quản trị cơ sở dữ liệu.  
- Để học tốt mô đun này cần học qua các môn học Tin học căn bản, Lập  
trình căn bản, cơ sở toán cho tin học, cấu trúc dữ liệu và giải thuật, lập trình  
hướng đối tượng.  
II. MỤC TIÊU MÔ ĐUN  
Học xong mô đun này sinh viên có khả năng:  
- Trình bày được các khái niệm cơ bản về công nghệ phần mềm: Phần  
mềm, công nghệ phần mềm, quy trình làm phần mềm.  
- Thực hiện được mô hình làm phần mềm: phù hợp cho yêu cầu của hệ  
thống cụ thể;  
- Trình bày được các yêu cầu của phần mềm, xác định phạm vi, hạn chế  
của phần mềm;  
- Trình bày được sản phẩm và hướng dẫn sử dụng phần mềm;  
- Có thái độ nghiêm túc và tích cực trong học tập đảm bảo an toàn cho  
người và thiết bị.  
III. NỘI DUNG MÔ ĐUN  
1. Nội dung tổng quát và phân phối thời gian:  
Số  
Tên các bài trong mô đun  
Tổng Lý  
số thuyết  
Thực  
hành  
Kiểm tra*  
TT  
1
2
3
Phần mềm và kỹ nghệ phần mềm  
Tiến trình phần mềm  
5
5
6
5
10  
11  
4
4
Phân tích đặc tả yêu cầu  
2
4
5
Lập trình hiệu quả  
Kiểm thử và bảo trì phần mềm  
Cộng:  
9
5
4
25  
60  
11  
36  
12  
20  
2
4
*Ghi chú: Thời gian kiểm tra được tích hợp giữa lý thuyết với thực hành được  
tính vào giờ thực hành  
IV. ĐIỀU KIỆN THỰC HIỆN MÔ ĐUN  
Sinh viên cần học trước các môn học:  
- Cơ sở toán cho tin học.  
- Lập trình căn bản.  
- Cấu trúc dữ liệu và giải thuật.  
- Hệ quản trị cơ sở dữ liệu.  
- Lập trình hướng đối tượng.  
* Vật liệu:  
- Xưởng thực hành đạt chuẩn.  
- Các mô hình trên giấy in hoặc trên power point.  
* Dụng cụ:  
- Máy tính, máy chiếu.  
- Bài giảng soạn trên phần mềm dạy học.  
Bài 1. PHẦN MỀM VÀ KỸ NGHỆ PHẦN MỀM  
A. MỤC TIÊU CỦA BÀI  
- Hiểu được định nghĩa công nghệ phần mềm -Software Engineering;.  
- Sử dụng được phương pháp, công cụ, cách tiếp cận và phương tiện phục  
vụ cho việc thiết kế và cài đặt các sản phẩm phần mềm;  
B. NỘI DUNG  
1.1. Một số khái niệm chung  
Mục tiêu của công nghệ phần mềm là tạo ra những phần mềm tốt, giảm  
đến tối thiểu những may rủi có thể gây cho các người liên quan. Trong quá trình  
đề cập, chúng ta sử dụng các thuật ngữ:  
Phần mềm (software): là một tập hợp các câu lệnh được viết bằng một  
hoặc nhiều ngôn ngữ lập trình, nhằm tự động thực hiện một số các chức năng  
giải quyết một bài toán nào đó.  
Công nghệ (engineering): là cách sử dụng các công cụ, các kỹ thuật trong  
cách giải quyết một vấn đề nào đó.  
Công nghệ phần mềm (software engineering): là việc áp dụng các công  
cụ, các kỹ thuật một cách hệ thống trong việc phát triển các ứng dụng dựa trên  
máy tính. Đó chính là việc áp dụng các quan điểm, các tiến trình có kỷ luật và  
lượng hoá được, có bài bản và hệ thống để phát triển, vận hành và bảo trì phần  
mềm.  
Theo quan điểm của nhiều nhà nghiên cứu, có thể nhìn công nghệ phần  
mềm là một mô hình được phân theo ba tầng mà tất cả các tầng này đều nhằm  
tới mục tiêu chất lượng, chi phí, thời hạn phát triển phần mềm.  
Mô hình được phân theo ba tầng của công nghệ phần mềm được mô tả như  
sau:  
Công cụ  
Phương pháp  
Quy trình  
   
Ở đây tầng quy trình (process) liên quan tới vấn đề quản trị phát triển  
phần mềm như lập kế hoạch, quản trị chất lượng, tiến độ, chi phí, mua bán sản  
phẩm phụ, cấu hình phần mềm, quản trị sự thay đổi, quản trị nhân sự (trong môi  
trường làm việc nhóm), việc chuyển giao, đào tạo, tài liệu;  
Tầng phương pháp (methods) hay cách thức, công nghệ, kỹ thuật để làm  
phần mềm: liên quan đến tất cả các công đoạn phát triển hệ thống như nghiên  
cứu yêu cầu, thiết kế, lập trình, kiểm thử và bảo trì. Phương pháp dựa trên những  
nguyên lý cơ bản nhất cho tất cả các lĩnh vực công nghệ kể cả các hoạt động mô  
hình hoá và kỹ thuật mô tả.  
Tầng công cụ (tools) liên quan đến việc cung cấp các phương tiện hỗ trợ  
tự động hay bán tự động cho các tầng quá trình và phương pháp (công nghệ).  
Qua sơ đồ trên, ta thấy rõ công nghệ phần mềm là một khái niệm đề cập  
không chỉ tới các công nghệ và công cụ phần mềm mà còn tới cả cách thức phối  
hợp công nghệ, phương pháp và công cụ theo các quy trình nghiêm ngặt để làm  
ra sản phẩm có chất lượng.  
Kỹ sư phần mềm (software engineer): là một người biết cách áp dụng  
rộng rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển  
một cách có hệ thống các ứng dụng. Công việc của người kỹ sư phần mềm là:  
đánh giá, lựa chọn, sử dụng những cách tiếp cận có tính hệ thống, chuyên biệt,  
rõ ràng trong việc phát triển, đưa vào ứng dụng, bảo trì, và thay thế phần mềm.  
Do đặc điểm nghề nghiệp, người kỹ sư phần mềm phải có những kỹ năng  
cơ bản như:  
Định danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích hợp và  
các công cụ CASE.  
Biết cách sử dụng các mẫu phần mềm (prototyping).  
Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm.  
Quản lý cấu hình, lập sơ đồ và kiểm soát việc phát triển của các tiến trình.  
Lựa chọn ngôn ngữ máy tính và phát triển chương trình máy tính.  
Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng.  
Mục tiêu của kỹ sư phần mềm là sản xuất ra các sản phẩm có chất lượng  
cao và phù hợp với các quy trình phát triển chuẩn mực.  
Việc phát triển (development): được bắt đầu từ khi quyết định phát triển  
sản phẩm phần mềm và kết thúc khi sản phẩm phần mềm được chuyển giao cho  
người sử dụng.  
Việc sử dụng (operations): là việc xử lý, vận hành hằng ngày sản phẩm  
phần mềm  
Việc bảo trì (maintenance): thực hiện những thay đổi mang tính logic đối  
với hệ thống và chương trình để chữa những lỗi cố định, cung cấp những thay  
đổi về công việc, hoặc làm cho phần mềm được hiệu quả hơn.  
Việc loại bỏ (retirement): thường là việc thay thế các ứng dụng hiện thời  
bởi các ứng dụng mới.  
1.2. Nhân  
1.2.1. Nhân tố con người trong ngành công nghiệp phần mềm  
Đối với một sản phẩn phần mềm, một người không thể hoàn thành mà là  
kết quả lao động của một nhóm người-ta gọi là nhóm phát triển phần mềm. Mỗi  
thành viên trong nhóm không được vị kỷ, thành quả lao động của nhóm được  
xen như là thành quả chung và phải tuyệt đối trung thành với nhóm.  
Như vậy, một nhóm phát triển phần mềm như thế nào gọi là một nhóm  
hợp lý? Sau đây là một vài yếu tố cần xem xét:  
Nhóm có bao nhiêu thành viên,  
Nhóm được tổ chức như thế nào,  
Tình hình thực tế của mỗi thành viên trong nhóm,  
Môi trường, điều kiện mà nhóm đang làm việc,...  
Mỗi thành viên trong nhóm phải có một số kiến thức cần thiết tuỳ thuộc  
vào vai trò trong nhóm để phát triển phần mềm.  
1.2.2. Phân loại nghề nghiệp  
Yêu cầu hiện nay của sự phát triển Công nghệ Thông tin (CNTT) ở Việt  
nam đòi hỏi cần có những người lao động trong tất cả các ngành kinh tế biết sử  
dụng hữu hiệu CNTT trong công việc của mình, và đồng thời cần có những  
 
người trực tiếp tham gia vào sản xuất, kinh doanh, vận hành về CNTT. Do vậy  
cần có những lớp người lao động sau:  
Những người biết vận dụng sáng tạo CNTT vào nghiệp vụ chuyên môn.  
Những người tham gia quản lí và vận hành các hệ thống CNTT  
Những người tham gia trực tiếp vào việc phát triển và xây dựng ra các sản  
phẩm CNTT,...  
Việc phân loại nghề nghiệp trong các hệ thống thông tin có thể được phân  
chia dựa vào các tiêu chuẩn như: mức độ kinh nghiệm, loại hình công việc,...  
Loại hình công việc  
Ở đây, các loại hình công việc được bàn luận đến dựa vào cách phân loại  
gồm: phát triển ứng dụng, hỗ trợ ứng dụng, chuyên ngành kỹ thuật, nhân viên và  
những vấn đề khác.  
Phát triển ứng dụng  
Lập trình viên: Các lập trình viên chuyển đổi những đồ án chi tiết kỹ thuật  
sang các module mã và tự kiểm tra các đơn vị. Các lập trình viên có thể luân  
phiên chịu trách nhiệm giữa phát triển ứng dụng và bảo trì. Những chuyên gia  
lập trình ở trình độ đại học thực hiện những nhiệm vụ bên ngoài việc lập trình.  
Kỹ sư phần mềm: Một kỹ sư phần mềm thực hiện những chức năng của các  
nhà phân tích, các nhà thiết kế và các lập trình viên. Các phân tích gia ở trình độ  
đại học luôn luôn tham gia vào tổ chức có cấp độ IS để lập kế hoạch và nghiên  
cứu khả thi. Các kỹ sư phần mềm có thể làm cả ba việc – phân tích, thiết kế và  
lập trình cũng như đứng ra lãnh đạo dự án hoặc quản lý dự án. Một kỹ sư quản  
lý phần mềm sơ cấp thường dành nhiều thời gian lập trình trong khi một kỹ sư  
có trình độ cao cấp lại tập trung vào việc lập kế hoạch, nghiên cứu khả thi, phân  
tích và thiết kế.  
Kỹ sư tri thức (KE): Các kỹ sư tri thức suy luận ra những mô hình ngữ  
nghĩa từ các chuyên gia để từ đó xây dựng những hệ chuyên gia và trí tuệ nhân  
tạo. Các kỹ sư tri thức tương tự như các kỹ sư phần mềm nhưng được chuyên  
môn hoá các kỹ năng để áp dụng vào các vấn đề trí tuệ nhân tạo. Việc phát triển  
các mô hình và các chương trình của cấu trúc trí tuệ đòi hỏi khả năng quan sát,  
kỹ năng phỏng vấn sâu sắc, khả năng trừu tượng hoá những vấn đề không phải  
của chuyên môn cá nhân để tạo ra những ý thức lập luận và thông tin cần thiết  
và khả năng phát triển những dự đoán về thông tin và tính chính xác với các  
chuyên gia.  
Hỗ trợ ứng dụng  
Chuyên gia ứng dụng: Chuyên gia ứng dụng có những vùng vấn đề được  
chuyên môn hoá cho phép họ tham khảo ý kiến của các đội dự án về một loại  
ứng dụng cụ thể. Ví dụ một nhà phân tích cao cấp về chuyển tiền thời gian thực  
có thể phân chia được thời gian giữa các dự án chuyển tiền trong nước và quốc  
tế, biết trước được những quy tắc, luật lệ phải tuân theo của ngân hàng dự trữ  
liên bang cũng như của các tổ chức chuyển tiền khác.  
Quản trị dữ liệu: Người quản lý dữ liệu quản lý thông tin như một nguồn  
thống nhất. Với chức năng này, bộ phận quản lý dữ liệu giúp cho người sử dụng  
xác định được tất cả dữ liệu được sử dụng, các dữ liệu có ý nghĩa trong quá trình  
thực hiện chức năng của công ty. Những người quản lý dữ liệu thiết lập và bảo  
lưu những chuẩn mực để thống nhất dữ liệu.  
Khi dữ liệu đã được xác định, người quản lý dữ liệu sẽ làm việc để định dạng và  
xác định cấu trúc cơ sở dữ liệu để sử dụng với ứng dụng. Với việc phát triển ứng  
dụng mới, những người quản lý dữ liệu làm việc với bộ phận phát triển ứng  
dụng để định vị những số liệu đã được tự động và với bộ phận quản trị CSDL để  
cung cấp những nhóm ứng dụng dễ dàng truy nhập những cơ sở dữ liệu đã được  
tự động hoá.  
Quản trị cơ sở dữ liệu (DBA): Những người quản lý cơ sở dữ liệu quản lý  
môi trường dữ liệu vật lý của một tổ chức. DBA phân tích, thiết kế, xây dựng và  
bảo lưu cơ sở dữ liệu cũng như môi trường phần mềm cơ sở dữ liệu. Làm việc  
cùng với những người quản lý dữ liệu xác định dữ liệu. DBA xác định các cơ sở  
dữ liệu vật lý và nạp thông tin thực tế vào chúng.  
Một người quản lý cơ sở dữ liệu làm việc với các nhóm phát triển ứng dụng để  
cung cấp truy nhập đến dữ liệu tự động và để định nghĩa rõ ràng cơ sở dữ liệu  
cần thiết cho thông tin được tự động.  
Kỹ sư trí tuệ nhân tạo: Các kỹ sư trí tuệ nhân tạo làm việc như cố vấn giúp  
các đội dự án xác định, thiết kế và cài đặt trí tuệ vào các ứng dụng. Kỹ sư trí tuệ  
nhân tạo cùng với các kỹ sư tri thức dịch và kiểm tra những vấn đề miền dữ liệu  
và thông tin lập luận bằng một ngôn ngữ của trí tuệ nhân tạo. Các kỹ sư trí tuệ  
nhân tạo đạt được trình độ chuyên môn cao hơn các kỹ sư tri thức.  
Nhà tư vấn: Người tư vấn thì biết mọi vấn đề và thực hành được tất cả. Số  
năm kinh nghiệm càng cao thì kiến thức có được càng nhiều. Lĩnh vực chuyên  
môn có thể bao gồm một vài loại công việc được đề cập đến trong phần này.  
Người tư vấn được nhờ đến trong hầu hết các trường hợp lắp đặt hệ thống và  
cung cấp những kỹ năng bên ngoài không sẵn có. Bởi vậy họ thường đào tạo đội  
ngũ bên trong trong suốt quá trình thực hiện công việc. Khi được nhờ đến, người  
tư vấn được mong chờ có những kỹ năng chuyên biệt và sẽ áp dụng những kỹ  
năng này trong việc thực hiện tư vấn.  
Chuyên ngành kỹ thuật  
Nhà phân tích và kỹ sư truyền thông: Các nhà phân tích và kỹ sư truyền  
thông phân tích, thiết kế, đàm phán và/ hoặc cài đặt các thiết bị và phần mềm  
truyền thông. Họ đòi hỏi liên quan chặt chẽ tới kỹ thuật truyền thông và có thể  
làm việc trên mainframe hoặc các mạng truyền thông dựa vào PC. Để bắt đầu ở  
mức xuất phát thì nền tảng kiến thức phải có là điện tử, kỹ thuật, các ứng dụng,  
khoa học máy tính và truyền thông.  
Chuyên gia về mạng cục bộ: Các chuyên gia mạng cục bộ đặt kế hoạch, lắp đặt,  
quản lý và duy trì những khả năng của mạng cục bộ. Điểm khác nhau duy nhất  
giữa các chuyên gia mạng cục bộ và các chuyên gia truyền thông là phạm vi.  
Các chuyên gia truyền thông làm việc với nhiều mạng kể cả mainframe; còn  
chuyên gia mạng cục bộ chỉ làm việc trên những mạng có giới hạn về mặt địa lý  
và được cấu thành bởi nhiều máy tính cá nhân.  
Những người quản lý mạng cục bộ là vị trí đầu tiên trong nhiều công ty. Một  
người quản lý mạng cục bộ tạo ra người sử dụng mới, thực hiện hoặc thay đổi  
mức hoặc mã bảo mật, cài đặt những version mới của phần mềm điều hành  
mạng cục bộ, cài đặt những version mới của cơ sở dữ liệu hoặc phần mềm cơ sở  
mạng cục bộ khác. Giám sát tài nguyên cung cấp qua mạng cục bộ, cung cấp  
bản sao và khả năng phục hồi cho mạng cục bộ, và quản lý cấu hình mạng cục  
bộ.  
Lập trình viên hệ thống: Các lập trình viên hệ thống cài đặt và bảo dưỡng hệ  
điều hành và ứng dụng hỗ trợ phần mềm. Định giá những đặc điểm mới và xem  
xét chúng có cần thiết ở một thời điểm nào đó không là một kỹ năng mà lập  
trình viên hệ thống cần phát triển. Giám sát hàng trăm ứng dụng để xem xét  
những rắc rối của nó có liên quan đến vấn đề của hệ thống hay không là một  
nhiệm vụ quan trọng.  
Chuyên gia hỗ trợ phần mềm (SSP): Hỗ trợ phần mềm ứng dụng tương tự nhưng  
khác với lập trình viên hệ thống. SSP cài đặt và bảo dưỡng gói phần mềm sử  
dụng bởi cả các nhà phát triển ứng dụng và người sử dụng. Chúng có thể là cơ  
sở dữ liệu, ngôn ngữ hỏi đáp, sao lưu và phục hồi, bảng tính, quản lý khoảng  
trống đĩa, giao diện, truyền thông.  
1.3. Phương pháp phát triển phần mềm  
Khác với thời kỳ đầu của tin học, các chương trình phụ thuộc nhiều vào  
thiết bị và người ta chỉ quan tâm đến các "mẹo vặt" lập trình, thì ngày nay người  
ta quan tâm đến nguyên lý và phương pháp để phát triển phần mềm. Các nguyên  
lý và phương pháp được đề xuất nhằm nâng cao năng suất lao động cho nhóm  
phát triển phần mềm. Năng suất ở đây bao gồm tính đúng đắn của sản phẩm,  
tính dễ đọc, dễ sửa đổi, dễ thực hiện, tận dụng được tối đa khả năng của thiết bị  
mà vẫn không bị phụ thuộc vào thiết bị.  
Có nhiều phương pháp được đề cập như: phương pháp hướng chức năng,  
phương pháp hướng đối tượng, phương pháp ngữ nghĩa,... Và thậm chí là không  
phương pháp để phát triển phần mềm. Bên cạnh các phương pháp để chỉ định  
cho việc tạo một bản phân tích và thiết kế, người ta còn chú ý đến phương pháp  
làm thế nào để đưa người dùng tham gia vào quy trình gọi là phương pháp luận  
xã hội.  
Vai trò của người dùng trong giai đoạn phát triển phần mềm  
 
Trong những ứng dụng trước kia được xây dựng thường xuyên không có sự bàn  
bạc với người sử dụng, sự cô lập của các công nghệ phần mềm đối với người  
dùng dẫn đến những hệ thống có khả năng làm việc về mặt kỹ thuật, nhưng  
thông thường không đáp ứng được nhu cầu của người sử dụng, và thường xuyên  
làm gián đoạn quá trình làm việc.  
Để có sự tham gia của người sử dụng trong quá trình phát triển ứng dụng,  
phương thức này đòi hỏi những cuộc họp ngoài lề của tất cả những người sử  
dụng có liên quan và những người trong hệ thống - thường những người gặp  
nhau trong từ 5 đến 10 ngày để phát triển một mô tả chức năng chi tiết của  
những yêu cầu ứng dụng. Các cuộc họp ban ngày được sử dụng về những phân  
tích mới, những cuộc họp ban đêm lập tài liệu về những kết quả ban ngày để  
xem xét lại và tiếp tục chắt lọc trong ngày tiếp theo.  
Có rất nhiều lợi ích từ việc tham gia của người sử dụng trong phát triển ứng  
dụng.  
Trước tiên nó xây dựng sự cam kết của những người sử dụng - những  
người đương nhiên đảm nhiệm quyền sở hữu của hệ thống.  
Thứ hai, những người sử dụng là những chuyên gia thực sự của những công việc  
đang được tự động - lại được đại diện hoàn toàn thông qua sự phát triển.  
Thứ ba, những nhiệm vụ được người sử dụng thực hiện bao gồm việc thiết kế  
màn hình, các mẫu, các báo cáo, sự phát triển tài liệu của người sử dụng, sự phát  
triển và tiến hành của các cuộc kiểm tra công nhận,...  
Sự tham gia của người sử dụng không chỉ là ước muốn mà còn là một  
mệnh lệnh đối với tiến trình và sản phẩm phát triển ứng dụng hoàn toàn hiệu  
quả. Khía cạnh quan trọng nhất của sự tham gia của người sử dụng là nó phải có  
ý nghĩa. Người sử dụng phải là những người quyết định và là những người mong  
muốn tham gia vào quá trình phát triển. Sử dụng đội ngũ nhân viên ở cấp thấp  
hoặc chỉ định các nhà quản lý mở rộng không phải là cách để kéo người sử dụng  
vào các ứng dụng phát triển.  
Mục tiêu của việc tham gia của người sử dụng là cho những người phát  
triển hệ thống và không phát triển hệ thống làm việc cùng với nhau như những  
đối tác chứ không phải như những kẻ thù. Khi những người sử dụng tham gia thì  
họ sẽ tạo ra những quy định không mang tính kỹ thuật. Những kỹ sư phần mềm  
giải thích và hướng dẫn người sử dụng tạo ra những quy định nữa kỹ thuật, ví dụ  
như việc thiết kế màn hình, và giải thích cả những tác động và suy luận của các  
quy định kỹ thuật chính yếu.  
Việc tham gia của người sử dụng có nghĩa là người sử dụng sẽ điều khiển dự án,  
tạo nên phần lớn quy định và có tính quyết định cuối cùng đối với tất cả các  
quyết định lớn. Các kỹ sư phần mềm và các nhân viên của các hệ thống quản lý  
thông tin khác hoạt động như những kỹ thuật viên phục vụ, như là những chức  
năng của họ.  
Bài 2. TIẾN TRÌNH PHẦN MỀM  
A. MỤC TIÊU CỦA BÀI  
- Mục tiêu của công nghệ phần mềm là sản xuất ra những phần mềm tốt, có  
chất lượng cao. Các nhân tố ảnh hưởng đến chất lượng phần mềm có thể được  
phân thành hai nhóm chính: các nhân tố có thể đo trực tiếp và các nhân tố chỉ có  
thể đo gián tiếp.;.  
- Tuỳ theo công dụng của sản phẩm và nhu cầu thực tế của người sử dụng,  
các chuẩn của quốc gia, quốc tế, nền văn minh của cộng đồng, thời điểm,... mà  
các tiêu chuẩn để lượng hoá phần mềm có thể thay đổi;  
B. NỘI DUNG  
2.1. Tiêu chuẩn của sản phẩm phần mềm  
Để đánh giá được sản phẩm của một nền công nghệ là tốt hay xấu, chúng ta phải  
nghiên cứu để đưa ra được những tiêu chuẩn đánh giá chúng. Chất lượng của  
sản phẩm phần mềm bao gồm nhiều yếu tố dựa trên các tiêu chuẩn đã được tổng  
kết.  
2.1.1. Tính đúng  
Một sản phẩm thực hiện được gọi là đúng nếu nó thực hiện chính xác những  
chức năng đã đặc tả và thỏa mãn các mục đích công việc của khách hàng.  
Như vậy, một sản phẩm phải được so sánh chuẩn đặt ra để kiểm tra tính đúng và  
điều này dẫn đến có nhiều bậc thang về tính đúng.  
Liệt kê theo thang giảm dần, tính đúng của phần mềm có thể:  
+ Tuyệt đối đúng,  
+ Đúng ,  
+ Có lỗi,  
+ Có nhiều lỗi,...  
Ví dụ: Một hệ thống xử lý dữ liệu không chạy được khi file cơ sở dữ liệu rỗng  
hoặc có quá 104 bảng ghi,...là những hệ thống vi phạm tính đúng.  
2.1.2. Tính khoa học  
Tính khoa học của phần mềm được thể hiện qua các mặt  
   
Khoa học về cấu trúc.  
Khoa học về nội dung.  
Khoa học về hình thức thao tác.  
2.1.3. Tính tin cậy  
Tính tin cậy của sản phẩm phần mềm thể hiện ở sản phẩm được trông chờ thực  
hiện các chức năng dự kiến của nó với độ chính xác được yêu cầu.  
2.1.4. Tính kiểm thử được  
Phần mềm có thể kiểm thử được là phần mềm mà nó có cách dễ dàng để có thể  
kiểm tra được. Đảm bảo rằng nó thực hiện đúng các chức năng dự định.  
2.1.5. Tính hữu hiệu  
Tính hữu hiệu của phần mềm được xác định qua các tiêu chuẩn sau:  
Hiệu quả kinh tế hoặc ý nghĩa; giá trị thu được do áp dụng sản phẩm đó.  
Tốc độ xử lý sản phẩm.  
Giới hạn tối đa của sản phẩm hoặc miền xác định của chương trình được xác  
định qua khối lượng tối đa của các đối tượng mà sản phẩm đó quản lý.  
2.1.6. Tính sáng tạo  
Một sản phẩm phần mềm có tính sáng tạo khi nó thảo mãn một trong các tính  
chất sau:  
Sản phẩm được thiết kế và cài đặt đầu tiên.  
Sản phẩm được phục vụ cho những đặc thù riêng.  
Sản phẩm có những đặc điểm khác về mặt nguyên lý so với các sản phẩm hiện  
hành.  
Sản phẩm có những ưu thế nổi bậc so với sản phẩm hiện hành.  
2.1.7. Tính an toàn  
Tính an toàn của sản phẩm phần mềm được đánh giá thông qua:  
Có cơ chế bảo mật và bảo vệ các đối tượng do hệ thống phát sinh hoặc quản lý.  
Bản thân sản phẩm được đặt trong một cơ chế bảo mật nhằm chống sao chép  
trộm hoặc làm biến dạng sản phẩm đó.  
2.1.8. Tính toàn vẹn  
Sản phẩm phần mềm có tính toàn vẹn khi nó:  
Có cơ chế ngăn ngừa việc thâm nhập bất hợp pháp vào phần mềm hay dữ liệu  
và ngăn ngừa việc phát sinh ra những đối tượng (dữ liệu, đơn thể...) sai quy cách  
hoặc mâu thuẩn với các đối tượng sẳn có.  
Không gây ra nhập nhằng trong thao tác. Đảm bảo nhất quán về cú pháp.  
Có cơ chế phục hồi lại toàn bộ hoặc một phần những đối tượng thuộc toàn bộ  
hoặc một phần những đối tượng thuộc diện quản lý của sản phẩm trong trường  
hợp có sự cố như hỏng máy, mất điện đột ngột.  
2.1.9. Tính đối xứng và đầy đủ chức năng  
Sản phẩm cung cấp đủ các chức năng cho người sử dụng và các chức năng của  
sản phẩm có các cặp loại trừ lẫn nhau, ví dụ các chức năng đối xứng thường  
gặp:  
+ Tạo lập - Hủy bỏ,  
+ Thêm - Bớt (xem - xóa),  
+ Tăng - Giảm,  
+ Dịch chuyển lên - xuống; phải - trái,  
+ Quay xuôi - ngược chiều kim đồng hồ,...  
2.1.10. Tính tiêu chuẩn và tính chuẩn  
Sản phẩm phần mềm cần đạt được một số tiêu chuẩn tối thiểu được thừa  
nhận trong thị trường hoặc trong khoa học, và có thể chuyển đổi dạng cấu trúc  
dữ liệu riêng của hệ thống sang chuẩn và ngược lại.  
Tính chuẩn của phần mềm thể hiện ở sản phẩm đó phù hợp với các chuẩn quốc  
gia hoặc quốc tế.  
Trong khi xây dựng phần mềm, cần tuân theo nguyên tắc chuẩn hoá sau:  
+ Chỉ thiết kế và xây dựng phần mềm sau khi đã xác định được chuẩn.  
+ Mọi thành phần của phần mềm phải được thiết kế và cài đặt theo cùng một  
chuẩn (tối tiểu thì các chuẩn phải tương thích nhau).  
2.1.11. Tính độc lập  
Phần mềm cần và nên đảm bảo được tính độc lập với các đối tượng sau:  
độc lập với thiết bị,  
độc lập với cấu trúc của đối tượng mà sản phẩm đó quản lý,  
độc lập với nội dung của đối tượng mà sản phẩm đó quản lý.  
Tính dễ phát triển, hoàn thiện  
Thể hiện ở phần mềm có thể mở rộng cho các phương án khác hoặc mở rộng,  
tăng cường về mặt chức năng một cách rõ ràng.  
2.2. Quản lý dự án phần mềm  
Các hoạt động chuẩn bị dự án  
Lựa chọn phương án để phát triển hệ thống là một quyết định hệ trọng. Sơ  
đồ lựa chọn phương án cho một dự án phần mềm được trình bày như sau:  
Tham biến hệ thống  
được cấp
phát  
Cách tiếp cận khác  
Phương
án  
Phương
án  
Phương
án  
Phương
án  
Đánh giá các phương án  
+ Chọn tiêu chuẩn đánh giá: hiệu năng, hiệu quả, chi phí vòng  
đời  
+ Áp dụng các công nghệ phân tích  
+ Sinh dữ liệu  
+ Kết quả đánh giá  
+ Phân tích
nhạy cảm  
Chọn  
phương  
án khác  
Cách tiếp cận được chọn  
Không  
Cách tiếp cận có  
khả thi không  
Có  
Định nghĩa và tổng hợp hệ  
 
Trước khi lập kế hoạch dự án, cần phải thiết lập các mục tiêu và phạm vi  
của dự án. Người quản trị dự án và kỹ sư phần mềm lên kế hoạch điều khiển dự  
án, đăng ký đội ngũ nhân viên làm nhiệm vụ sau đó tiến hành lựa chọn giải  
pháp, phương án.  
Nếu không có những thông tin này thì không thể xác định được những ước  
lược hợp lý và chính xác về chi phí, không thể tiến hành chia nhỏ các nhiệm vụ  
thực tế và không thể xác định được thời gian biểu cho dự án.  
Khi các mục tiêu và phạm vi đã được hiểu rõ thì xem xét tới các giải pháp  
khác, những ràng buộc khác như: hạn giao hàng, khả năng nhân sự, ràng buộc  
ngân sách, giao diện kỹ thuật,.... để lựa chọn phương án phát triển hệ thống.  
2.3. Lập kế hoạch dự án  
Người quản trị dự án và kỹ sư phần mềm xác định nhân tố con người, máy  
tính và các tài nguyên tổ chức yêu cầu để phát triển ứng dụng.  
Kế hoạch dự án chính là sơ đồ các nhiệm vụ, thời gian và các mối quan hệ giữa  
chúng. Việc lên kế hoạch, nói chung, thường gồm các bước sau:  
+ Liệt kê các nhiệm vụ: gồm các nhiệm vụ phát triển ứng dụng, các nhiệm vụ  
đặc trưng của dự án, các nhiệm vụ về tổ chức giao diện, sự xem xét lại và các  
việc phê chuẩn.  
+ Định danh phụ thuộc giữa các công việc.  
+ Xác định nhân viên dựa vào kỹ năng và kinh nghiệm.  
+ Ấn định thời gian hoàn thành cho mỗi công việc bằng các tính toán thời gian  
hợp lý nhất cho mỗi công việc.  
+ Định danh hướng đi tới hạn.  
+ Xem xét lại các tài liệu theo khía cạnh đầy đủ, nội dung, độ tin cậy và độ chắc  
chắn.  
+ Thương lượng, thỏa thuận và cam kết ngày bắt đầu và kết thúc công việc.  
+ Xác định các giao diện giữa các ứng dụng cần thiết, đặt kế hoạch cho việc  
thiết kế giao diện chi tiết.  
2.3.1. Các nhiệm vụ trong lập kế hoạch dự án thường bao gồm:  
 
Tải về để xem bản đầy đủ
doc 78 trang yennguyen 24100 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Công nghệ phần mềm - Nghề: Lập trình máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docgiao_trinh_cong_nghe_phan_mem_nghe_lap_trinh_may_tinh.doc