DEV Community

Cover image for Giới thiệu học phần Công nghệ phần mềm
Le Hong Phuc
Le Hong Phuc

Posted on

Giới thiệu học phần Công nghệ phần mềm

Học phần Công nghệ phần mềm là nền tảng quan trọng để xây dựng các hệ thống phần mềm hiệu quả, đáp ứng nhu cầu nghiệp vụ và kỹ thuật. Đây là học phần cung cấp kiến thức từ việc lên ý tưởng, phân tích, thiết kế cho đến việc ứng dụng các kiến trúc phần mềm như MVC, Three-layer nhằm giải quyết bài toán một cách hệ thống, đáp ứng cả về nghiệp vụ và kỹ thuật. Với những bạn định hướng trở thành Designer hoặc Business Analyst, đây là học phần không thể thiếu.

Dưới đây là lộ trình chi tiết các chủ đề trong học phần Công nghệ phần mềm:


1. Software Requirement Specifications (Đặc tả yêu cầu phần mềm)

  • Mục tiêu: Hiểu rõ và tài liệu hóa yêu cầu phần mềm từ phía khách hàng.
  • Nội dung học:
    • Quy trình thu thập yêu cầu từ khách hàng.
    • Phân loại yêu cầu: chức năng (Functional) và phi chức năng (Non-functional).
    • Kỹ thuật đặc tả yêu cầu: sử dụng UML (Unified Modeling Language).
    • Viết tài liệu SRS (Software Requirement Specification) chuẩn hóa.
  • Ứng dụng: Đảm bảo đội ngũ phát triển hiểu đúng và đầy đủ về mong muốn của khách hàng.

2. Software Development Process (Quy trình phát triển phần mềm)

  • Mục tiêu: Nắm vững các quy trình phát triển phần mềm hiện đại và áp dụng hiệu quả trong dự án thực tế.
  • Nội dung học:
    • Waterfall Model: tuyến tính, phù hợp với dự án nhỏ và yêu cầu rõ ràng.
    • Spiral Model: sự kết hợp giữa phát triển lặp và kiểm soát rủi ro.
    • Iterative, Incremental Frameworks: phát triển phần mềm theo từng phân đoạn nhỏ, dễ kiểm soát chất lượng.
  • Ứng dụng: Giúp lựa chọn quy trình phù hợp với đặc thù của từng dự án phần mềm.

3. Object Orientation (Hướng đối tượng)

  • Mục tiêu: Hiểu và áp dụng nguyên lý lập trình hướng đối tượng để xây dựng phần mềm linh hoạt, dễ mở rộng.
  • Nội dung học:
    • Các khái niệm cơ bản: Lớp (Class), Đối tượng (Object), Thuộc tính (Attributes) và Phương thức (Methods).
    • Đóng gói (Encapsulation), Kế thừa (Inheritance), Đa hình (Polymorphism) và Trừu tượng (Abstraction).
    • Sử dụng Interface và Abstract Classes để thiết kế hệ thống linh hoạt.
  • Ứng dụng: Giúp việc thiết kế tuân thủ đúng tinh thần hướng đối tượng. Từ đó, giúp cho sản phẩm có cấu trúc rõ ràng, dễ bảo trì.

4. Use Case Diagram (Biểu đồ Use Case)

  • Mục tiêu: Biểu diễn các chức năng của hệ thống và tương tác của người dùng một cách trực quan.
  • Nội dung học:
    • Các thành phần chính: Actor, Use Case và mối quan hệ giữa chúng.
    • Phân tích chức năng hệ thống thông qua các Use Case.
    • Công cụ hỗ trợ: Draw.io, LucidChart.
  • Ứng dụng: Dễ dàng giao tiếp với khách hàng và đội ngũ phát triển về chức năng của hệ thống.

