Xem mẫu

  1. NGUYỄN THẾ DŨNG NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Trƣờng Đại học Sƣ phạm - Đại học Huế Huế, tháng 11 năm 2014 1
  2. Giáo trình này được viết bởi Nguyễn Thế Dũng, giảng viên Khoa Tin học, Trường ĐHSP - Đại học Huế. Giáo trình này được dùng để giảng dạy và học tập học phần: Nhập môn Công nghệ phần mềm. Mã số: TINS4392 2
  3. Lời nói đầu Môn học Nhập môn Công nhệ phần mềm là học phần bắt buộc trong khung chương trình của hầu hết sinh viên ngành Sư phạm Tin học. Hiện nay đã có khá nhiều tài liệu về môn học này. Tuy vậy phần lớn được trình bày dưới dạng sách chuyên khảo, do đó sinh viên rất khó khăn trong việc học môn này. Bên cạnh đó với các đặc thù của sinh viên ngành Sư phạm, nên việc học tập môn học mang nặng tính lý thuyết suông đối với sinh viên. Ngay từ đầu giáo trình, chúng tôi đưa ra mục tiêu và tóm tắt nội dung học phần mà khung chương trình đã quy định để làm rõ mục đích cần đạt được khi học môn học này của sinh viên Sư phạm Tin học so với sinh viên các ngành chuyên về Công nghệ phần mềm. Cuối các chương mục, chúng tôi đưa vào phần ôn tập chương cùng các câu hỏi và bài tập nhằm giúp sinh viên dễ học tập và có một cái nhìn rộng hơn về thực tiễn hay các vấn đề mở mà giáo trình chưa đề cập đến do giới hạn khuôn khổ. Do trong khung chương trình, phần quản lý dự án phần mềm được tách riêng thành một học phần gồm 2 tín chỉ, nên giáo trình sẽ không bao gồm phần này như thường thấy trong một số giáo trình khác. Giáo trình được chia thành 7 chương. Chương 1. Tổng quan về công nghệ phần mềm Chương 2. Qui trình phát triển phần mềm Chương 3. Phân tích và đặc tả yêu cầu Chương 4. Thiết kế Chương 5. Lập trình Chương 6. Kiểm thử Chương 7. Triển khai và bảo trì. 3
  4. Trong quá trình biên soạn giáo trình này, chúng tôi có tham khảo một số tài liệu của một số tác giả khác nhằm mang lại những kiến thức phong phú, phù hợp nhất cho sinh viên, nhưng có thể chưa kịp liên hệ được với chính các tác giả ấy. Mong các Thầy, cô vì sự học của các sinh viên mà niệm tình bỏ quá. Tác giả chân thành cảm ơn các thầy cô Hà Viết Hải, Lê Văn Tường Lân, Nguyễn Thị Hoàng Anh… đã góp ý cho bản thảo rất tận tình. Đồng thời xin chân thành cảm ơn quý Thầy cô khác cũng đã giúp đỡ chúng tôi rất nhiều. Chúng tôi cũng gửi lời cảm ơn đến rất nhiều bạn sinh viên đã giúp chúng tôi sưu tầm các tư liệu làm cơ sở để hoàn thành giáo trình này. Giáo trình không tránh khỏi những thiếu sót và đặc biệt là sự thiếu cập nhật thông tin đối với một môn học có tính thời sự công nghệ này. Rất mong sự góp ý, đánh giá, nhận xét của quý Thầy cô, Sinh viên… để giáo trình được hoàn thiện hơn. Xin chân thành cảm ơn. Huế, Ngày 10 tháng 09 năm 2014 Nguyễn Thế Dũng Khoa Tin học – ĐHSP Huế. zungnguyen2003@yahoo.com http://sites.google.com/site/nguyenthedunghue/ 4
  5. Dưới đây là trích dẫn mục tiêu và tóm tắt nội dung của học phần được khung chương trình đào tạo giáo viên Tin học Trung học phổ thông do Bộ Giáo dục và Đào tạo đưa ra năm 2007. Mục tiêu học phần NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Giúp cho sinh viên nắm được quá trình phát triển một phần mềm một cách hiệu quả, mang tính công nghiệp và hiểu được những khái niệm cơ bản thuộc lĩnh vực này. Trên cơ sở đó sinh viên có định hướng đúng đắn khi học tập nghiên cứu các môn khác cũng như đi sâu vào nghiên cứu và thực hành làm phần mềm. Tóm tắt nội dung học phần NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Nội dung môn học bao gồm: các quy trình xây dựng và đánh giá một phần mềm; vận dụng để xây dựng được những phần mềm cỡ nhỏ đáp ứng thực tế công việc và các đề án. 5
  6. MỤC LỤC CHƢƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM ....... 9 1. Một số khái niệm ............................................................................................ 9 2. Nhân tố con người và phân loại nghề nghiệp trong công nghệ phần mềm. ................................................................................................................. 15 3. Sản phẩm phần mềm – đặc trưng và phân loại............................................. 22 Chƣơng 2. QUI TRÌNH PHÁT TRIỂN PHẦN MỀM................... 28 1. Qui trình phát triển phần mềm ..................................................................... 28 2. Mô hình phát triển phần mềm ...................................................................... 34 3. Trợ giúp tự động hoá phát triển .................................................................... 46 Chƣơng 3. PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU ......................... 49 1. Đại cương về phân tích và đặc tả yêu cầu. ................................................... 49 2. Phân tích và đặc tả yêu cầu .......................................................................... 53 3. Nguyên lý phân tích và mô hình hóa ............................................................ 66 4. Đặc tả yêu cầu .............................................................................................. 74 5. Thẩm định yêu cầu ....................................................................................... 76 6. Làm bản mẫu trong quá trình phân tích ....................................................... 77 7. Định dạng đặc tả yêu cầu ............................................................................. 79 8. Quản lý yêu cầu ............................................................................................ 82 9. Phân tích và đặc tả yêu cầu theo mô hình tiến trình hợp nhất (Unified Process Model). ................................................................................................ 84 Chƣơng 4. THIẾT KẾ .................................................................... 102 1. Khái niệm về thiết kế phần mềm ................................................................ 102 2. Thiết kế hướng chức năng .......................................................................... 114 3. Thiết kế kiến trúc ........................................................................................ 118 4. Thiết kế giao diện người dùng .................................................................... 128 5. Thiết kế thủ tục ........................................................................................... 133 6. Thiết kế hướng đối tượng ........................................................................... 135 Chƣơng 5. LẬP TRÌNH .................................................................. 151 1. Khái niệm ................................................................................................... 151 2. Ngôn ngữ lập trình ...................................................................................... 152 3. Phong cách lập trình ................................................................................... 154 4. Kỹ thuật lập trình ........................................................................................ 156 5. Lập trình hướng hiệu quả thực hiện ........................................................... 158 Chƣơng 6. KIỂM THỬ ................................................................... 161 6
  7. 1. Đại cương về kiểm thử phần mềm ............................................................. 161 2. Các mức độ kiểm thử.................................................................................. 163 3. Các hoạt động kiểm thử .............................................................................. 167 4. Kỹ thuật kiểm thử ....................................................................................... 169 5. Chiến thuật kiểm thử phần mềm ................................................................ 169 6. Kiểm thử hướng đối tượng ......................................................................... 178 7. Chứng minh toán học tính đúng đắn của chương trình. ............................. 180 Chƣơng 7. TRIỂN KHAI VÀ BẢO TRÌ ....................................... 189 1. Triển khai phần mềm .................................................................................. 189 2. Hiện thực và triển khai phần mềm được xây dựng theo mô hình hướng đối tượng ......................................................................................................... 193 3. Bảo trì ......................................................................................................... 198 7
  8. BẢNG THUẬT NGỮ Phần mềm Software 9 Phần cứng Hardware 9 Công nghệ phần Software 5 mềm Technology Kỹ nghệ phần Software 13 mềm Engineering CASE Computer- aided software engineering Đặc tả yêu cầu Software phần mềm Requirement Specification 8
  9. CHƢƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM Mục đích Trình bày các khái niệm thiết yếu của Công nghệ phần mềm như định nghĩa, đối tượng nghiên cứu, con người, sản phẩm… Yêu cầu Biết được những khái niệm thiết yếu trong Công nghệ phần mềm. Biết được tổ chức nhân sự và vai trò của từng thành viên trong nhóm phát triển phần mềm. Biết được các loại tài liệu kỹ thuật. 1. Một số khái niệm Thuật ngữ phần mềm (software) cần được hiểu trong sự đối chiếu với thuật ngữ phần cứng (hardware) được đưa ra trong ngành điện tử. Theo đó phần cứng (hardware) là những thiết bị có thể sờ mó cầm nắm, trong khi đó phần mềm là những gì làm cho các thiết bị vô tri vô giác đó có thể hoạt động được. Phần mềm trong Tin học có thể được hiểu bao gồm: - Tập các lệnh máy tính nhằm thực hiện các chức năng xác định. - Các cấu trúc dữ liệu cho phép chương trình thao tác với dữ liệu. - Các tài liệu giúp cho người dùng có thể vận hành được phần mềm. Trong một hệ thống máy tính, nếu trừ bỏ đi các thiết bị và các loại phụ kiện thì phần còn lại chính là phần mềm. Theo nghĩa hẹp: Phần mềm là tập các chương trình dịch vụ để tăng khả năng xử lý của phần cứng của máy tính (như hệ điều hành - OS). Theo nghĩa rộng: Phần mềm là tất cả các kỹ thuật ứng dụng để thực hiện những dịch vụ chức năng cho mục đích nào đó bằng phần cứng. Nếu hiểu theo nghĩa rộng thì phần mềm bao gồm các nhóm minh họa như dưới đây: 9
  10. Nhóm các kỹ thuật, phương pháp luận Bao gồm: Các khái niệm và trình tự cụ thể hóa một hệ thống; Các phương pháp tiếp cận giải quyết vấn đề; Các trình tự thiết kế và phát triển được chuẩn hóa; Các phương pháp đặc tả yêu cầu, thiết kế hệ thống, thiết kế chương trình, kiểm thử, toàn bộ quy trình quản lý phát triển phần mềm. Nhóm các chương trình Đó là phần giao diện với phần cứng, tạo thành từ các nhóm lệnh chỉ thị cho máy tính biết trình tự thao tác xử lý dữ liệu. Phần mềm cơ bản: với chức năng cung cấp môi trường thao tác dễ dàng cho người sử dụng nhằm tăng hiệu năng xử lý của phần cứng (ví dụ như các hệ điều hành, các chương trình hệ thống). Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp nào đó (quản lý, kế toán, . . .), phần mềm đóng gói, phần mềm của người dùng,... Nhóm các tư liệu Đó là những tư liệu hữu ích, có giá trị cao cần thiết để phát triển, vận hành và bảo trì phần mềm. Để sản xuất ra phần mềm với độ tin cậy cao cần tạo ra các tư liệu chất lượng cao: đặc tả yêu cầu, mô tả thiết kế từng loại, điều kiện kiểm thử, thủ tục vận hành, hướng dẫn thao tác,… Một số giáo trình về môn học này dùng các thuật ngữ có khác nhau về tên môn học này như Công nhệ phần mềm, Kỹ nghệ phần mềm, Công trình học phần 10
  11. mềm… Nên ở đây chúng ta cần xem xét một số vấn đề liên quan đến kiến thức chung là: Khoa học, công nghệ, kỹ nghệ và công nghiệp. Công nghiệp, là một bộ phận của nền kinh tế, là lĩnh vực sản xuất hàng hóa vật chất mà sản phẩm được "chế tạo, chế biến" cho nhu cầu tiêu dùng hoặc phục vụ hoạt động kinh doanh tiếp theo. Đây là hoạt động kinh tế, sản xuất quy mô lớn, được sự hỗ trợ thúc đẩy mạnh mẽ của các tiến bộ về công nghệ, khoa học và kỹ thuật. Một nghĩa rất phổ thông khác của từ “công nghiệp” là "hoạt động kinh tế quy mô lớn, sản phẩm (có thể là phi vật thể) tạo ra trở thành hàng hóa". Theo nghĩa này, những hoạt động kinh tế chuyên sâu khi đạt được một quy mô nhất định sẽ trở thành một ngành công nghiệp, ngành kinh tế như: công nghiệp phần mềm máy tính, công nghiệp điện ảnh, công nghiệp giải trí, công nghiệp thời trang, công nghiệp báo chí, v.v.. Công nghệ (tiếng Anh: technology) là sự tạo ra, sự biến đổi, việc sử dụng, và kiến thức về các công cụ, máy móc, kỹ thuật, kỹ năng nghề nghiệp, hệ thống, và phương pháp tổ chức, nhằm giải quyết một vấn đề, cải tiến một giải pháp đã tồn tại, đạt một mục đích, hay thực hiện một chức năng cụ thể. Công nghệ cũng có thể chỉ đến một tập hợp những công cụ như vậy, bao gồm máy móc, những sự sắp xếp, hay những quy trình. Công nghệ ảnh hưởng đáng kể lên khả năng kiểm soát và thích nghi của con người cũng như của những động vật khác vào môi trường tự nhiên của mình. Thuật ngữ có thể được dùng theo nghĩa chung hay cho những lĩnh vực cụ thể, ví dụ như "công nghệ xây dựng", "công nghệ thông tin". Trong tiếng Việt, các từ "khoa học", "kỹ thuật", và "công nghệ" đôi khi được dùng với nghĩa tương tự nhau hay được ghép lại với nhau (chẳng hạn "khoa học kỹ thuật", "khoa học công nghệ", và "kỹ thuật công nghệ"). Tuy vậy, công nghệ khác với khoa học và kỹ thuật. Khoa học là toàn bộ hoạt động có hệ thống nhằm xây dựng và tổ chức kiến thức dưới hình thức những lời giải thích và tiên đoán có thể kiểm tra được về vũ trụ. Còn kỹ thuật là việc ứng dụng kiến thức khoa học, kinh tế, xã hội, và thực tiễn để thiết kế, xây dựng, và duy trì các cấu trúc, máy móc, thiết bị, hệ thống, vật liệu, và quá trình. Công nghệ (có nguồn gốc từ technologia, hay τεχνολογια, trong tiếng Hy Lạp; techne có nghĩa là thủ công và logia có nghĩa là "châm ngôn") là một thuật 11
  12. ngữ rộng ám chỉ đến các công cụ và mưu mẹo của con người. Tuỳ vào từng ngữ cảnh mà thuật ngữ công nghệ có thể được hiểu: + Công cụ hoặc máy móc giúp con người giải quyết các vấn đề; + Các kỹ thuật bao gồm các phương pháp, vật liệu, công cụ và các tiến trình để giải quyết một vấn đề; + Các sản phẩm được tạo ra phải hàng loạt và giống nhau. + Sản phẩm có chất lượng cao và giá thành hạ. Kỹ nghệ (engineering) nói tới một tập hợp các công nghệ được bố trí theo một qui trình nhất định, được con người dùng các phương pháp và thực hiện qua các công cụ để tạo ra những sản phẩm nhất định. Kỹ nghệ là việc sử dụng phối hợp các công nghệ cần thiết để sản xuất ra các sản phẩm của một ngành nào đó. Cần phân biệt công nghệ là nói đến những kỹ thuật được phát triển cho một loại vấn đề nào đó, còn kỹ nghệ nói đến các qui trình nghiêm ngặt phối hợp các công nghệ, phương pháp và công cụ để làm ra sản phẩm có chất lượng. Định nghĩa công nghệ do Uỷ ban Kinh tế và Xã hội khu vực Châu Á - Thái Bình Dương (ESCAP): Công nghệ là kiến thức có hệ thống về quy trình và kỹ thuật dùng để chế biến vật liệu và thông tin. Nó bao gồm kiến thức, thiết bị, phương pháp và các hệ thống dùng trong việc tạo ra hàng hoá và cung cấp dịch vụ. Mặc dù theo tiến trình phát triển, hiện nay khái niệm Kỹ nghệ phần mềm được dùng cho môn học. Nhưng do yếu tố lịch sử và khách quan của tên môn học trong khung chương trình chung của sinh viên, nên trong giáo trình này cụm từ Công nghệ phần mềm và Kỹ nghệ phần mềm được dùng với nghĩa tương tự nhau. Rất mong người đọc suy xét. Theo IEEE [1993]: Kỹ nghệ phần mềm là: (1) việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng hóa trong phát triển, vận hành và bảo trì phần mềm; (2) nghiên cứu các phương pháp tiếp cận được dùng trong (1) 12
  13. Theo Pressman [2001]: Kỹ nghệ phần mềm là bộ môn tích hợp cả quy trình, các phương pháp, các công cụ để phát triển phần mềm máy tính. Theo Sommerville [2007]: 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. Như vậy có thể khái quát: Kỹ 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 nhận kỹ nghệ phần mềm là một mô hình được phân theo bốn 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. Công cụ Phương pháp Quy trình Chất lượng Ở đây, tầng chất lượng hướng đến việc đảm bảo chất lượng và kiểm thử phần mềm. Tầng quy trình 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 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ả. 13
  14. Tầng công cụ 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ệ). 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 (Computer-aided software engineering). - Biết cách sử dụng các mẫu phần mềm (software 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 để sử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. Đối tƣợng nghiên cứu của công nghệ phần mềm 14
  15. Hướng đến việc xây dựng các phần mềm có chất lượng như đã nêu, ngành công nghệ phần mềm đưa ra 3 đối tượng nghiên cứu chính: Qui trình công nghệ, Phương pháp phát triển, Công cụ và Môi trường phát triển phần mềm. - Qui trình công nghệ phần mềm: Hệ thống các giai đoạn mà quá trình phát triển phần mềm phải trải qua. Với mỗi giai đoạn cần xác định rõ mục tiêu, kết quả nhận từ giai đoạn trước đó cũng chính là kết quả chuyển giao cho giai đoạn kế tiếp. - Phương pháp phát triển phần mềm: Hệ thống các hướng dẫn cho phép từng bước thực hiện một giai đoạn nào đó trong qui trình công nghệ phần mềm. - Công cụ và môi trường phát triển phần mềm: Hệ thống các phần mềm trợ giúp chính trong lĩnh vực xây dựng phần mềm. Các phần mềm này sẽ hỗ trợ trong các bước xây dựng phần mềm theo một phương pháp nào đó với một qui trình được chọn trước. 2. Nhân tố con ngƣời và phân loại nghề nghiệp trong công nghệ phần mềm. 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. 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. 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 15
  16. 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, 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. a. 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 độ cao để 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ế. Phân tích viên hệ thống: Phân tích viên hệ thống đóng vai trò đặc biệt quan trọng trong tiến trình phân tích. Ngoài kinh nghiệm, một phân tích viên tốt cần có các khả năng sau: - Khả năng hiểu thấu các khái niệm trừu tượng, có khả năng tổ chức lại thành các phân tích logic và tổng hợp các giải pháp dựa trên từng dải phân chia. 16
  17. - Khả năng rút ra các sự kiện thích đáng từ các nguồn xung khắc và lẫn lộn. - Khả năng hiểu được môi trường người dùng/khách hàng. - Khả năng áp dụng các phần tử hệ thống phần cứng và/hoặc phần mềm vào môi trường người sử dụng/khách hàng. - Khả năng giao tiếp tốt ở dạng viết và nói. - Khả năng trừu tượng hóa/tổng hợp vấn đề từ các sự kiện riêng lẻ. Kỹ sư tri thức (Knowledge Engineer): 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. b. 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 17
  18. để 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 - DataBase Administrator): 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. c. 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 máy tính cá nhân. Để 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 18
  19. 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. 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 – Sofware Support): 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. d. Nhân viên Chuyên gia về bảo mật: Một chuyên gia bảo mật chịu trách nhiệm bảo mật và sẵn sàng phục hồi thảm hoạ. Để bảo mật, một chuyên gia phải thiết lập các chuẩn cho bảo mật dữ liệu, giúp đỡ các đội dự án trong việc quyết định các yêu cầu bảo mật và thiết lập các chuẩn cho trung tâm bảo mật dữ liệu. Tương tự để phục hồi thảm hoạ, chuyên gia bảo mật giúp đỡ những người quản lý và các đội dự án trong việc xác định các dữ liệu nguy cấp cần thiết cho tổ chức. Sau đó chuyên gia giúp trung tâm dữ liệu và các đội dự án trong việc phát triển và thử nghiệm các kế hoạch phục hồi thảm hoạ. Kiểm soát viên: Các kiểm soát viên thực hiện việc kiểm tra khả năng tin cậy của những thiết kế ứng dụng. Bất kỳ ứng dụng nào duy trì những quy định hợp 19
  20. pháp, trách nhiệm hoặc dùng bản hướng dẫn của công ty cũng có thể bị tạo lại bất kỳ giao dịch nào và phát hiện ra tiến trình của nó. Các kiểm soát viên đảm bảo rằng những mất mát của công ty là nhỏ nhất qua việc thiết kế những ứng dụng tốt. Những khía cạnh thiết kế được các kiểm soát viên đánh giá là rãnh kiểm soát, khả năng phục hồi và bảo mật. Đào tạo: Một người đào tạo kỹ thuật học công nghệ mới, các sản phẩm đại lý, những đặc điểm ngôn ngữ mới,... sau đó dạy những người khác trong tổ chức sử dụng. Đào tạo có thể thực hiện trong nội bộ tổ chức những cũng có thể do một công ty đào tạo có chuyên môn đảm nhận. Người viết các chuẩn và kỹ thuật: Những người phát triển chuẩn làm việc với những người quản lý để định ra những mặt công việc họ muốn chuẩn hoá và để tiêu chuẩn hoá những yêu cầu thành những chính sách và thủ tục chuẩn hoá cho tổ chức. Những kỹ năng quan trọng nhất đối với người phát triển chuẩn là ngôn ngữ và chữ viết truyền thông. Phát triển tiêu chuẩn và việc viết kỹ thuật là các hoạt động có liên quan với nhau. Người viết kỹ thuật lấy thông tin và sản phẩm phần mềm, ứng dụng hoặc những sản phẩm công nghệ thông tin khác và viết tài liệu để mô tả những đặc điểm, chức năng, công dụng của chúng. Người viết kỹ thuật phải có kỹ năng giao tiếp tốt trong cả lĩnh vực kỹ thuật và phi kỹ thuật. Người viết dùng các kỹ năng giao tiếp kỹ thuật để nói và phát triển sự hiểu biết về sản phẩm được giới thiệu. Đảm bảo chất lượng (QA): Các dạng kiểm tra khác nhau tuỳ thuộc vào sản phẩm được duyệt. Một phân tích đảm bảo chất lượng thường được thực hiện với một kế hoạch phát triển khi nó bắt đầu. Anh ta hay cô ta cần phải tham gia đến khi sản phẩm đầu tiên của nhóm phát triển xuất hiện. Sau đó khi mà tài liệu đã có, người phân tích đảm bảo chất lượng phải xem xét sự thống nhất, hoàn thiện, chính xác uyển chuyển linh động của nó. Bất cứ vấn đề nào xuất hiện trong quá trình xem xét phải được ghi lại để trình lên người quản lý dự án. Những người phân tích đảm bảo chất lượng phải có kỹ năng giao tiếp, kỹ năng giải quyết vấn đề để thực hiện công việc kiểm tra chất lượng. Họ cần phải có kinh nghiệm trong tất cả các khía cạnh phát triển của dự án để biết nên làm cái gì và vấn đề nảy sinh từ đâu. Đồng thời sự nhạy cảm và khả năng phát hiện ra những vấn đề cần phê bình cũng rất quan trọng. Không ai muốn bị nói trước công chúng 20
nguon tai.lieu . vn