wiki:ASE2012Fall

2012年秋-高级软件工程

课程主页 - 备用地址 - 教师个人主页

Textbook

  • 软件工程 - 理论与实践(第四版 影印版) 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,杨卫东译,人民邮电出版社
  • The Mythical Man-Month 人月神话 Frederick P.Brooks.Jr.
  • Hackers and Painters 黑客与画家 Paul Graham(YC http://ycombinator.com/ 的创办人)

Contents

  • Introduction(updated in 2012/9/10)
  • 课上演示工程化代码产生的代码文件
  • 【实验作业】工程化代码训练:将sort.c的小程序改写成工程化的代码模块,具体见教辅系统
  • Chapter-1 Why Software Engineering?
    • 软件开发的乐趣、困扰和挑战
    • 软件工程 vs. 建筑工程
    • 工程方法和系统方法
    • 技术、过程、人员和质量保证
  • Chapter-2 Modeling the Process and Life-Cycle
    • 我们自己的编码开发过程是什么样?从hello world开始的学编程,到编写大一点的程序时利用伪代码或代码框架,都体现了打草稿约束我们的思路并逐步细化优化(增量与迭代)的过程,从这一点上来讲,程序员与画家或建筑设计师的工作流程是类似的。
    • 上帝也在打草稿,3个月内受精卵逐步演变为胎儿,这一时段最易流产。与带原型的瀑布模型是否比较相似。
    • if you don't know where you are ,a map won't help.(Watts S.Humphrey)在繁琐的过程控制中迷失了方向,敏捷方法应运而生。
    • RUP - 用例驱动,以架构为中心,增量且迭代!其中不也是打草稿的思想吗?
    • 草稿即作品!就像画画没有画完的时候,只有不愿意继续花时间改进而已!
  • UML绘图工具Visio的安装和使用
  • Chapter-3 Planning and Managing the Project - 1-2-3-4
    • People - 项目人员包括项目参与者、项目负责人、软件项目组,协调和通讯,人员的角色特征和工作风格;
      • 根据在项目中扮演的角色不同,对能力(技术能力、交流能力和管理能力等)和经验要求不同;
      • 工作风格:内向-外向,感性-理性,各不同工作风格的人最优先考虑的问题的相关信息?胆汁质、粘液质、多血质和抑郁质,各不同气质特点的人对问题的反应速度及情感表达方式有何不同?。
      • 人与人之间的交流成本:如果给一个本已延期的项目增加人手只会使项目延期更多。
      • 项目组织方式,高度结构化和松散结构化,首席程序员制(chief programmer team)和忘我方法(egoless approach)
    • Problem - 软件范围(见后面章节,主要是需求分析)、问题分解(见后面章节,主要是设计)
    • Process - 合并问题和过程,过程分解、工作量估算、风险管理、进度跟踪等
  • Chapter 4: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,and how to make requirements testable?
    • Use Case Modeling
    • Domain Modeling
    • Prototyping vs. Modeling
    • Requirements Review:Validation and Verification
  • Match App Requirement
    • 用户记录下他/她暗恋对象的姓名,当他/她暗恋对象也同样记录下他/她的姓名时则匹配成功,系统会分别通知双方;
    • 用户注册时需要提供照片、联系方式等个人信息,并可以修改个人信息。
    • 试着对以上需求进行用例建模和领域建模
  • 【实验作业二】:统一过程中From Analysis to Design的建模分析训练
    • Twitter/Weibo? Simplified Example Requirement
      • 用户可以发微博、查看微博列表,用户可以收听其他用户,也可以被其他用户收听,用户可以查看自己的粉丝和收听用户
      • 微博列表中最新的微博在上面,微博列表中包含自己发的微博和收听用户发的微博
    • 试着对以上需求进行用例建模、领域建模Class Diagram、Object Interaction Modeling and Deriving Design Class Diagram
    • 要求:至少对发微薄和查看微博列表用例进行扩展用例分析和对象交互建模
    • 要求:完成一份文档用来记录一下您From Analysis to Design的建模分析过程,其中各阶段建模的结果(比如用例图、领域建模类图、序列图、设计类图)必须使用专业绘图工具绘制。
    • 请于11月4日24点之前提交文档到教辅系统。
  • 课后可选练习项目:综合测评系统需求
    • 班主任老师希望有一套系统可以能自动生成全班同学的综合测试结果,并按照综合测评分数先后排名。
    • 班主任老师上传导入全班童鞋的信息,信息包含姓名、学号和email等。
    • 系统能自动到教务信息平台上获取班级每位童鞋的课程成绩、GPA等,并根据一定规则计算出各位同学的学业测评结果;
    • 班主任老师可以编制德育、体育、额外加分项等调查表,系统能email自动分发调查表并收集统计调查结果(额外加分项需要班主任老师审核)并根据一定规则计算出各位同学的德育、体育测评结果;
    • 学生可以通过邮件查看调查表和提交调查表
    • 班主任老师可以通过系统分发初步测评结果到每位童鞋的email并征询意见。
    • 整个过程中,学生不需要在系统上注册(教师导入学生信息),系统通过email来认定学生身份并保证无法身份冒充,学生只需要通过email来与系统交互。
    • 每个学生只能看到自己的测评信息,除非班主任老师群发公示的部分信息才会涉及其他童鞋。
    • 要求系统能够为多位班主任/班级提供服务,而且各班级之间完全独立互不干扰、互不信息泄露。
    • 试着对以上需求进行用例建模、领域建模Class Diagram、Object Interaction Modeling and Deriving Design Class Diagram
  • Introduction to Git
  • Chapter 5: Designing the Architecture 1 2
    • Object Interaction Modeling and Design Class Diagram
    • 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
      
  • 【实验作业三】开题报告撰写训练
    • 以您的工程实践项目为背景,撰写一份开题报告,报告模板见附件工程硕士开题报告.doc。要求:
      • 格式务必严谨规范,常见问题见附件文档撰写的常见问题举例.ppt
      • 要图文并茂,根据需要选择用例图、流程图、类图、序列图、状态图等其他图表,图表要符合相应的专业规范。
      • 内容上要思路清晰逻辑严密。
    • 批改时重格式和专业规范,具体项目内容次之。
    • 请于11月25日24点之前提交文档到教辅系统
  • Chapter-6 Designing the Modules
    • Modularity (also called separation of concerns) - coupling and cohesion
    • Interfaces(Purpose,Preconditions (assumptions),Protocols,Postconditions (visible effects),Quality attributes)
    • Information hiding is distinguished by its guidance for decomposing a system
    • Incremental development
    • Abstraction is a model or representation that omits some details so that it can focus on other details.
    • Generality(Parameterizing context-specific information,Removing preconditions,Simplifying postconditions)
    • Inheritance, object composition, and polymorphism
    • Observer Patter
  • Chapter-7 Writing the Programs
    • Localize input and output
    • Employ pseudocode
    • Revise and rewrite, rather than patch
    • Reuse
    • Things to consider when writing a code
      • organizational standards and guidelines
      • reusing code from other projects
      • writing code to make it reusable on future projects
      • using the low-level design as an initial framework, and moving in several iterations from design to code
    • 代码规范与代码复审
  • Chapter-8 Testing the Programs
    • It is important to understand the difference between faults and failures
    • Integration testing strategies
    • The goal of testing is to find faults, not to prove correctness
  • Chapter-9 Testing the System
    • Regression testing
    • Configuration management
    • 作为开发者您希望怎样的配置管理和测试管理能最大化提高开发者的工作效率?
    • 可靠性稳定地增长但无法预测下一次失效时间
  • Chapter-10 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
    • 我们的设计和开发工作大多都是在维护重用已有的软件,像本课程一样从头需求分析、设计、编码...的项目相对较少。
  • Chapter-14 The Future of Software Engineering

参考资料

Last modified 5 years ago Last modified on 12/09/12 23:12:27

Attachments (21)