软件工程第一章:1.软件的组成不仅是程序、数据和文档,而且还有完成一定功能和性能所蕴含的知识和经验。
2.领域知识是基于计算机的系统的设计、软件需求获取和系统测试不可或缺的。
3.软件发展的历史给我们的启发是社会需求和硬件进步是软件技术发展的基础。
4.软件的进步和成就促进了信息社会和知识经济的发展。
5.按照应用领域、基本属性和特点研究软件有助于对软件的理解,提高了软件开发、使用和维护的针对性。
6.软件工程学科具有鲜明的工程特性。
第二章:1.面向对象方法是现代软件工程技术体系的基石,它以分类、继承、聚合、封装、多态和消息传递等贴近人类思维习惯的概念。
2.因面向对象与生俱来的自然性、直观性,以及支持软件复用、改善软件结构等许多优势,面向对象方法后来居上,迅速取代结构化方法而成为当前主流的软件开发方法学。
3.UML通过图形化的表示机制从多个侧面表示软件系统的分析和设计模型。
4.UML定义了5类图形机制:用例视图,包括用例描述和用例图;结构视图,包括视图,包括包图、类图和对象图;行为视图,包括交互图、状态图与活动图;构件视图和部署视图。
5.RUP将软件生存周期(即软件制品的进化状态)划分为初始、细化、构造、移交、生产5个阶段。
6.RUP将软件开发过程分解为业务建模、需求、设计、实现、V&V、部署、配置和变更管理、项目管理、环境9个工作流。
7.软件项目团队可利用5个阶段、9个工作流组织管理软件项目的开发活动。
RUP 过程中生成的各类制品通常以UML表示。
8.软件开发过程是基于面向对象方法学的,包括需求获取、需求分析、体系结构设计、人机交互设计、详细设计、实现、测试、维护与进化等重要的软件开发阶段。
第三章:1.软件需求是指利益相关方对目标软件系统在功能、性能和质量等方面的期望,以及对目标软件系统在运行环境、资源消耗等方面的约束。
2.软件需求可划分为功能需求、质量需求和约束性需求3种类型,其中质量需求和约束性需求统称为非功能需求。
3.软件需求的质量要素包括正确性、完全性和可行性。
4.需求调查包括:访谈和会议、调查问卷、业务文档分析、现场观摩。
5.需求建模包括:抽象、分解和多视点分析。
6.需求模型包括:策划、需求获取、需求分析、需求规范化、需求验证和总结等活动。
7.对大中型软件项目以及初期初期需求不明朗的软件项目,需求工程过程采用迭代方式。
第四章1.需求获取是需求工程中后续活动的基础,需求工程又是后续软件开发活动的基础。
需求获取对于软件项目的成就具有决定性影响。
2.UML的用例、用例图、类图、活动图等是记录、表示需求获取结果的合适工具。
用例驱动的过程模型可用于知道需求获取活动。
3.用例驱动的过程模型包括4大步骤:定义软件问题、创建框架用例、精化用例、评审用例模型。
4.需求获取阶段的主要输出制品包括经评审通过的软件问题定义、领域概念模型、业务流程模型、用例模型、业务规则和非功能需求说明。
第五章1.需求分析的主要工作是对需求获取阶段得到的需求模型进行需求项的优先级分析、基于用例模型构建以分析类图和交互图为主题的分析模型。
2.相对于需求获取阶段获得的用例模型,分析模型更加精确、全面、完整,业务逻辑线索更加鲜明,从而为软件设计和实现奠定了更好的基础,提供了更多的支持。
3.用例驱动的过程模型可用于指导需求分析活动,该过程包含的三大步骤:需求优先级分析、用例分析、分析模型评审。
4.需求分析阶段的主要输出制品为需求规约,其主体内容是软件需求的用例模型、分析模型及非功能需求的描述。
5.需求分析过程中,软件质量保证工程师应当并行地检查、审查需求分析的过程和输出制品,以便及时发现过程与输出制品中可能存在的质量缺陷。
第六章1.软甲设计的主要任务是根据软件需求模型导出软件的实现方案,这种方案表现为设计模型。
2.典型的软件设计模型一般包括体系结构模型、用户界面模型、用例设计模型、数据模型、子系统/构件/类设计模型。
3.设计模型的质量要素包括正确性、充分性、优化性和简单性4方面。
4.为了获得高质量的设计模型,软件设计必须遵循一些基本的设计原则,包括抽象与逐步求精、强内聚及松耦合、信息隐藏和关注点分离原则。
5.为了获得高质量的需求模型,软件设计还必须遵循系统化的过程模型,它通常包括策划、体系结构设计、人机交互设计、详细设计和总结等活动。
第七章1.软件体系结构从高层抽象的角度刻画组成目标软件系统的设计元素以及它们之间的逻辑关联。
2.按照自顶下向、逐步求精的设计原则,软件设计往往始于体系结构设计,其设计成果构成后续的详细设计和软件实现的主要工作基础。
3.与详细设计相比,体系结构设计对灵活性、可修改性、可扩充性等质量需求的影响是全局性的、决定性的。
4.一个完整的软件体系结构通常包含逻辑视图、开发视图、物理视图、运行视图和数据视图。
5.用于表示体系结构的逻辑视图的UML图形机制主要是包图和构件图,有时还辅以类图;开发视图的表示可能会用到UML包图;物理视图显然应表示为UML部署图;运行视图通常表示为UML 活动图,有时还辅以对象图;数据视图一般表示为UML类图或实体——关系图。
6.软件体系结构的设计过程一般那依序包括概念设计、精化和验证。
第八章1.软件产品其成败最终取决于用户的满意程度。
2.在软件设计,尤其是用户界面设计的过程中,遵循以用户为中心的设计理念是至关重要的。
3.以用户为中心的理念包括:对用户特征的研究和理解应该作为软件设计决策的主要依据,在软件开发的各个阶段尽可能获得来自用户的反馈并利用用户反馈改进或优化设计。
4.基于以用户为总新的设计理念,软件产品的用户界面设计必须遵循易理解性、易操作性、灵敏性、一致性、容错性、人性化等原则。
5.用户界面的设计过程主要包括用户及任务分析、概念设计、界面流设计和界面精化。
6.在界面设计的整个过程中均必须给予用户分析的成果进行设计决策,这是提高用户满意度的关键之一。
第九章1.详细设计是软件体系结构与软件实现之间的桥梁,是确保体系结构设计成果得以落地的关键环节。
2.详细设计主要任务是对体系结构模型和界面设计模型进行细化和精化,最终获得高质量的详细设计模型。
3.详细设计模型的主要质量要素包括正确性、优化性和设计充分性。
4、一个完整的详细设计过程通常包括用例设计、子系统设计、构件设计、类设计、数据模型设计、设计整合和设计验证等活动。
5.用例设计的目标是确保体系结构模型、界面设计模型与需求工程阶段获得的用例模型的符合型。
6.用例设计的关键步骤包括:针对每个用例给出以UML交互图表示的软件实现方案,据此构造设计类图,从全局和整体的高度整合所有的用例实现方案7.子系统设计的任务是确定子系统内部的结构。
8.子系统设计的关键步骤包括:确立子系统内部的设计元素并将子系统的服务提供接口中规定的职责分配给这些设计元素,构造子系统的设计类图,必要时构造子系统的状态图和相关的状态图。
9.构件设计与子系统设计非常类似,但是构件设计非常强调接口与实现相分离、为复用而设计。
10.类设计的任务是对体系结构模型中出现的关键设计类,以及界面设计模型、子系统设计模型和构件设计模型中出现的类进行细化设计。
11.类设计的关键步骤包括:精化类之间的关系,精化类的操作和属性,必要时构造类的典型对象的状态图和与类相关的活动图。
12.数据模型设计的任务是确定设计模型中需要持久保存的数据条目。
13.数据模型的关键步骤包括:确定设计模型中需要持久保存的类的对象及其属性,确定持久数据的组织方式,确定数据模型中的操作行为,通过合适的索引、反规范化等手段优化持久数据操作的性能。
14.设计整合的任务是整合前面获得的所有设计模型,检查并消解它们之间的不一致性,剔除冗余性,最终形成正式的设计规约。
15.设计规约必须遵循规范的格式,能够直接成为软件编码实现的基础。
16.设计验证的目标是确保设计规约能够以足够优化的方式实现所有的软件需求,确保设计模型已经精化到合格的软件实现工程师能够构造出符合软件设计者期望的目标软件系统。
17.软件设计是迈向最终软件解的漫长征途中的非常关键的一程。
第十章1.软件实现是软件开发过程的重要组成部分,其任务是把软件详细设计翻译为计算机可以“理解”、最终可运行的代码。
2.软件实现涉及编写模块代码、单元测试、集成测试、调试和确认等多项活动,是一个迭代过程。
3.编写代码需借助某种程序设计语言的帮助。
4.程序设计若根据其语言基本机制的不同又可分为过程式、函数式、逻辑程序设计语言和面向对象程设计语言4类。
5.编程准则和编程风格也对编码质量产生深远的影响。
6.调试针对软件缺陷的表征确定引起缺陷的代码。
第十一章1.面向数据流的分析与设计技术在软件工程发展史上具有重要地位,特别是实时嵌入式系统。
2.数据流图、数据字典和实体——关系图是面向数据流分析的基本机制。
3.基于数据流图进行需求分析的大致过程为:创建数据流模型、创建控制流模型、针对原子级处理功能给出过程规约。
维持数据流图各层次平衡、保证需求和设计模型的一致性是非常重要的原则。
4.基于数据流图进行软件设计的大致过程如下:(1)确定信息流的类型(2)划定流界(3)将DFD映射为程序结构。
(4)提取层次控制结构。
(5)通过设计复审和使用启发式策略进一步精化模型结构。
第十二章1.软件测试时软件质量保证的关键。
2.软件测试的任务是检查软件是否满足规约,并在软件制品交付前尽可能发现软件中潜伏的缺陷,减轻交付后软件改正性维护的开销。
3.软件测试需要程序运行,为测试专门设计的输入数据成为测试用例。
4.软件测试分黑盒测试和白盒测试两种方法。
5.黑盒测试用例检验软件功能是否正确,白盒测试用例则测试程序中的重要逻辑路径。
6.在测试资源有限的情况下,用白盒测试方法测试程序所有的逻辑路径是不现实的。
白盒测试技术包括基本路径测试、条件测试、数据流测试和循环测试等。
7.黑盒测试技术包括等价分类、边界值分析和对比测试等。
8.软件测试需制定测试规划,包括测试策略、测试用例集设计、测试步骤、测试实施和测试结果收集评估等。
9.测试步骤包括单元测试、集成测试、确认测试和系统测试。
10.单元测试针对单个模块,模块组装后进行集成测试,软件系统交付前,请客户和专家参加进行确认测试。
5第十三章1.软件系统交付后即进入维护阶段。
软件维护是软件的进化。
2.软件可维护性是软件质量标准的重要要素,是软件开发过程努力追求的一个目标。
3.软件维护分为纠错性维护、适应性维护、完善性维护和预防性维护4类。
4.软件重构是目前预防性维护采用的主要技术,是目前对遗留系统或未按软件工程标准开发的软件实施维护的主要手段。
5.软件重构分为文档重构、重组、逆向工程和再工程,重构需要软件工具和环境的支持。
6.软件维护经常遇到的问题与软件规划和开发方法有关。