wiki:ASE2015

2015年秋-高级软件工程

基本课程内容+实验 - 课外阅读 - 专业提升

我们写的不仅仅是代码:软件工程——具有专业品味的程序员必由之路!

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

  • 本课程适用于本科高年级、研究生低年级的同学及相关从业人员学习参考之用。
  • 本课程要求学习者具有专业计算机软件基础知识和技能,比如C语言与数据结构、面向对象技术基础等。

课程实验环境

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

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

版本控制工具git

基本课程内容+实验

《C编码实践篇》的内容参见http://mooc.study.163.com/course/USTC-1000002006

《分析设计与过程管理》的内容如下:

  • Why-Software-Engineering
  • 选课名单wiki:2015SENameList ,请在此留下您的网易云课堂账号和昵称
  • Capturing the Requirements
    • It is essential that the requirements definition and specification documents describe the problem, leaving solution selection to designer.
    • Means of Eliciting Requirements?
    • Making Requirements Testable:Fit criteria form objective standards for judging whether a proposed solution satisfies the requirements
    • Prototyping vs. Modeling
    • Requirements Review:Validation and Verification
    • 手艺人社区需求说明
  • The Agile Unified Process:From Analysis to Design
  • Design Patterns
  • Designing the Architecture 1 2
    • Most design work is routine design, solve problem by reusing and adapting solutions from similar problems
    • Some design problems have no existing solutions,Designers must decompose to isolate key problems
    • architectural views:
      Decomposition view
      Dependencies view 
      Generalization view
      Execution view
      Implementation view
      Deployment view
      Work-assignment view
      
    • Architectural Styles and Strategies
    • Achieving Quality Attributes
      Modifiability
      Performance
      Security
      Reliability
      Robustness
      Usability
      Business goals
      
  • 手艺人平台分析与设计完整作业提交到这里,具体要求如下:
    • 把握关键用例和关键业务过程,提出自己的设计方案
    • 至少要包括用例图、序列图、类图,及其他合适图表的表述
    • 要配合适当的文字段落,形成一份分析与设计文档,包含目录结构等,格式严格遵守硕士论文要求规范。
    • 文档提交截止日期:11月10日11:30
  • Modeling the Process and Life-Cycle
    • Waterfall model,V model,Prototyping model,Phased development: increments and iteration,Spiral model,RUP,Agile methods
    • Static model and Dynamic model,prescriptive and descriptive process
    • 我们自己的编码开发过程是什么样?从hello world开始的学编程,到编写大一点的程序时利用伪代码或代码框架,都体现了打草稿约束我们的思路并逐步细化优化(增量与迭代)的过程,从这一点上来讲,程序员与画家或建筑设计师的工作流程是类似的。
    • 上帝也在打草稿,3个月内受精卵逐步演变为胎儿,这一时段最易流产。与带原型的瀑布模型是否比较相似。
    • if you don't know where you are ,a map won't help.(Watts S.Humphrey)在繁琐的过程控制中迷失了方向,敏捷方法应运而生。
    • RUP - 用例驱动,以架构为中心,增量且迭代!其中不也是打草稿的思想吗?
    • 草稿即作品!就像画画没有画完的时候
    • DevOps
    • 轻松理解CMMI
    • Scrum简介
  • Testing the System
    • Regression testing
    • Configuration management
    • 作为开发者您希望怎样的配置管理和测试管理能最大化提高开发者的工作效率?
    • 可靠性稳定地增长但无法预测下一次失效时间
  • Planning and Managing the Project - 1-2-3-4
    • People - 项目人员包括项目参与者、项目负责人、软件项目组,协调和通讯,人员的角色特征和工作风格;
      • 根据在项目中扮演的角色不同,对能力(技术能力、交流能力和管理能力等)和经验要求不同;
      • 工作风格:内向-外向,感性-理性,各不同工作风格的人最优先考虑的问题的相关信息?胆汁质、粘液质、多血质和抑郁质,各不同气质特点的人对问题的反应速度及情感表达方式有何不同?。
      • 人与人之间的交流成本:如果给一个本已延期的项目增加人手只会使项目延期更多。
      • 项目组织方式,高度结构化和松散结构化,首席程序员制(chief programmer team)和忘我方法(egoless approach)
    • Problem - 软件范围(见后面章节,主要是需求分析)、问题分解(见后面章节,主要是设计)
    • Process - 合并问题和过程,过程分解、工作量估算、风险管理、进度跟踪等
  • Delivering the System
    • Considering the Audience in Training and Documentation
  • Chapter-11 Maintaining the System
    • Software does not degrade or require periodic maintenance,However, software is continually evolving,so Maintenance process can be difficult.
    • The more a system is linked to the real world, the more likely it will change and the more difficult it will be to maintain
    • Impact analysis builds and tracks links among the requirements, design, code, and test cases
    • Software rejuvenation involves redocumenting, restructuring, reverse engineering, and reengineering
    • 我们的设计和开发工作大多都是在维护重用已有的软件

课外阅读

专业提升

Last modified 23 months ago Last modified on 11/11/15 16:28:12

Attachments (11)