Chapter 1 Why Software Engineering?
1.SE的定义、方向和作用
- 定义:在将有关软件开发与应用的概念科学体系化的基础上,研究如何有计划、有效率、经济的开发和利用在计算机上能正确运行的理论和技术的工程方法学,一些开发和维护软件的方法、过程和原则。
- 方向:面向对象模式、结构化模式、基于过程的模式等。
- 作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移,需要较低的维护费用,能按时完成开发工作,及时交付使用。(是一个系统工程,既有对技术问题的分析和综合,也有对开发过程和参与者的管理)
2.开发模式
- 定义:软件开发的全部过程、活动和任务的结构框架,它能直观地表达软件开发的全过程,明确要完成的主要活动、任务和开发策略。
3.错误、缺陷和失败
- 错误:在软件生产过程中的人为产生的错误(需求说明的错误,代码中的错误)
- 缺陷:在功能实现过程中产生的问题。(一个问题可能产生几个缺陷静态存在的)
- 失败:相对于系统指定行为的偏离。(动态存在)
- 联系:缺陷是系统内部的观点,就像从开发者的角度看待问题那样;失败是外部观点,即从用户角度看到的问题,并非每一个缺陷都是失败。
4.软件质量应从那几个方面进行衡量
- 产品的质量:用户从外部特性看软件具有足够的功能并已于学习和使用就说明软件具有高质量,软件开发者从内部特征来看错误数量和类型来判断软件质量的高低。
- 过程的质量:有许多过程都能影响最终作品的质量,如果任何一个活动出现了差错,整个产品的质量就会受到影响。
- 商业的质量:即商业应用背景下的软件质量,讲技术价值与商业价值统一起来。
5.软件工程的组成
- a.活动与对象:活动是发生在整个系统中的某个事件,同城描述成由某个触发器引起的事件,活动通过改变属性把一个事物变成另一个事物。活动中涉及的元素称为对象。
- b.关系和边界
6.现代SE大致包含的过程及各个文档
- a.需求文档:主要包括项目计划、可行性研究报告、软件需求规格说明书(SRS)
- b.系统设计:主要包括系统设计文档和软件结构图。
- c.程序设计:包括模块功能算法和数据描述文档
- d.程序实现:主要是源程序和注释。
- e.单元测试:由模块测试和性能测试产生的测试报告
- f.集成测试:按照结构图进行测试产生的测试报告
- g.系统测试:按着软件需求规格说明书(SRS)对系统总体功能进行测试产生的测试报告。
- h.系统提交:交付产品,用户手册或操作手册。
- i.系统维护:修改软件的过程,为满足改错或新需求产生的维护报告
7.使用现代软件工程实践发生变化的关键因素
- 商业软件投放市场时间的紧迫性
- 计算经济学的改变:硬件费用越来越低,而开发、维护费用越来越高
- 功能强大的桌面计算机的出现
- 局域网和广域网的延伸
- 面向对象技术的出现及应用
- 使用窗口、图标、菜单和指针的图形用户界面
- 瀑布模型的不可知性
8.抽象
- 定义:基于某种层次归纳水平的问题描述。它使我们将注意力集中在问题的关键方面而非细节。
9.软件过程、其重要性及包含的阶段
- 定义:软件开发活动中产生某种期望结果的一系列有序任务,涉及活动、约束和资源。
- 重要性:
- 通用性:在一组活动上保持一致性和结构性。一致性和结构性可以使我们知道是否已经做好了工作,还能是别人以同样的方式做工作,因而具有相对通用性。
- 指导性:分析、检查、理解、控制、改善活动
- 阶段:
- 需求分析和定义
- 系统设计
- 程序设计
- 编写程序
- 单元测试
- 集成测试
- 系统测试
- 系统交付
- 维护
10.重用
- 定义:重复采用以前开发的软件系统中具有共性的部件,用到新的开发项目中去。(这里的重用不仅仅是源代码的重用)
有错误或者遗漏?前往修改