Chương trình SWE của CMU

1. Qui trình kĩ nghệ phần mềm

Chủ đề: Qui trình và sản phẩm kĩ nghệ phần mềm. Mọi hoạt động kĩ nghệ phần mềm. Khái niệm về mô hình qui trình phần mềm và mô hình vòng đời sản phẩm phần mềm. Kỉ luật và ích lợi của việc tuân theo qui trình được xác định.

Khía cạnh: Mọi khía cạnh, thích hợp cho các hoạt động đa dạng.

Mục tiêu: Tri thức về các hoạt động và khía cạnh. Một số nhận thức về vấn đề, đặc biệt phân biệt giữa các lớp hoạt động. Siinh viên nên bắt đầu hiểu khác biệt bản chất giữa lập trình và kĩ nghệ phần mềm, như nó được thực hành một cách chuyên nghiệp trong công nghiệp.

2. Tiến hoá phần mềm (Vòng đời)

Chủ đề: Khái niệm về vòng đời sản phẩm phần mềm. Các dạng khác nhau của sản phẩm phần mềm, từ quan niệm khởi đầu qua phát triển và vận hành tới cho về hưu. Kiểm soát các hoạt động và kỉ luật để hỗ trợ tiến hoá. Các biến cố được lập kế hoạch và không lập kế hoạch ảnh hưởng tới tiến hoá phần mềm. Vai trò của thay đổi công nghệ.

Khía cạnh: Các mô hình tiến hoá phần mềm, bao gồm mô hình vòng đời phát triển như thác đổ, nâng cao qua lặp, phát triển theo pha, xoáy ốc.

Mục tiêu: Tri thức và hiểu thấu về các mô hình. Tri thức và hiểu thấu về hoạt động kiểm soát. Sinh viên phải biết chi tiết mọi pha của vòng đời để tuân theo nó từ yêu cầu tới cho cho về hưu sản phẩm phần mềm.

3. Thế hệ phần mềm (Mô hình và phương pháp)

