– 软件工程的基本概念(PPT 1-2章)
• 软件危机
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 • 软件工程?七大基本原理? (……)
软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则
软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和
维护的过程,即将工程化应用于软件中;(2)对(1)中所述方法的研究
总的来说,
软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的 七大基本原理:
• 用分阶段的生命周期计划严格管理 • 坚持进行阶段评审 • 实行严格的产品控制 • 采用现代程序设计技术 • 结果应能清楚地审查
• 开发小组的人员应该少而精
• 承认不断改进软件工程实践的必要性 • 软件生存周期模型_原型模型:分类及使用策略 原型的类型:
探索型(exploratory prototyping)
其目的是要弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性
实验型(experimental prototyping)
其目的是验证方案或算法的合理性,它是在大规模开发和实现前,用于考核方案是
否合适,规格说明是否可靠。
演化型(evolutionary prototyping)
其目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化
成最终的目标系统。 原型的使用策略:
废弃(throw away)策略
主要用于探索型和实验型原型的开发。这些原型关注于目标系统的某些特性,而
不是全部特性,开发这些原型时通常不考虑与探索或实验目的无关的功能、质量、结构等因素,这种原型通常被废丢,然后根据探索或实验的结果用良好的结构和设计思想重新设计目标系统。 追加(add on)策略
主要用于演化型原型的开发。这种原型通常是实现了目标系统中已明确定义的特
性的一个子集,通过对它的不断修改和扩充,逐步追加新的要求,最后使其演化成最终的目标系统。
货币时间价值、投资回收期和纯收入(应用题,ppt2 ,86)
– 需求分析
» 任务
借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的 “做什么” 的问题。
» 需求规格说明书的作用
对分析阶段主要成果的综合描述,是该阶段最重要的技术文档。
– 概要设计
设计的基本原理(模块化、抽象、逐步求精、信息隐藏和局部化、模块独立性) 模块独立性?信息隐藏的含义?关系? (……) 模块独立性:
指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。 信息隐藏:
设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的 关系? (not found!)
7类耦合与内聚(ppt5,18)
非直接耦合【模块独立性最强】,数据耦合,标记耦合(特征耦合),控制耦合,外部耦合,公共环境耦合(公共数据区耦合),内容耦合【最不好的耦合形式】
功能内聚【内聚性最强】,信息内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,巧合内聚
设计目标:力争强内聚、弱耦合 耦合、内聚与模块独立性关系:
耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。 启发性规则(ppt5,41)
深度、宽度、扇出和扇入
模块的作用域应该在控制域之内 面向数据流的设计方法(ppt5,63)
变换设计 事物设计
– 详细设计
面向对象分析方法建造的模型(对象模型、行为模型、功能模型)(not found!) 结构化程序设计的控制结构(顺序、分支、循环)(not found!) 程序流程图、N-S盒图、PAD图、PDL语言 (ppt6,24) 计算McCabe环路复杂性度量(3种方法)(ppt6,72)
又称环路复杂性度量
计算环形复杂度V(G)的方法
(1) 流图中的区域数等于环形复杂度
区域:由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。
2) 流图G的环形复杂度V(G)= E – N + 2
其中,E是流图中边的条数,N是结点数。 (3) 流图G的环形复杂度V(G)= P + 1 其中,P是流图中判定结点的数目。
– 编码与测试
选择合适的程序设计语言应考虑的因素(……) (1) 系统用户的要求。 (2) 可以使用的编译程序。 (3) 可以得到的软件工具。 (4) 工程规模。 (5) 程序员的知识。
(6) 软件可移植性要求。 (7) 软件的应用领域。
软件测试的目的(……)
1.想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果成功地实施了测试,就能够发现软件中的错误。
2.测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。 3.实施测试收集到的测试结果数据为可靠性分析提供了依据。 4.证明软件有错
白盒测试&黑盒测试?静态测试&动态测试?(ppt7,47)
静态测试:
基本特征是对软件进行分析、检查和审阅,不实际运行被测试的软件。 静态测试约可找出30~70%的逻辑设计错误.
对需求规格说明书、软件设计说明书、源程序做检查和审阅 包括:
• 是否符合标准和规范;
• 通过结构分析、流图分析、符号执行指出软件缺陷。
动态测试:
通过运行软件来检验软件的动态行为和运行结果的正确性。 动态测试的两个基本要素:
• 被测试程序
• 测试数据(测试用例)
动态测试方法:
(1) 选取定义域有效值,或定义域外无效值; (2) 对已选取值决定预期的结果; (3) 用选取值执行程序;
(4) 执行结果与预期的结果相比,不吻和程序有错。 如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行 ---- 称为白盒测试。
如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用 ---- 称为黑盒测试。
黑盒测试方法(等价类划分、边界值分析、错误推测、因果图法)(ppt7,84) 白盒测试(语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖)(ppt7,71) 什么是单元测试?集成测试?系统测试?确认测试?(ppt7,59)
– 软件维护
生产性维护活动包括的内容?
(not found!)
影响可维护性的因素(……) 1. 可理解性 2. 可测试性 3. 可修改性 4. 可移植性 5. 可重用性
因篇幅问题不能全部显示,请点此查看更多更全内容