5. Class Diagram (Biểu đồ lớp)

  • Mục tiêu: Biểu diễn cấu trúc dữ liệu và mối quan hệ giữa các thành phần trong hệ thống.
  • Nội dung học:
    • Thành phần của biểu đồ: Lớp (Class), Quan hệ (Association, Aggregation, Composition, ...).
    • Biểu diễn mối quan hệ giữa các lớp thông qua UML.
    • Thiết kế các lớp dựa trên nguyên tắc DRY (Don’t Repeat Yourself) và KISS (Keep It Simple, Stupid).
  • Ứng dụng: Là nền tảng để phát triển cơ sở dữ liệu và codebase.

6. Architectural Design (Thiết kế kiến trúc)

  • Mục tiêu: Xây dựng kiến trúc tổng thể cho hệ thống phần mềm.
  • Nội dung học:
    • Kiến trúc MVC: Phân tách logic trình bày, xử lý nghiệp vụ và dữ liệu.
    • Kiến trúc Three-layer: Presentation, Business và Data Access Layers.
    • Thiết kế hệ thống hỗ trợ Sequence Diagram và các biểu đồ khác.
  • Ứng dụng: Tạo ra một hệ thống phần mềm có cấu trúc rõ ràng và dễ mở rộng.

7. Sequence Diagram (Biểu đồ tuần tự)

  • Mục tiêu: Minh họa cách các đối tượng trong hệ thống tương tác theo trình tự thời gian.
  • Nội dung học:
    • Thành phần: Lifeline, Messages và Activation Bars.
    • Phân tích luồng xử lý nghiệp vụ từ đầu vào đến đầu ra.
    • Sử dụng công cụ để vẽ như Draw.io hoặc UMLet.
  • Ứng dụng: Hỗ trợ lập trình viên hiểu rõ luồng hoạt động trong hệ thống.

8. Collaboration Diagram (Biểu đồ cộng tác)

  • Mục tiêu: Biểu diễn sự hợp tác giữa các đối tượng để thực hiện một nhiệm vụ.
  • Nội dung học:
    • Thành phần chính: Objects, Links, Messages.
    • Phân biệt Collaboration Diagram và Sequence Diagram.
    • Ứng dụng Collaboration Diagram vào việc thiết kế hệ thống.
  • Ứng dụng: Giúp tối ưu hóa mối quan hệ giữa các thành phần trong hệ thống.

9. GRASP Pattern (Nguyên tắc GRASP)

  • Mục tiêu: Ứng dụng các nguyên tắc thiết kế phần mềm để đảm bảo tính ổn định và dễ bảo trì.
  • Nội dung học:
    • Các nguyên tắc GRASP: Expert, Creator, Controller, Low Coupling, High Cohesion.
    • Áp dụng các nguyên tắc trong thiết kế Class Diagram và Sequence Diagram.
  • Ứng dụng: Tăng hiệu quả thiết kế và tính tái sử dụng của hệ thống.

10. System Architecture - Large and Complex (Kiến trúc hệ thống lớn và phức tạp)

  • Mục tiêu: Xây dựng các hệ thống lớn với kiến trúc hiện đại, đáp ứng khả năng mở rộng và hiệu năng cao.
  • Nội dung học:
    • Microservices: Phân tách hệ thống thành các dịch vụ nhỏ độc lập.
    • Event-driven Architecture: Xây dựng hệ thống phản ứng theo sự kiện.
    • CQRS (Command Query Responsibility Segregation) và DDD (Domain-Driven Design).
  • Ứng dụng: Giải quyết các bài toán phức tạp trong doanh nghiệp lớn.

Kết Luận

Roadmap này không chỉ giúp bạn nắm vững các khái niệm cốt lõi mà còn chuẩn bị đầy đủ kiến thức để bạn tự tin áp dụng trong việc phân tích và thiết kế đáp ứng nghiệp vụ bài toán. Hãy từng bước khám phá và thực hành các chủ đề trên để đạt được kết quả tốt nhất nhé.

Top comments (0)