Chủ đề: Các phương pháp đa dạng về phát sinh phần mềm, kể cả thiết kế và viết mã từ đâu, dùng cấu phần tái dụng (bao gồm các ví dụ như thư viện thủ tục toán học, các gói được thiết kế đặc biệt cho dùng lại, đơn vị chương trình sinh, phần mềm mở, và ghép nối chương trình như qua đường ống, dùng chương trình hay bộ sinh ứng dụng và ngôn ngữ mức rất cao, vai trò của làm bản mẫu. Các yếu tố ảnh hưởng tới chọn lựa phương pháp sinh phần mềm. Hiệu quả của phương pháp sinh lên hoạt động phát triển phần mềm, như kiểm thử và bảo trì.

Khía cạnh: các mô hình về sinh phần mềm. Các biểu diễn cho sinh phần mềm, bao gồm thiết kế  và thực hiện các ngôn ngữ, các ngôn ngữ rất cao, và các bộ sinh ứng dụng. Công cụ để hỗ trợ phương pháp sinh, kể cả bộ sinh ứng dụng.

Mục tiêu: Tri thức và hiểu thấu về đa dạng phương pháp của sinh phần mềm. Khả năng áp dụng từng phương pháp khi được hỗ trợ bởi công cụ thích hợp. Khả năng đánh giá các phương pháp và chọn phương pháp thích hợp cho từng dự án.

4. Bảo trì phần mềm

Chủ đề: Bảo trì như một phần của tiến hoá phần mềm. Lí do để bảo trì. Các loại bảo trì (hoàn thiện, thích ứng, sửa chữa). So sánh các hoạt động phát triển trong phát triển sản phẩm khởi đầu và trong bảo trì. Hoạt động kiểm soát và kỉ luật ảnh hưởng tới bảo trì. Thiết kế cho có tính bảo trì. Kĩ thuật bảo trì.

Khía cạnh: Các mô hình bảo trì. Phương pháp hiện thời.

Mục tiêu: Tri thức và hiểu thấu về các vấn đề bảo trì phần mềm và thực hành bảo trì hiện thời.

5. Trao đổi kĩ thuật (kĩ năng mềm)

Chủ đề: Nền tảng về trao đổi kĩ thuật. Trao đổi nói và viết. Chuẩn bị bài trình bày nói và tài liệu hỗ trợ. Tài liệu dự án phần mềm đủ loại. Trao đổi làm việc tổ, nói cho công chúng, kĩ năng trình bày, kĩ năng trao đổi trong tổ.

Khía cạnh: Các nguyên lí trao đổi. Công cụ chuẩn bị tài liệu. Chuẩn cho trình bày và tài liệu.

Mục tiêu: Tri thức về những nền tảng của trao đổi kĩ thuật và tài liệu phần mềm. Áp dụng các nền tảng cho trao đổi nói và viết. Khả năng phân tích, tổng hợp và đánh giá trao đổi kĩ thuật.

6. Quản lí cấu hình phần mềm

Chủ đề: Các khái niệm về quản lí cấu hình. Vai trò của nó trong tiến hoá phần mềm. Bảo trì tính toàn vẹn. Kiểm soát thay đổi và kiểm soát phiên bản. Cấu trúc tổ chức cho quản lí cấu hình.

Khía cạnh: Các nguyên lí nền tảng. Công cụ. Tài liệu, kể cả kế hoạch quản lí cấu hình.

Mục đích: Tri thức và hiểu thấu về các vấn đề. Khả năng áp dụng tri thức để phát triển bản kế hoạch quản lí cấu hình và dùng công cụ thích hợp.

7. Vấn đề chất lượng phần mềm

Chủ đề: Định nghĩa chất lượng. Các yếu tố ảnh hưởng tới chất lượng phần mềm. Lập kế hoạch cho chất lượng. Mối quan tâm chất lượng trong từng pha của đời phần mềm, với nhấn mạnh đặc biệt vào đặc tả các thuộc tính hệ thống phổ biến. Đo và chuẩn chất lượng. Nguyên lí và phương pháp đánh giá phần mềm. Vai trò của trắc nghiệm và vai trò của kiểm thử. Viết mã an ninh, an ninh như chất lượng.

Khía cạnh: Đánh giá về chất lượng phần mềm: cách đo thích hợp. Công cụ để giúp thực hiện đo. Phương pháp đánh giá tính đúng đắn, kể cả kiểm thử và trắc nghiệm hình thức. Mô hình hình thức về trắc nghiệm chương trình.

Mục tiêu: Tri thức và hiểu thấu về vấn đề chất lượng phần mềm và phương pháp đúng đắn. Khả năng áp dụng chứng minh của phương pháp đúng đắn.

8. Đảm bảo chất lượng phần mềm

Chủ đề: Đảm bảo chất lượng phần mềm như kỉ luật kiểm soát. Cấu trúc tổ chức cho đảm bảo chất lượng. Tổ trắc nghiệm và kiểm nghiệm độc lập. Tổ kiểm thử và đánh giá. Kiểm điểm kĩ thuật phần mềm. Kế hoạch đảm bảo chất lượng phần mềm.

Khía cạnh: Thực hành công nghiệp hiện thời cho đảm bảo chất lượng. Tài liệu bao gồm kế hoạch đảm bảo chất lượng, báo cáo giám định, kiểm định, và báo cáo kiểm tra kiểm nghiệm.

Mục tiêu: Tri thức và hiểu thấu về lập kế hoạch đảm bảo chất lượng. Khả năng phân tích và tổng hợp các kế hoạch đảm bảo chất lượng. Khả năng thực hiện các kiểm điểm kĩ thuật. Tri thức và hiểu thấu về các nền tảng của trắc nghiệm chương trình, và vai trò của nó trong đảm bảo chất lượng. Khả năng áp dụng các khái niệm về đảm bảo chất lượng như một phần của tổ đảm bảo chất lượng.

9. Vấn đề quản lí và tổ chức dự án phần mềm

Chủ đề: Lập kế hoạch dự án: chọn mô hình qui trình, lập lịch và cột mốc dự án. Công tác nhân viên: phát triển tổ chức tổ, tổ đảm bảo chất lượng. Phân bổ tài nguyên.

Khía cạnh: Các khái niệm và nguyên lí nền tảng. Biểu diễn và công cụ lập lịch. Tài liệu dự án.

Mục tiêu: Tri thức và hiểu thấu về các khái niệm và vấn đề. Không đặt thành mong đợi là sinh viên, sau khi học môn này, sẽ lập tức sẵn sàng quản lí dự án phần mềm nhưng hiểu được khái niệm. Họ cần đào tạo phụ bằng việc học các môn thêm về kinh tế phần mềm, vấn đề vận hành.

10. Kinh tế dự án phần mềm

Chủ đề: Ước lượng chi phí, phân tích chi phí/ích lợi, phân tích rủi ro cho dự án phần mềm. Các yếu tố ảnh hưởng tới chi phí. Lập ngân sách, lập kế hoạch và quản lí phần mềm ở chỗ làm việc. Khác biệt giữa các công ti tư và cơ quan chính phủ, khu vực công và tư, doanh nghiệp lớn và nhỏ.

Khía cạnh: Mô hình ước lượng chi phí. Kĩ thuật hiện thời và công cụ cho ước lượng chi phí.

Mục tiêu: tri thức và hiểu thấu về mô hình và kĩ thuật. Khả năng áp dụng tri thức vào việc dùng công cụ.

11. Vấn đề vận hành phần mềm

Chủ đề: Vấn đề tổ chức có liên quan tới việc dùng hệ thống phần mềm trong tổ chức. Đào tạo, cài đặt hệ thống, vận hành, cho về hưu. Tài liệu người dùng.

Khía cạnh: Tài liệu người dùng và tài liệu đào tạo.

Mục đích: Tri thức và hiểu thấu về vấn đề chính.

12. Kĩ nghệ yêu cầu 1 (Phân tích)

Chủ đề: Qui trình tương tác với khách hàng để xác định các yêu cầu hệ thống. Xác định yêu cầu phần mềm. Nhận diện các yêu cầu chức năng, hiệu năng và các yêu cầu khác: yêu cầu hệ thống phổ cập. Các kĩ thuật để nhận diện yêu cầu, kể cả làm bản mẫu, mô hình hoá, và mô phỏng.

Khía cạnh: Các nguyên lí và mô hình về yêu cầu. Các kĩ thuật về nhận diện yêu cầu. Công cụ để hỗ trợ cho những kĩ thuật này, nếu có. Đánh giá các yêu cầu. Trao đổi với khách hàng.

Mục đích: Tri thức và hiểu thấu về các khái niệm về phân tích yêu cầu và các lớp yêu cầu khác nhau. Tri thức về các kĩ thuật phân tích yêu cầu. Khả năng áp dụng các kĩ thuật và phân tích và tổng hợp các yêu cầu cho hệ thống đơn giản.

13. Kĩ nghệ yêu cầu 2 (Đặc tả)

Chủ đề: Các mục tiêu của qui trình đặc tả. Hình thức, nội dung, và người dùng tài liệu chuyên môn. Xác định các yêu cầu chức năng, hiệu năng và các yêu cầu khác của hệ thống. Mô hình hình thức và biểu diễn đặc tả. Chuẩn đặc tả.

Khía cạnh: Mô hình hình thức và biểu diễn. Các kĩ thuật đặc tả và công cụ hỗ trợ cho chúng, nếu có. Đánh giá về đặc tả theo thuộc tính như tính nhất quán và tính đầy đủ. Tài liệu đặc tả.

Mục đích: Tri thức và hiểu thấu về các khái niệm nền tảng của đặc tả. Tri thức về các mô hình đặc tả, biểu diễn và kĩ thuật, và khả năng áp dụng hay dùng một hay nhiều trong chúng. Khả năng phân tích và tổng hợp tài liệu đặc tả cho hệ thống đơn giản.

14. Kiến trúc hệ thống

Chủ đề: Vai trò của kiến trúc hệ thống và thiết kế phần mềm. Cách kiến trúc khớp vào trong vòng đời. Phần mềm như một cấu phần của hệ thống. Phần cứng so với phần mềm, bù trừ cho hiệu năng hệ thống và tính linh hoạt. Xác định và thiết kế hệ con. Thiết kế giao diện mức cao, cả phần cứng với phần mềm và phần mềm với phần cứng.

Khía cạnh: các kĩ thuật và biểu diễn mô hình hoá hệ thống. Phương pháp cho thiết kế hệ thống, bao gồm thiết kế hướng đối tượng, và công cụ hỗ trợ cho các phương pháp này. Các kĩ thuật thiết kế lặp. Dự báo hiệu năng.

Mục tiêu: Hiểu thấu về các vấn đề trong thiết kế hệ thống, nhấn mạnh vào những bù trừ kĩ nghệ. Khả năng dùng các mô hình thiết kế hệ thống thích hợp, các phương pháp và công cụ, bao gồm những công cụ để xác định giao diện. Khả năng phân tích và tổng hợp các hệ nhỏ.

15. Thiết kế phần mềm

Chủ đề: Các nguyên lí thiết kế, kể cả trừu tượng hoá và che giấu thông tin, tính mô đun, tái dụng, làm bản mẫu. Các mức thiết kế. Biểu diễn thiết kế. Thực hành và kĩ thuật thiết kế. Ví dụ về mô thức thiết kế cho hệ thống được hiểu rõ.

Khía cạnh: Các nguyên lí về thiết kế phần mềm. Một hay nhiều kí pháp hay ngôn ngữ thiết kế. Một hay nhiều phương pháp thiết kế được sử dụng rộng rãi và công cụ hỗ trợ, nếu sẵn có. Đánh giá về chất lượng của thiết kế. Tài liệu thiết kế.

Mục tiêu: Tri thức và hiểu thấu về một hay nhiều biểu diễn thiết kế, phương pháp thiết kế, và công cụ hỗ trợ, nếu sẵn có. Khả năng phân tích và tổng hợp cho hệ thống phần mềm. Khả năng áp dụng các phương pháp và công cụ như một phần của tổ thiết kế.

16. Thực hiện phần mềm

Chủ đề: Mối quan hệ của thiết kế và thực hiện. Các tính năng của ngôn ngữ thủ tục hiện đại liên quan tới nguyên lí thiết kế. Vấn đề thực hiện bao gồm cấu phần tái dụng và bộ sinh ứng dụng. Khái niệm môi trường hỗ trợ lập trình.

Khía cạnh: Một hay nhiều ngôn ngữ thực hiện và công cụ hỗ trợ. Đánh giá thực hiện: chuẩn và độ đo viết mã.

Mục tiêu: Khả năng phân tích, tổng hợp, và đánh giá việc thực hiện các hệ thống nhỏ.

17. Kiểm thử phần mềm

Chủ đề: Vai trò của kiểm thử và mối quan hệ của nó với đảm bảo chất lượng. Bản chất và giới hạn của kiểm thử. Các mức kiểm thử: đơn vị, tích hợp, chấp nhận v.v. Học tập chi tiết về kiểm thử ở mức đơn vị. Mô hình hình thức của kiếm thử. Lập kế hoạch kiểm thử. Kiểm thử hộp đen và hộp trắng. Xây dựng môi trường kiểm thử. Sinh trường hợp kiểm thử. Phân tích kết quả kiểm thử.

Khía cạnh: Các nguyên lí và mô hình kiểm thử. Công cụ để hỗ trợ cho các loại kiểm thử. Đánh giá kiểm thử; chuẩn kiểm thử. Tài liệu kiểm thử.

Mục tiêu: Tri thức và hiểu thấu về vai trò và giới hạn của kiểm thử. Khả năng áp dụng công cụ và kĩ thuật kiểm thử. Khả năng phân tích kế hoạch kiểm thử và kết quả kiểm thử. Khả năng tổng hợp kế hoạch kiểm thử.

18. Tích hợp hệ thống

Chủ đề: Kiểm thử ở mức hệ thống phần mềm. Tích hợp các cấu phần phần mềm và phần cứng của hệ thống. Dùng mô phỏng cho các cấu phần phần cứng bị thiếu. Chiến lược cho tích hợp và kiểm thử.

Khía cạnh: Phương pháp và công cụ hỗ trợ cho kiểm thử hệ thống và tích hợp hệ thống. Đánh giá kết quả kiểm thử và chẩn đoán lỗi hệ thống. Làm tài liệu: kế hoạch tích hợp, kết quả kiểm thử.

Mục tiêu: Hiểu thấu vấn đề và kĩ thuật của tích hợp hệ thống. Khả năng áp dụng các kĩ thuật để làm tích hợp và kiểm thử hệ thống. Khả năng phát triển kiểm thử hệ thống và kế hoạch tích hợp. Khả năng diễn giải kết quả kiểm thử và chẩn đoán lỗi hệ thống.

19. Hệ thống thời gian thực nhúng

Chủ đề: Các đặc trưng của hệ thống thời gian thực nhúng. Sự tồn tại của yêu cầu chia thời cứng. Song hành trong hệ thống và biểu diễn song hành trong đặc tả yêu cầu, thiết kế, và viết mã. Các vấn đề liên quan tới giao diện phức tạp giữa các thiết bị và giữa phần mềm và thiết bị. Tính găng của hệ thống nhúng và vấn đề vững chãi, tin cậy và dung sai. Các cân nhắc vào và ra, kể cả biểu diễn dữ liệu bất thường được thiết bị yêu cầu. Các vấn đề liên quan tới nhận dạng thời gian. Các vấn đề liên quan tới tính không có khả năng để kiểm thử hệ thống một cách thích hợp.

Mục tiêu: Hiểu thấu về các vấn đề có ý nghĩa trong phân tích, thiết kế và xây dựng các hệ thống thời gian thực nhúng. Khả năng tạo ra hệ thống nhỏ bao gồm xử lí ngắt, vào và ra mức thấp, song hành, và yêu cầu chia thời gian cứng, có thể ưa chuộng trong ngôn ngữ bậc cao.

20. Giao diện con người

Chủ đề: Các yếu tố kĩ nghệ phần mềm: áp dụng các kĩ thuật thiết kế vào vấn đề giao diện con người, kể cả các khái niệm về độc lập thiết bị và thiết bị cuối ảo. Các nhân tố con người: xác định và hiệu ứng của kết cụm màn hình, giả định về lớp người dùng hệ thống, tính vững chãi và giải quyết của thao tác viên về lỗi đưa vào, dùng mầu trong hiển thị.

Mục tiêu: Hiểu thấu về các vấn đề chính. Khả năng áp dụng các kĩ thuật thiết kế để tạo ra giao diện con người tốt. Khả năn thiết kế và tiến hành thực nghiệm với các giao diện, để phân tích kết quả, và cải tiến thiết kế như một kết quả.

Cấu phần kinh nghiệm dự án

Công việc dự án (Capstone) là bản chất để phát triển kĩ năng kĩ nghệ phần mềm. Chúng tôi có ý kiến rằng xấp xỉ 30% thời gian của sinh viên nên được dành cho công việc dự án hiện thực. Cấu phần giáo trình này có thể được cấu trúc theo một số cách. Đến lúc sinh viên vào năm thứ ba, họ cần bắt đầu làm việc trên các dự án nhỏ trong môi trường làm việc tổ. Điều này là tốt để dùng cách tiếp cận mau lẹ để cho phép họ hoàn thành dự án nhỏ trong quãng ba tới sáu tuần. Đến thời gian họ vào năm cuối, điều quan trọng là làm dự án capstone – làm dự án ở đỉnh điểm bao quát mọi pha vòng đời thật. Capstone cần được phát triển hợp tác với công nghiệp.

Tác phẩm, tác giả, nguồn

  • Tác phẩm: Lời khuyên về giảng dạy dành cho giáo viên
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
  • Wiki hóa: https://kipkis.com