Skip to main content

Kiến trúc và thiết kế phần mềm

Enrollment in this course is by invitation only

VỀ MÔN HỌC NÀY!

Xin chào tất cả các bạn !

Sau khi học môn học này các bạn sẽ biết được những khái niệm căn bản trong Kiến trúc và thiết kế phần mềm. Khóa học sẽ dẫn dắt các bạn đi từng bước cách khai thác các nội dung trong quản lý yêu cầu phần mềm để đưa ra được kiến trúc phần mềm và bản thiết kế phù hợp. Với vai trò một Designer, các bạn sẽ được hướng dẫn thực hiện các bước từ cách đánh giá yêu cầu để lựa chọn kiến trúc phù hợp, cách thiết kế phù hợp cho với các yêu cầu dự án đã đề ra.

Về mặt chuyên môn nội dung, khóa học này sẽ cung cấp cho các bạn một số nội dung tổng quát những vấn đề khi bạn đối mặt với việc lựa chọn kiến trúc và cách thiết kế tương đương. Bên cạnh đó các bạn cũng được luyện tập sử dụng một số công cụ, ứng dụng để xây dựng kiến trúc phù hợp. Kết thúc môn học, bạn sẽ có thể nắm được cơ bản các hoạt động trong quá trình lựa chọn kiến trúc phần mềm và cách thiết kế phù hợp.

Chúc các bạn học tốt!


ĐỐI TƯỢNG THAM GIA

  • Những người có mong muốn học lấy bằng ĐH, hoàn thành xong chứng chỉ CC3 có thể trở thành lập trình viên, kỹ sư phần mềm
  • Là những người muốn bổ sung kiến thức về kiến trúc và thiết kế phần mềm

MỤC TIÊU MÔN HỌC

Sau khi học xong môn này, học viên sẽ đạt được các chuẩn kiến thức, kỹ năng đầu ra như sau:

  1. Trình bày lại được vai trò quan trọng của thiết kế và kiến trúc trong phần mềm, cũng như phân biệt được thiết kế phần mềm (Software design) và kiến trúc phần mềm (Software architecture).
  2. Trình bày lại được các khái niệm chi tiết của thiết kế phần mềm, cũng như phân loại và vận dụng được các ký hiệu được dùng trong 1 bản thiết kế phần mềm (Design Notation).
  3. Trình bày lại được các vấn đề gặp phải khi thiết kế phần mềm. Phân biệt được tài liệu hóa thiết kế (design documentation) và xác nhận thiết kế (design validation). Trình bày lại được cở sở thiết kế (Design Rationale), Coupling và Cohension, đối tượng Leonardo (Leonardo Objects).
  4. Vận dụng được tính trừu tượng (Abstraction), tinh chế (Refinement) và thẩm mỹ (Aesthetic) trong thiết kế phần mềm
  5. Trình bày lại được các khái niệm của ngôn ngữ ràng buộc đối tượng (OCL - Object Constraint Language) và ngôn ngữ mô hình hợp nhất (UML - Unifed Model Language).
  6. Trình bày lại được cú pháp của OCL, tính bất biến và vai trò của OCL
  7. Mô tả lại được khái niệm và các tính chất của logic vị từ bậc nhất (FOPL - First order predicate logic). Vận dụng được cách sử dụng của OCL trong đặc tả hình thức (Formal Specification)
  8. Trình bày lại được các kỹ thuật input, output, ordering trong yêu cầu phần mềm, cũng như các khái niệm tiền điều kiện/hậu điều kiện (pre/postcondition) trong đặc tả hình thức (formal specification).
  9. Mô tả lại được các sự kiện (event), trạng thái (state), kỹ thuật mô hình kết hợp, điều kiện lặp, dữ liệu, chuyển tiếp (transition) và các quan hệ trong sơ đồ lớp.
  10. Mô tả lại cũng như sử dụng được cách mô hình hóa với biểu đồ trạng thái (State Diagram) và máy trạng thái hữu hạn (FSM - Finite State Machine)
  11. Mô tả lại được tổng quan về phong cách kiến trúc phần mềm (Architectural style). Trình bày lại được khái niệm định nghĩa phi hình thức (Informal definition) của kiến trúc phần mềm.
  12. Trình bày lại được các khái niệm USP definition, Components và Selecting Component, APIs, Connectors, Configuration, Terminology, Architectural views, styles trong kiến trúc phần mềm
  13. Trình bày lại được các khái niệm của Logical view, Developmental view, Process view, Physical view, Usecase view, Context view, Feature View, Non functional view, Bug reporting view, Utility view. Vận dụng được các loại diagram, views, OCL trong thiết kế phần mềm.
  14. Trình bày lại được các benefits, aggregation, mediators trong cách thiết kế và vận dụng mô hình. Trình bày lại được các cách áp dụng quản lý chất lượng và phân loại chất lượng cho các yêu cầu phi chức năng (non-functional).
  15. Trình bày và vận dụng được các phương thức quản lý chất lượng cho các kiểu cầu phi chức năng (non-functional reqs) và  phong cách kiến trúc (architectural styles) phần mềm với các phương pháp pipe and filter.
  16. Vận dụng được các thành phần nguyên bản (atomic elements) và các loại kết nối (connectors): Procedure Call, Event, Data Access, Linkage, Stream, Arbitrator, Adaptor, Distrubutor trong thiết kế phần mềm.
  17. Mô tả lại được kiến trúc của hệ thống phân tán với các phần mềm trung gian (middleware), đặc điểm, tính chất của middleware: transaction (ACID), Cordination, Reliability, Scability, Heterogenity.
  18. Mô tả lại được các khái niệm của Precedural Middleware, Webservice, SOA và SOA rearchitecting. Trình bày được vai trò của middleware trong trong kiến trúc phần mềm.
  19. Trình bày lại được cách thiết kế Bottom-Up và các thành phần (components). Trình bày lại được khái niệm về callbacks và vận dụng được callbacks trong thiết kế phần mềm.
  20. Mô tả lại được từ Phân tích hướng đối tượng đến thiết kế hướng đối tượng
  21. Mô tả lại được định nghĩa về thiết kế phần mềm, cách xây dựng báo cáo thiết kế (design report) và các sản phẩm phải giao nộp trong giai đoạn thiết kế (design phase).
  22. Mô tả lại được và biết cách vận dụng lớp, tên lớp, các đặc điểm của sơ đồ lớp (Associations, Association Class, Aggregations & Composition, Qualifiers, Links và Generalizations) trong mô hình UML.
  23. Mô tả được khái niệm về phân tích hướng đối tượng (OOA - Object Oriented Analysis). Vận dụng được các bước và kỹ thuật phân tích (Generalizations, Aggregations, Associations) trong OOA.
  24. Trình bày lại được các khái niệm về Aggregations, Textual content, Applicability, Structural Patterns, Behaviral Patterns, Visitor pattern, Visitor Behavior. Vận dụng được design pattern trong thiết kế phần mềm.
  25. Sử dụng được các metric đo lường để review các sản phẩm thiết kế phần mềm


