中国科学技术大学

软件工程

图片
课程概述

本课程强化实践能力训练,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计如callback函数和函数的可重入性(reentrant)或线程安全等较深入的设计问题;并在演示代码基础上进一步引入实际可用的测试代码并切入测试技术基本理论和方法;这是课程的第一部分,重实践,形成对软件工程直观感性的认识,并逐渐由直观感性的动手编码过度到更高层抽象的设计,如OO的封装、多态和继承,高内聚低藕合、UML等。课程的第二部分才开始对软件生命周期、软件项目任务切分工作量评估、项目计划、项目管理、进度跟踪等涉及软件工程项目全局性的概念方法做一梳理。第三部分则具体从需求、设计(重点是更复杂的设计模式体系结构等)、实现、维护等具体软件过程环节展开逐一分析讨论。


证书要求

软件工程是实践性很强的课程,除了听课、记笔记之外,编程、阅读和写文档是主要的学习手段。
本门课总成绩100分。每周我们都留有在线完成的单元测验或需要课后完成的实验作业(合计50%);期中会有两次在线测验(合计20分),期末我们会统一安排一次期末考试(30分)。
总评成绩达到60分及以上的为合格,85分以上为优秀。(内测版本证书事宜不详)

预备知识

课程适用对象和先修课程要求:

  • 本课程适用于本科高年级、研究生低年级的同学及相关从业人员学习参考之用。

  • 本课程要求学习者具有专业计算机软件基础知识和技能,比如C语言与数据结构、面向对象程序设计等。


课程实验环境:

  • 本课程主要实验都在Linux环境下演示,如果您之前从来没有接触过Linux系统或者不熟悉Linux Shell的基本命令,请您参考Linux GetStarted

  • 代码编辑和阅读的常用工具:Vim\Emacs(Linux),UtraEdit\SourceInsight(Windows)

  • 版本控制工具git,本课程所有演示代码会发布在github

    • git快速入门

    • git clone URL

    • git add FILES

    • git commit -m "messages"

    • git push origin master


授课大纲

课程内容

  • 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


课外阅读

专业提升

  • 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.


参考资料
  • 软件工程 - 理论与实践(第四版 影印版) 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

  • 《构建之法——现代软件工程》邹欣

  • 软件工程往年课程主页