1.软件与硬件的差异:P1
- 软件更容易更改,且不需要昂贵的生产线进行批量生产。程序一旦被修改,只需要把修改后的程序再装入到其他计算机即可。这种便于修改的特点,使编程人员和软件开发组织开始采用一种“编码和修正”的方式来开发软件。
- 软件不会被破坏。软件是无形的,维护费用高。软件一般有更多的状态、模式和侧视途径,使之更难以规格化。
- 软件需求设计范围快速扩大,造成了软件人才的短缺。
2.解释“软件危机”。P2
- 软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本之高令人吃惊,失败的软件开发项目却屡见不鲜。
- 软件危机迫使人们从技术、人员、管理、开发工具等诸多方面系统化地思考软件的生产过程与维护过程。
3.软件工程的出现。P2
- 软件工程是借鉴传统工程的原则、方法,以提高质量、降低成本为目的地指导计算机软件开发和维护的工程科学。
- 软件工程包括建造软件的过程,方法、工具和质量要求4个方面的内容。
4.过程和产品的两面性:P2
- 大约每隔5~10年,软件界就会重新定义“问题”,将其焦点从产品问题转移到过程问题。
- 为了提高程序的可维护性,出现了结构化程序设计语言(产品),
- 之后就有了结构化的分析与设计方法(过程),
- 有了数据封装(产品),
- 之后是软件开发能力成熟度模型(过程),
- 之后是面向对象方法(产品),
- 之后是计划驱动的软件工程过程,之后是模型驱动的开发,之后是敏捷过程,再后就是计划与敏捷的平衡(过程)
5.权衡组织对标准化和一致性要求与个人对灵活性的要求:P3
- 由于软件项目各不相同,相应的软件工程过程也要有所差异。
- 在缺乏通用的软件工程过程时,组织和项目必须定义满足其特定需求的过程。
- 用于给定项目的过程必须考虑人员的经验水平、产品当前的状态和可用的工具、基础设施。
6.在SWEBOK中,软件工程过程包括两个层次:P4
- 第一层与技术和管理有关,实施的活动是软件获取、开发、维护、退役。
- 第二层也称为元层(Meta),涉及定义、实现、测量、管理、变更等活动,后者也称为软件工程过程。
7.软件工程的发展主要精力的几个阶段:P4
- 20世纪80年代中期以前,主要使用基于结构化编程和瀑布模型的开发方法。
- 从20世纪80年代中期以后,结构化过程编程被面向对象编程取代。
- 网络技术成熟,基于单主机计算的开发开始向分布式客户/服务器就是那的开发方法转移,然而没有成熟的规范可以借鉴。瀑布模型受到批评之后,螺旋模型通过多次迭代接近实际,而备受推崇,但如何实施管理与进度预算、如何进行风险评估、如何实施里程碑评审等没有规范可借鉴。
- 20世纪90年代中期,软件工程过程、软件生存周期及软件评估规范开始成熟。
- 2000年之后,技术发展已经不再成为人们应用计算机的障碍,软件开发关注的焦点也从原来的单系统开发到多系统以及系统中的系统,即集群系统的开发。
8.软件工程过程的意义:P5
- 软件工程是总结软件实践的科学,力图总结实践中的普遍规律,以指导今后的实践,因而注定要滞后于工程实践。软件工程是一种层次化的技术。
- 软件工程的方法提供了建造软件在技术上需要“如何做”。
- 软件工程的工具对过程和方法提供了自动或半自动的支持。
- 软件工程的基础是过程层。软件工程过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理地、及时地开发。过程定义了一组关键过程区域的框架,这对于软件工程技术的有效应用是必需的。
- 软件工程过程提供了一系列软件人员的行为规范,这些规范开始作为一种约束行为管理对象,到最后变成软件从业者的自身素质和修养来自发指导其工作。
9.软件生存周期过程标准的基础概念。P6
- 过程:针对一个给定目标的一系列运作步骤,是在过程环境中的一系列有序活动。
- 规程:人们对客观事物运动规律的理解和掌握,是规范了的过程。
- 阶段:是一类活动可见成果完成的时间段、里程碑等
- 软件工程过程:为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
- 软件生存周期:立项、需求分析、设计、构造、测试、部署、交付、维护、退役。
10.ISO/IEC 12207 软件生存周期过程标准。P7~P11
- 主过程(包括获取、供应、开发、运行和维护)
- 支持过程(包括文档、配置管理、质量保证、验证、确认、联合评审、审核、问题解决)
- 辅助过程(包括管理、基础设施、改进和培训)
11.ISO/IEC 12207 软件生存周期过程高级层次视图。P11
12.本书结构。P12
- 第2章首先介绍了软件开发过程中的关键活动。
- 第3章介绍了这些关键活动构成的有代表性的软件工程过程模型。通过这些模型的介绍,丛历史角度向读者展示软件工程过程模型的开发历程。
- 第4章详细介绍了瀑布模型,为让读者更深刻体会软件工程过程中涉及的活动内在联系,展示从用户原始构想开始到生产出软件产品的过程。
- 第5章详细介绍了业界广为使用的统一过程模型实例——协同过程模型。
- 第6章介绍了软件工程过程建立、管理,以及优化软件工程过程需要考虑的基本问题。
- 第7章介绍了当前比较流行的几种软件工程过程评估模型。
- 第8章介绍了敏捷思想及其有代表性的极限编程过程模型。
- 第9章介绍了软件工程过程的发展趋势,即基于风险驱动的敏捷过程与计划驱动过程,及二者在实施中的平衡。