TRẢI NGHIỆM HỌC TẬP

Môn học sẽ có 4 phần, gồm 17 bài học. Mỗi bài sẽ có một số đoạn video yêu cầu học viên phải xem kỹ, một hoặc vài bài đọc thêm và trả lời câu hỏi trắc nghiệm. Xen kẽ giữa các bài học là một số bài tập thực hành yêu cầu sinh viên vận dụng lý thuyết để thực hành. Ngoài ra sau mỗi phần sẽ có bài Assignment để học viên có thể sử dụng kiến thức đã học để thiết kế bản tài liệu thiết kế phần mềm

Trong thời gian học (dự kiến là 6 tuần), việc phân bổ tuần học là rất quan trọng. Nếu các bạn có bất cứ câu hỏi nào hãy kết nối với Mentor để được giải đáp.


ĐẶC ĐIỂM CỦA MÔN HỌC

  • Môn học sẽ giới thiệu đến học viên quy trình thiết kế một bản thiết kế phần mềm
  • Những điểm cơ bản trong việc đưa ra kiến trúc phần mềm trong giai đoạn thiết kế
  • Với vai trò một Designer, các bạn sẽ được hướng dẫn thực hiện các bước từ cách đánh giá yêu cầu để lựa chọn kiến trúc phù hợp, cách thiết kế phù hợp cho với các yêu cầu dự án đã đề ra

CHUYÊN GIA THIẾT KẾ VÀ PHẢN BIỆN MÔN HỌC

THIẾT KẾ MÔN HỌC: Nguyễn Duy Nghiêm

  • Tốt nghiệp Thạc sĩ ngành Khoa học máy tính tại Đại học Collins (Mỹ), lấy Bằng Tiến sĩ năm 2019 tại Đại học Charles (Australia)
  • Từng tham gia làm việc trong ngành công nghiệp phần mềm với các vị trí Kỹ sư phần mềm, Trưởng nhóm, Quản lý dự án tại Việt Nam, Nhật Bản và các quốc gia khác từ năm 2003-2015
  • Tham gia giảng dạy tại các trường đại học ở Việt Nam, Nhật Bản và Úc với các chương trình Quản lý dự án, Vòng đời phát triển phần mềm, Internet of Things, Lập trình nhúng, Hệ thống thông tin quản lý từ năm 2009-2017…
  • Hơn 10 năm đào tạo học viên các môn chuyên ngành CNTT tại Viện Quản trị Kinh doanh FSB (Đại học FPT) và giảng dạy nội bộ tại trung tâm đào tạo của FPT Software.
  • Giám đốc Đại học FPT Greenwich, campus Đà Nẵng.

FUNIX WAY

Mục đích của các chương trình học theo FUNiX Way là người học tự tin và thành thạo trong môi trường số, có thể kiếm được thu nhập bằng nghề mà mình theo học hoặc sử dụng những gì đã học được để làm tốt hơn việc hiện tại, có động lực và khả năng nâng cao tay nghề, có thể làm thành viên dự án chuyên môn và tham gia cộng đồng nghề như một thành viên có trách nhiệm.


NGUỒN HỌC LIỆU

Khóa học MOOC này được cung cấp trên nền tảng Udacity. Đây là nền tảng cung cấp các khóa học trực tuyến đại chúng mở được đánh giá rất cao trong các nền tảng MOOC, ngang với các nền tảng hàng đầu như Coursera, edX.

Việc liệt kê nguồn dưới đây không nhất thiết hàm ý rằng FUNiX có sự hợp tác chính thức với chủ sở hữu của nguồn: Azim Abdool, Contex Dev, Christian Damus, Derek Banas, dolabuy, SMILE Program, Sptech, Udacity.


KÊNH PHẢN HỒI

FUNiX sẵn sàng đón nhận và trao đổi về mọi ý kiến góp ý, phản hồi liên quan đến học liệu qua email program@funix.edu.vn