重点
软件工程
一、 1、什么是软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2、软件危机产生的原因:与软件本身的特点有关,也与软件开发和维护的方法不正确有关
3、软件是程序、数据以及相关文档的完整集合。
二、 软件工程方法学三要素:方法、工具和过程
软件工程学的一个重要目标是提高软件质量,减少软件维护代价。
三、
四、 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型)
五、 可行性研究:
1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、四个方面:技术、经济、操作可行性
3、数据流图四种成分:1、源点/终点2、处理3、数据存储4、数据流
六、 需求分析:
1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。
2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N)
七、 总体设计:
1、 任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。
2、 系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构)
3、 模块独立:内聚和耦合
耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统
内聚 (Cohesion):  一个模块内各元素结合的紧密程度
4、 面向数据流的设计方法:变换流和事务流
八、 详细设计:
1、 任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
2、 过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树)
3、 面向数据结构的设计方法(jackson方法):
4、 程序复杂程度的定量(McCabe方法):1、V(G)=E-N+2(E是流图中边的条数,N是结点数)  2、V(G)=P+1(P是流图中判定结点的个数)  3、流图中的区域数等于环形复杂度。
九、 编码
一十、 单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对
该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。
一十一、 集成测试:
在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。
一十二、 白盒测试技术(逻辑覆盖、基本路经测试)
        白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部结构和处理过程。所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试又称为结构测试。
1、 语句覆盖就是设计足够的调试用例,使得程序中的每个语句至少执行一次。
2、 判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖计算机软件的组成
3、 条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。
4、 判定/条件覆盖就是设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
5、 条件组合覆盖就是设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。
6、 基本路经测试:
一十三、 黑盒测试技术(等价划分)
        黑盒测试时完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。黑盒测试是在程序接口进行的测试,又称为功能测试。
1、黑盒测试检查的主要方面有:
程序的功能是否正确或完善;
数据的输入能否正确接收,输出是否正确;
是否能保证外部信息(如数据文件)的完整性等。
用黑盒法设计测试用例时,必须用所有可能的输入数据来检查程序是否都能产生正确的输出
  2、等价类划分
      等价类的划分在很大程度上依靠的是测试人员的经验,下面给出几条基本原则:
(1)如果输入条件规定了取值范围,则可划分出一个有效的等价类(输入值在此范围内)和两个无效的等价类(输入值小于最小值、输入值大于最大值)。
(2)如果输入条件规定了输入数据的个数,则可相应地划分出一个有效的等价类(输入数据的个数等于给定的个数要求)和两个无效的等价类(输入数据的个数少于给定的个数要求、输入数据的个数多于给定的个数要求)。
(3)如果输入条件规定了输入数据的一组可能的值,而且程序对这组可能的值做相同的处
理,则可将这组可能的值划分为一个有效的等价类,而这些值以外的值划分成无效的等价类。
(4)如果输入条件规定了输入数据的一组可能的值,但是程序对不同的输入值做不同的处理,则每个输入值是一个有效的等价类,此外还有一个无效的等价类(所有不允许值的集合)。
(5)如果输入条件规定了输入数据必须遵循的规则,则可以划分一个有效的等价类(符合规则)和若干个无效的等价类(从各种角度违反规则)。
一十四、 维护(改正性维护、适应性维护、完善性维护、预防性维护)
一十五、 决定软件可维护性因素(可理解性、可测试性、可修改性、可移植性、可重用性)
一十六、 面向对象方法学优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好
一十七、 对象模型1、关联2、聚集3、泛化4、依赖和细化
      软件工程
1.1软件危机
1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。(熟记)
2、了解软件危机主要的一些典型表现。(P2
3、出现软件危机的原因:
4、消除软件危机的途径:首先,我们要对计算机软件有一个正确的认识;更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程项目;最后,应该开发和使用更好的软件工具。
总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
1.2软件工程
1、软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。(熟记)