2017年春季学期    《软件工程》

上课时间和地点:周一 34节(10:10—12:00) 崂山校区6213教室

  《软件工程》即是一门技术学课程,也是一门管理学课程, 具有理论性,也有较强的实际操作性。课程主要教会大家掌握软件工程的基本概念和基本原理,同时掌握分析、设计、测试与维护软件系统的理论与方法。课程的主要内容:软件工程的产生、软件生命周期、生命周期模型;软件开发各阶段的目标、任务、特点、步骤和文档;传统软件工程的基本思想,开发过程和步骤;面向对象软件工程的基本思想、基本过程和模型;软件工程的管理技术。课程设计实践环节,主要目的为了加深同学们对课程基本理论、基本知识的理解;提高分析和解决软件项目问题的能力;熟悉软件工程的规范、项目管理和团队协作开发。

实践课题来源:

实践课题要求(以联想笔记本销售网站为例):

项目进度要求:

成绩构成:项目成绩 50% + 考试成绩 50% + 奖励成绩 - 惩罚成绩 - 缺勤


教材

课程平台: TRUSTIE    创新实践在线协作平台


教学大纲和讲义

周次 时间 内容 幻灯片 阅读资料
1 20170306,周一 课程介绍,软件工程师的发展前景;软件危机,软件工程的基本概念, 软件生命周期的定义 第00章-课程介绍.pdf 习而学的软件工程教育
2 20170313,周一 软件过程:瀑布模型;快速原型模型;增量模型;螺旋模型;敏捷式软件开发; 极限编程;SCRUM;微软过程 第01章-软件工程学概述.pdf 微软学术的10个版本历程
3 20170320,周一 软件过程:瀑布模型;快速原型模型;增量模型;螺旋模型;敏捷式软件开发; 极限编程;SCRUM;微软过程 教学内容续上周 自学的程序员如何找到好工作?
4 20170327,周一 可行性研究:系统流程图、数据流图、可行性研究报告的基本内容,估计软件成本的主要方法等 第02章-可行性研究.pdf 软件开发不是闭卷考试
5 20170401,周六 需求分析:需求分析的任务,获取需求的方法,需求描述 第03章-需求分析.pdf 让程序员跨界做设计,脑洞开的想不到
6 20170410,周一 需求分析:需求建模的图形工具(ER图、类图、事件跟踪图、数据流图、用例图、决策表等),数据规范化,需求验证 教学内容续上周 不再迷惑,无值和NULL值
7 20170417,周一 总体设计和过程,总体设计原理 第05章-总体设计.pdf 我眼中的项目经理
8 20170424,周一 软件设计结果描述工具,描绘软件结构图形工具,面向数据流的设计方法 教学内容续上周 开发者技能修炼的五个等级
9 20170508,周一 三种程序结构、盒图、PAD图 第06章-详细设计.pdf 九年游戏开发经验谈
10 20170515,周一 Jackson图、程序复杂度的度量 教学内容续上周 我是有小成就,但我过不了白板面试
11 20170522,周一 三种程序结构、盒图、PAD图 第07章-实现.pdf 三十岁转行做初级程序员是什么体验
12 20170527,周六 软件维护的定义、软件维护的特点、软件维护过程 第08章-软件维护.pdf 成就CTO的关键技能是什么
13 20170605,周一 软件的可维护性,预防性维护,软件再工程过程 教学内容续上周 没有业余代码项目,但这不代表我没有激情
13 20170612,周一 面向对象方法学概述,面向对象的概念,对象建模,对象模型、动态模型、功能模型,三种模型之间的关系 第09章-面向对象.pdf 给非母语英语的人从事开源项目的开发建议
14 20170619,周一 软件项目管理,估算软件规模,开发工作量估算,进度计划,人员组织,质量保证,能力成熟度模型 第13章-软件项目管理 数据科学家和机器学习工程师有什么不同
15 20170626,周一 小组项目汇报演示 课程要愉快的结束了~~~

阶段任务


分组信息

编号 成员 项目名称 备注
01 林敏轩、于灏、刘强、孙磊、高巾捷、李佳芮 暂无
02 周康,崔娟,李影,张宁波 联想笔记本销售网站
03 孔浩,任彤彤,陈嘉懿,陈英祺,胡旭伟
04 陈硕、黄俊贤、贾南加扎西、张志通 暂无
05 井然、李睿哲、周凯 暂无
06 李璐颖、洪辰、何杰煊 笔记本销售网站
07 范祖宁、黄俊贤、齐心瑜、李娇娇、蓝艺梅 Stickyblocks(粘贴方块)游戏
08 谭星辰,朱玥,蒙煜明,谢晓菲,孙丽 任务管理软件
09 邢彪,贺翠花,刘增泽,翁世迁,许博龙 联想笔记本电脑销售网站
10 马妮洁、马浩伟、吴家昊、王凯 奢侈品阅读指南

相关课程资源

联系方式:gaofeng@ouc.edu.cn



>>   return to Feng Gao's homepage 


课程随感

【20170331】
希望大家在学习之余考虑:“我能算是学过软件工程吗?”
怎么才能证明是学会了?邹欣老师给出定义:
1)研发出符合用户需求的软件: 必须公开发布,有实际的用户,一定的用户量和持续使用量(3天后能保持10-100个用户),可以是PC/Web/手机应用,而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布“足够好”的软件 :有项目规划/需求/设计/实现/发布/维护,有定时的进度发布,而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3) 通过数据展现软件是可以维护和继续发展的,而不是 找不到源代码, 代码无文档, 代码不能编译, 没有task/bug等项目发展的资料。 能做到这三点,才算是学会了软件工程。