2020年秋季《软件工程》开课啦

网易教育报道过,“老师混课时,学生混学分”,是一些课堂上老师和学生心照不宣一起走过场的尴尬现实。功利化的现实中,老师难以淡定。在邹欣老师的描述中,比较常见的师生关体系为“路人甲/路人乙”或“狱警/犯人”。

  • 在“路人甲/路人乙”关系中,老师对着学生宣讲幻灯片,下课就走,不认识学生,也不没有精力了解具体学生的情况。学生平时也见不到老师,即使碰上了,也难有交流。
  • 在“狱警/犯人”关系中,老师设法让学生来上课,点名、小测验、指纹打卡,诱惑大家在课堂上划考试重点等。学生则想法逃课,找人代签字,课上睡觉熬时间,像坐牢一样,巴不得早点解放。

邹欣老师指出理想的师生关系是“健身教练/健身学员”的关系,想要有效的减肥、练出肌肉,学员要自己亲历亲为的流汗。教练的作用就是提出各种要求,鼓励大家更努力。在这个关系中,有的同学想成为一流的软件工程师,老师就用世界一流的标准要求;有的同学只想要一个及格,老师也会告诉他如何能及格;有的同学想在某个领域深造,老师也会提供相应的指点。

在这些的启发下,2020的秋季的《软件工程》我们仍然会进行一些探索,在自我怀疑中不断推进:

(1)多配助教。 优秀的助教团队对于课程至关重要。计划多投入自己的一年级研究生进行助教工作,助教可以将同学们在项目里遇到的问题要定期总结,在博客上发布,更好的整改存在的问题。

(2)多组织阶段性技术评审。 由各小组介绍自己工作,其它同学作为评委进行提问和打分,对于表现较好的小组以奖励,可以较好的激发大家的积极性。在评审前,同学们往往会非常努力的完成阶段目标,适当熬夜是常事,也是对于课程最起码的尊重。阶段评审能刺激大家,带来更高的项目质量。

(3)进一步加强项目管理。 首先,项目的选题要具有持续性,方便下一届的同学在此基础上改进。然后,对项目的过程和监督评价要进一步明确,本年度对于博客的点评和批阅较少,下一年度要加强对博客的管理。最后,要及时反馈。本学期的教训就是反馈不及时,对于做的好的小组要及时肯定,做的差的小组要及时止损。同时,希望同学们做的项目是真正的有价值,并非为了课程而做;每个同学都在真诚的付出,共同努力;每个同学都是有所收获,项目结束时都是不负大家的努力。

(4)多激发大家的兴趣。 优秀的同学在大学比在高中更忙碌,要学习理论,还要敲代码,本质上还是真的对专业感兴趣。希望有机会带着课上优秀的同学出去走走,参加一些国内会议,拓展视野。毕竟兴趣是最好的老师,也希望对本专业不感兴趣的同学尽早找到自己的兴趣点,早点进步。





2020秋季软件工程(高峰)-中国海洋大学

一、课程基本情况介绍

1. 课程的能力培养目标

  • 软件能力:按照工程化方法来开发高质量复杂软件系统的能力
  • 软件工程基础课程:通过团队协作使用现代软件工具按照软件工程方法来开发高质量并且可用复杂软件系统的能力
    • 复杂软件系统:具有一定复杂性、需要团队协作来完成的软件系统
    • 团队协作:4-6人团队协作
    • 软件工程方法:构建一个有效协作的功能团队,综合运用极限编程、测试驱动、敏捷等软件工程方法和最佳实践,通过有效项目管理按计划的开发满足典型用户需求的可用软件方法
    • 高质量和向可用:能够使用技术性手段来确保所开发软件的质量,能够通过技术性手段来证明软件的可用性并获取用户的反馈

2. 课程的组织结构

  • 课堂教学:研讨性教学、课堂练习、作业点评、讨论、团队项目汇报

  • 课后作业:博客作业

  • 项目实践:团队项目 (15周)、总结回顾 (2周)

  • 成绩构成:项目成绩30% + 随堂测验10% + 考试成绩60% + 奖励成绩 - 惩罚成绩 - 缺勤

二、项目实践说明

  • 实践目标 :学习敏捷软件开发方法,软件团队的构建,软件生命周期及各个阶段所用到的工具;开发一个值得骄傲的可用软件

  • 时间进度

    • 1-3周:团队选题及准备工作
    • 5-8周:Alpha迭代4周,项目评审和反思
    • 9-12周:Beta迭代4周,项目评审和反思
    • 13-15周:Gamma迭代3周,项目评审和反思
  • 内容

    • 面向实际用户的可用软件
    • 在已有软件的基础上进行软件开发,或者提出满足特定用户需求的软件并进行开发
    • 通过两轮迭代的敏捷软件开发,体验软件开发的全生命周期
    • 每一轮迭代的流程和任务:
时间 软件开发阶段 博客任务
第一周 计划和设计 明确阶段要实现的需求功能点、完成功能点的设计,发布博客
第二周 实现(冲刺一周) 2篇每日例会博客
第三周 实现(冲刺一周) 2篇每日例会博客
第四周 稳定和发布 测试报告,发布说明
评审和反思 维护和反思、是否需要人员转会
  • 要求
    • 团队项目每一项任务都必须有结果:代码签入、博客、文档等
    • 团队项目过程中所有材料公开:进度表、例会记录
    • 团队项目开发的软件要有真实用户:展示用户数量和对软件的反馈
    • 在每轮迭代之后进行反思:找出自己和团队在本轮迭代之中的不足之处,并提出改进办法;从反思和错误中学习巩固软件工程知识和方法

三、教学日历

周次 讲授内容
1 课程简介,第1章 软件工程概述:软件危机,软件工程概念、原理、方法学,生命周期阶段
2 第1章 软件过程:瀑布、螺旋、增量、RUP模型,极限,XP,微软过程。学长介绍项目经验
3 第2章 可行性研究:任务,系统流程图,数据流图,数据字典,成本/效益分析方法
5 第3章 需求分析:任务,获取需求方法,实体-联系图,状态转换图,层次方框图
6 第3章 需求分析:IPO图,验证软件需求的方法。项目组介绍需求,点评
7 第5章 总体设计:层次图和HIPO图、结构图;面向数据流的设计方法
8 第6章 详细设计:程序流程图、盒图、PAD图、判定树、判定表;Jackson图;程序复杂程度的定量度量
9 第7章 实现:编码,软件测试的目标、准则、方法、步骤;单元测试;集成测试过程及方法;白盒测试
10 第7章 实现:黑盒测试技术;调试过程、途径;软件可靠性的概念及估算方法
11 第8章 维护:定义,特点,过程,可维护性
12 第9、10章 面向对象方法学引论:对象概念,对象模型、动态模型、功能模型;三种模型之间的关系;建立三种模型,UML几种模型介绍
13 第10、11章 面向对象设计、实现,设计准则,重用,服务,关联,优化
14 第12章 项目管理:估算软件规模;工作量估算;估算开发时间、工程进度、关键路径、机动时间
15 第12章 项目管理:人员组织,软件质量保证,配置管理,能力成熟度模型
16 实践项目分组演示,点评
17 实践项目分组演示,点评,课程展望,软件工程未来发展概述

四、课程博客作业

同学们有什么想法?欢迎在博客下面点评、补充。

posted @ 2020-09-21 09:25  高峰OUC  阅读(500)  评论(0编辑  收藏  举报