课程大纲:形式科学 - 计算机科学 - 软件工程 - 软件设计

第一周:课程介绍与基础概念

学习目标:

  1. 了解软件设计的基本原理和目的
  2. 熟悉软件开发生命周期模型
  3. 认识形式化方法在软件设计中的重要性

主题:

  • 软件设计概述
  • 开发过程与软件架构
  • 形式化方法简介(UML,Petri网等)

阅读资源:

教学方法:

  • 讲座:介绍基本概念
  • 小组讨论:理解软件架构的重要性

评估:

  • 课后阅读理解问题

第二周至第四周:软件设计原则与模式

学习目标:

  1. 掌握常用设计模式
  2. 理解模块化与抽象的概念
  3. 学习如何进行系统分解

主题:

  • 模块化与单一职责原则
  • 设计模式(工厂模式、观察者模式等)
  • 高内聚低耦合原则

阅读资源:

  • "设计模式:可复用面向对象软件的基础" by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  • "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin

教学方法:

  • 讲座:讲解设计模式
  • 实践活动:设计小型项目中的模式应用
  • 小组讨论:分享设计决策

评估:

  • 项目设计报告
  • 小型设计模式测试

第五周至第七周:软件架构设计

学习目标:

  1. 了解主流软件架构风格
  2. 学习如何选择和评估架构
  3. 使用工具进行架构可视化

主题:

  • 微服务架构
  • 单体架构与分布式架构
  • 架构决策的影响因素

阅读资源:

教学方法:

  • 讲座:架构理论与案例分析
  • 工作坊:使用工具(如Archimate)进行架构设计
  • 角色扮演:模拟架构决策场景

评估:

  • 架构设计模型展示
  • 架构决策报告

第八周:软件测试与维护

学习目标:

  1. 了解软件测试策略
  2. 理解持续集成和持续部署
  3. 简单的代码审查实践

主题:

  • 测试驱动开发(TDD)
  • 静态代码分析
  • 代码审查流程

阅读资源:

教学方法:

  • 讲座:测试和维护的重要性
  • 实践:TDD示例
  • 小组项目:实施CI/CD流程

评估:

  • TDD实践报告
  • CI/CD流程演示

结束语:项目与反思

学习目标:

  1. 完成综合项目
  2. 总结软件设计的关键点
  3. 分享个人学习体验

主题:

  • 项目展示与反馈
  • 课程回顾与自我评估
  • 未来职业规划

评估:

  • 项目成果展示
  • 课程总结报告

通过这个课程,学生将不仅掌握软件设计技巧,还将培养批判性思维和团队合作能力。每个阶段的评估旨在确保学生深入理解和实际操作所学知识。