软件工程概论

ps:本文是我自学提纲,仅供参考,不足之处欢迎指正

一、引言

1、软件的概念

     计算机的发展历史

     软件:代码、数据、各种文档(规格说明文档、设计文档、法律和财务文档、软件项目管理计划、用户手册、其他文档)

     软件的 特点:

  1. 软件是抽象的、无形的、逻辑实体
  2. 软件用不坏
  3. 软件可复制
  4. 软件是复杂的
  5. 软件是昂贵的(开发、维护、完善)

2、软件危机与软件工程

     软件危机:

  1. 对软件成本和进度的估算通常是不准确的
  2. 用户通常对所完成的软件是不满意的
  3. 软件的质量通常是不可靠的
  4. 软件的可维护性太差
  5. 没有有关软件系统的需求、分析、测试等文档
  6. 软件在计算机系统中所占的比例越来越大
  7. 软件的发展跟不上计算机快速、深入、广泛的发展

     软件工程就是解决软件危机的各种问题

3、软件工程职业道德和职业规范

     基本原则:

  1. 公众感
  2. 客户和雇主
  3. 产品
  4. 判断力
  5. 管理
  6. 职业感
  7. 同事
  8. 自己

二、软件过程

1、软件过程

     三个重要名词:客户、开发人员、用户

工作流分类:
1)需求工作流
     目的:让开发组织确定客户的需求
     与客户进行会谈时,从技术可行性和经济可行性不断进行分析、精化和提取
     输出:需求文档(为客户完全理解,需表达为客户方的语言,应获得客户的认可)
2)分析工作流
     目标:分析并精化需求,以理解软件的正确开发、易于维护所必须的需求细节
     采用比自然语言更精确的语言
     输出:规格说明文档(回答了目标产品将要做什么)
3)设计工作流
     输出:设计文档(回答如何实现目标产品)
     高层设计(架构设计):将目标产品分解为模块,并明确模块间的接口
     详细设计:UI设计、DB设计、模块设计、数据结构与算法设计
4)实现与集成工作流
     用计算机语言对各个模块进行编码实现
     相关文档:源代码、适当注释、附加文档(测试用例、实际输出等)
     集成各模块,获得能够作为整体来运行的产品
5)测试工作流
     与其他工作流并行实施(每个工作流都要进行测试)
     基于执行的测试:测试对象为可执行代码
     非执行测试:测试对象为所有非代码的测试结果(各种文档、代码)
6)维护
     纠错型维护:
     完善型维护:
     适应型维护:
7)退役

2、软件测试

     贯穿于整个软件过程
     测试应该由开发人员和软件质量保证人员(SQA)一起完成
     非执行测试:
     测试软件而不运行测试用例
     测试对象:文档、代码
     评审:走查、审查
     基于执行测试:
     测试对象:可执行代码
     测试行为特性:正确性、实用性、可靠性、健壮性、性能
     测试工作是一种破坏性的工作:SQA人员测试、开发者调试

三、软件需求

1、什么是需求
     确定用户需要什么,而不是确定用户想要什么
2、获取需求
     It is very realistic.
     阶段划分:
     1)准备阶段
          确定需要获取和收集什么
          采用什么手段
          时间、地点、参与人
     2)需求的抽取、记录和分析
     3)完成需求文档
     4)需求的确认
3、快速原型

四、面向对象范型

1、模块的内聚
     什么是模块
     内聚性(由低到高):

  1. 偶然性内聚
  2. 逻辑性内聚
  3. 时间性内聚
  4. 过程性内聚
  5. 通信性内聚
  6. 功能性内聚
  7. 信息性内聚

2、模块的耦合
     耦合度越差越好
     耦合性(由高到低)

  1. 内容耦合
  2. 公共耦合
  3. 控制耦合
  4. 印记耦合
  5. 数据耦合

3、数据封装与信息隐藏
4、类的继承
5、类的聚合
6、类的关联
7、多态性与动态绑定
8、面向对象泛型
9、UML(统一建模语言)

五、面向对象分析

1、用例建模
2、用例图
3、类建模
4、动态建模
5、测试面试对象设计(OOA)

六、面向对象设计

1、软件系统设计
     软件架构设计(高层设计):
     模块设计:
     DB设计:
     数据结构和算法设计:
     UI设计:
2、面向对象设计
     完成类图
     完成详细设计

七、实现与集成

1、编程语言
     机器语言
     汇编语言
     高级语言
     4GL
     选择编程语言:成本效益法、风险法
2、良好的编程习惯
3、实现与集成
     自顶向下
     自底向上
     三明治

八、维护

1、维护的必要性
     纠错性维护
     完善性维护(运行效果和性能维护)
     适用性维护
2、对维护人员的要求

九、软件生命周期模型

1、软件生命周期模型
     统一软件的特性:

  • 迭代
  • 增量

查看视频

你可能感兴趣的:(软件工程)