软件工程实践/课程思路

来自人工智能助力教育知识百科
Toweiyg讨论 | 贡献2024年4月8日 (一) 08:47的版本 参考书籍
跳转至: 导航搜索
百科首页 | 课程思路 | 课程大纲 | 主题讲座 | 支撑工具 | 点滴知识 | 历届作品

学情分析

学生为大三计算机专业学生,在大三上学期学习了软件工程理论课程。主要专业课程包括:计算机科学导论、人工智能导论、信息伦理与道德、程序设计基础、数据结构、算法设计与分析、面向对象方法与技术、数据库系统、软件工程、计算机系统导论、计算机组成与结构、操作系统、计算机网络、编译原理等。这里面包括计算机通用知识,也包括编程、数据库、数据结构、算法和软件工程等相关课程。从以往的经历来看,大家的工程化能力和体系性综合能力较弱

大三下的 学生面临考研、找工作等现实 问题,如果课程任务太重,比如课后还需要花很多时间的话,会让学生难以接受。当然也要考虑部分学生还是愿意学习得更深入。所以课程安排,要有梯度:

  • 能在课堂上完成任务,课后基本不需要花时间,这类学生应该要在70%,但这部分学生可能很难拿到优秀。
  • 如果以上都不认真参与,可能处于及格或几个以下。
  • 要给30%的学生拿到优秀的机会,这部分除了在课堂上认真完成、全力以赴之外,课后还需要花一些精力,比如每周2小时左右。

总体原则

根据我院培养学生的目标,本课程应该是计算机专业用于加强前期各课程学习综合应用的机会。也是为其进入社会的提前演习,因此,我们要尽量来到真实世界。

  • 模仿社会实践中软件工程项目如何开展的。因为在现实情况下,工程项目因资金等条件限制,开展的方式方法也是不尽相同。如外包企业、创业项目、企业自研等,在流程上、组织上也差异较大。
  • 根据学情分析,首先要至少服务于60%的学生,30%有高要求的学生,10%的学生可能表现较差。
  • 要尽量让学生对课程活动提升兴趣,因此计划采用创业项目的方式。

主要措施

  • 鼓励学生从创业的角度拟定项目:从组队、创意、执行、交互和运营全面进行。
  • 引入“赛马”机制,创业项目要遴选。别的队也可以做同样的题目。
  • 还可以从毕业论文的角度思考,能否作为毕业论文的工程化部分
  • 参考案例一定瞄准实际应用的项目,可以是已有项目的2.0、3.0……
  • 实现和编程环境可选:可以是小程序开发、可以是应用系统实现、可以是结合AI硬件等等
  • 加强业绩经验的分享,穿插几个讲座
  • 与软件工程理论课部分指标进行结合,用于最后项目的评审评优

实施顺序

  • 第一阶段:先创业,利用软件工程课堂知识
  1. 确定人才市场、定义创意,引入赛马和创业
  2. 可以网上找,一个Base版本,也可以直接开发一个alpha0.1版本,出具商业计划书
  3. 需要明确第一步增量开发的内容,在开发过程熟悉相关代码和语言。
  4. 根据自己喜好采用瀑布模型、敏捷开发
  5. 穿插一次经验性讲座。
  6. 时间:4周
  7. 输出/整理:需求文档、数据库设计文档、用例和流程图等
  • 第二阶段:应对变化
  1. 尝试运行、寻找用户、收集新需求
  2. 墨刀工具
  3. 回顾第一阶段遇到的问题,讲解DevOps,采用Gitee/GitLab,并将现有项目纳入相关工具
  4. 穿插一次讲座
  5. 时间:4周
  • 第三阶段:再出发在DevOps的思想指导下逐步实践,完成一个项目的构建V1.0。
  1. 制作V1.0的墨刀文档
  2. 运营并更新
  3. 时间:7+1,1周用于展示

可选案例

  • 计算机机房简易管理系统:教师预约、巡检和统计。(2.0版可以加上学生预约,面向机房开放)
  • 计算机机房绿化(鱼养殖)智慧运行系统
  • 其他可能能成为毕业论文的内容


头脑风暴

我的头脑

  • 做一个项目、接一个项目、创意一个项目的流程是啥?组队伍,分工
  • 需求与表达:
  • 找资源与环境:
  • 技术评估
  • 第一版本的产生:原型设计、开发、测试、发布
  • 敏捷开发促进升级:用户?

文心一言

  • 项目分组与选题:根据学生的兴趣和特长进行分组,并让他们选择一个适合小组规模的实践项目。选题可以是理论课程中的案例延伸,也可以是学生自己提出的项目。
  • 需求分析实践:让学生在所选项目中实践需求分析的方法和技术,如制作原型、编写用户故事等。通过实际操作,加深对需求分析理论的理解。
  • 设计模式与架构实践:让学生在项目中实际应用设计模式和软件架构知识,提高代码质量和系统可维护性。
  • 版本控制和团队协作:引导学生使用版本控制系统(如Git),并让他们了解团队协作的重要性。可以通过使用敏捷开发方法等来加强实践。
  • 测试与质量保证:要求学生编写单元测试和集成测试,并使用自动化工具进行持续集成和持续部署。这可以加深他们对测试理论的理解。
  • 系统部署与运维:让学生在云平台上部署自己的项目,并学习如何进行系统的监控和维护。
  • 文档编写与答辩:要求学生为他们的项目编写相应的技术文档,并在课程结束时进行项目答辩。这有助于提高他们的沟通和表达能力。
  • 课程反馈与改进:在课程结束时,让学生提供对课程的反馈,以帮助不断完善课程设计。
  • 通过以上内容,学生可以将在《软件工程》理论课程中学到的知识应用到实践中,从而更好地理解和掌握软件工程的实际操作。希望这些建议对你有所帮助!

参考书籍

  • 软件工程——理论与实践,毛新军 董威 编著 / 2024.1 / 高等教育出版社(“101计划”工作组)
  • 现代软件工程基础,彭鑫、游依勇、赵文耘 / 2022.7 / 清华大学出版社