本课程强化实践能力训练,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计如callback函数和函数的可重入性(reentrant)或线程安全等较深入的设计问题;并在演示代码基础上进一步引入实际可用的测试代码并切入测试技术基本理论和方法;这是课程的第一部分,重实践,形成对软件工程直观感性的认识,并逐渐由直观感性的动手编码过度到更高层抽象的设计,如OO的封装、多态和继承,高内聚低藕合、UML等。课程的第二部分才开始对软件生命周期、软件项目任务切分工作量评估、项目计划、项目管理、进度跟踪等涉及软件工程项目全局性的概念方法做一梳理。第三部分则具体从需求、设计(重点是更复杂的设计模式体系结构等)、实现、维护等具体软件过程环节展开逐一分析讨论。
课程内容
Writing the Programs
代码风格规范
基本的模块化设计
接口设计(callin接口)
测试驱动开发
callback函数
线程安全设计初探
Testing the Programs
Designing the Modules
Why Software Engineering?
Modeling the Process and Life-Cycle
面向对象的分析与设计
OO基础与UML
Use Case Modeling
Domain Modeling
Object Interaction Modeling and Design Class Diagram
Design Patterns
Architectural Views and Quality Attributes
Capturing the Requirements
Designing the Architecture
Testing the System
Delivering the System
Maintaining the System
Planning and Managing the Project
课外阅读
《人月神话》 Frederick Brooks
《人件》 Tom DeMarco
《第五项修炼》 Peter M. Senge
《黑客与画家》 Paul Graham
《构建之法——现代软件工程》邹欣
专业提升
Software Engineering Academic Genealogy http://web.engr.illinois.edu/~taoxie/sefamily.htm
PhD Dissertations in the Area of Software Engineering http://www.sigsoft.org/phdDissertations/
ICSE http://www.icse-conferences.org/
FSE/ESEC http://esec-fse.inf.ethz.ch/
TOSEM http://tosem.acm.org/subscription.php
TSE http://www.computer.org/portal/web/tse/home
SEMAT Workshops on a General Theory of Software Engineering (GTSE 2012 http://semat.org/?page_id=561 and 2013 http://semat.org/?page_id=760), the most recent in conjunction with the ICSE.
课程适用对象和先修课程要求:
本课程适用于本科高年级、研究生低年级的同学及相关从业人员学习参考之用。
本课程要求学习者具有专业计算机软件基础知识和技能,比如C语言与数据结构、面向对象程序设计等。
课程实验环境:
本课程主要实验都在Linux环境下演示,如果您之前从来没有接触过Linux系统或者不熟悉Linux Shell的基本命令,请您参考Linux GetStarted
代码编辑和阅读的常用工具:Vim\Emacs(Linux),UtraEdit\SourceInsight(Windows)
版本控制工具git,本课程所有演示代码会发布在github上
git clone URL
git add FILES
git commit -m "messages"
git push origin master
软件工程 - 理论与实践(第四版 影印版) Software Engineering: Theory and Practice (Fourth Edition),Shari Lawrence Pfleeger,Joanne M. Atlee ,高等教育出版社
软件工程 - 理论与实践(第四版) Software Engineering: Theory and Practice (Fourth Edition),Shari Lawrence Pfleeger,Joanne M. Atlee,杨卫东译,人民邮电出版社
软件工程—实践者的研究方法(Software Engineering-A Practitioner’s Approach); (美) Roger S. Pressman 著; 机械工业出版社ISBN:7-111-07282-0
《人月神话》 Frederick Brooks
《人件》 Tom DeMarco
《第五项修炼》 Peter M. Senge
《黑客与画家》 Paul Graham
《构建之法——现代软件工程》邹欣