3软件工程基础(最终版)
软件工程基础实践手册

软件工程基础实践手册第一章软件工程概述 (2)1.1 软件工程的定义与目标 (2)1.2 软件工程的发展历程 (2)1.3 软件工程的基本原则 (3)第二章需求分析 (4)2.1 需求收集与识别 (4)2.2 需求分析与建模 (4)2.3 需求确认与验证 (4)第三章软件设计 (4)3.1 软件设计的基本原则 (4)3.2 软件架构设计 (5)3.3 软件详细设计 (5)第四章编码实践 (6)4.1 编程语言与工具选择 (6)4.2 编码规范与技巧 (6)4.3 代码审查与重构 (7)第五章测试与调试 (7)5.1 软件测试基本概念 (8)5.2 测试策略与过程 (8)5.3 调试技巧与方法 (8)第六章软件项目管理 (9)6.1 项目管理基本理论 (9)6.1.1 项目定义 (9)6.1.2 项目生命周期 (9)6.1.3 项目组织结构 (9)6.1.4 项目管理知识体系 (9)6.2 项目计划与执行 (10)6.2.1 项目计划 (10)6.2.2 项目执行 (10)6.3 项目监控与评估 (10)6.3.1 项目监控 (10)6.3.2 项目评估 (11)第七章软件维护与演化 (11)7.1 软件维护的类型与策略 (11)7.2 软件演化与升级 (11)7.3 软件退役与替换 (12)第八章软件质量保证 (13)8.1 软件质量标准与模型 (13)8.2 质量管理过程与方法 (13)8.3 质量评估与改进 (13)第九章软件工程伦理与法律 (14)9.1 软件工程伦理原则 (14)9.1.1 尊重用户权益 (14)9.1.2 保障软件质量 (14)9.1.3 促进公平竞争 (14)9.1.4 提升行业形象 (14)9.2 软件版权与知识产权 (14)9.2.1 软件版权 (14)9.2.2 知识产权 (15)9.3 法律法规与合规性 (15)9.3.1 法律法规 (15)9.3.2 合规性 (15)第十章软件工程实践案例分析 (15)10.1 项目案例分析 (15)10.2 团队协作与沟通 (16)10.3 实践经验总结与展望 (16)第一章软件工程概述1.1 软件工程的定义与目标软件工程作为一门跨学科领域,旨在通过系统化的方法、技术和工具,研究和解决软件开发过程中的各种问题。
软件工程复习题库带答案完整版

软件工程复习题库带答案完整版一、选择题1、白盒测试法是通过分析程序的(C)来设计测试用例的。
A.应用范围B.功能C.内部逻辑D.输入数据2、风险预测从两个方面评估风险,即风险发生的可能性以及(D)。
A.风险产生的原因B.风险监控技术C.风险能否消除D.风险发生所产生的后果3、极限编程(XP)由价值观、原则、实践和行为四部分组成,其中价值观包括沟通、简单性和(C)。
A.好的计划B.不断的发布C.反馈和勇气D.持续集成4、等价分类法的关键是(C)。
A.确定等价类的边界条件B.按照用例来确定等价类C.划分等价类D.确定系统中相同和不同的部分5、下列不属于黑盒测试的技术是(A)。
A.程序段或语句的功能 B.模块的接口C.数据的名称和用途 D.模块的功能6、为了提高模块的独立性,模块之间最好是(D)耦合。
A.控制耦合B.公共耦合C.内容耦合D.数据耦合7、一个软件开发过程描述了“谁做”,“做什么”,“怎么做”和“什么时候做”,RUP用(A)来表述“谁做”。
A.角色B.活动C.制品D.工作流8、功能性注释嵌入在源程序内部,它是用来说明(A)。
A.程序段或语句的功能 B.模块的接口C.数据的名称和用途 D.模块的功能9、在结构化分析方法中,数据字典是重要的文档。
对加工的描述是数据字典的组成内容之一,常用的加工描述方法有( C )。
A.只有结构化语言 B.有结构化语言和判定树C.有结构化语言、判定树和判定表 D.有判定树和判定表10、某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行( B )维护。
A.正确性 B.适应性C.完善性 D.预防性11、软件危机的主要原因是(A)。
A软件本身特点与开发方法B对软件的认识不够C软件生产能力不足D软件工具落后12、13、下列关于面向对象分析与设计说法错误的是(C)。
A.面向对象的设计以面向对象分析为基础归纳出类B.建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象C.面向对象的设计是面向对象分析的另一种思维方式D.面向对象的设计是面向对象分析进一步的细化和更高的抽象14、在软件的可行性分析中,可以从不同的角度对软件进行研究,其中(B)是从软件的功能可行性角度考虑的。
软件工程试题及答案(较详细)

一.判断题:1.如果决定将软件全部包给第三方公司开发。
(×)2.有了对系统的目标有了大致的了解,就可以开始开发项目,以后的在开发中继续了解。
(×)3.对于一个成功的软件项目,可执行程序是唯一交付的东西。
(×)4.直到程序运行,才评估软件系统的质量。
(×)5.如果未能按时完成任务,我们可以通过增加程序员来加快完成任务.(×)6.虽然软件需求不断变更,但因软件比硬件有弹性,所以我们经常可以变更它.(×)7.软件工程将导致我们产生大量的无用文档,降低工作效率。
(×)8.在面向对象建模中,主题划分提供了在更高一层上描述。
(主题划分是指UML中将一组关联比较强的类的集合。
则上百个类可划分为几个主题)(√)9.面向对象的开发,对象分解取代功能分解. (√)10.软件中80%的错误存在20%的模块中。
(√)11.结构化分析方法在建立系统模型时,使用一般――特殊结构(实际上没有这种关系)来处理信息。
(×)12.开发软件就是编程。
(×)13.需求规格说明书说明了(√)14.结构化方法,建立系统模型时使用一般连接组织信息. (×)15.敏捷过程模型选用小而高激励的团队使用而不适用于大团队。
(√)二.简答题1.软件工程是层次化的,其四个层次是?答:方法,工具,过程,质量保证软件工程是一种层次化的技术(如图2-1所示)。
任何工程方法(包括软件工程)必须以有组织的质量保证为基础。
全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。
支持软件工程的根基就在于对质量的关注。
软件工程的基层是过程层。
软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来.过程定义了一组关键过程区域的框架(KPAs)[PAY93],这对于软件工程技术的有效应用是必须的。
关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。
自考软件产品测试最终版复习资料

1.软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能得到的最后的技术方法结合起来。
2、基准配置又称为基线配置,是经过阶段评审后的软件配置成分3、软件工程强调生命周期方法学和各种结构分析及结构设计技术4、软件工程的七条基本原理(1983年,由B.W.BOEHM提出):(1)用分阶段的生命周期计划严格管理。
(2).坚持阶段评审。
(3).实行严格的产品控制。
(4).采用现代程序设计技术。
(5).结果应能清楚的审查。
(6).开发小组人员应少而精。
(7).承认不断改进软件工程实践的必要性。
5生命周期应该知道严格的六类计划:(1).项目概要计划。
(2).里程碑计划。
(3).项目控制计划。
(4).产品控制计划。
(5).验证计划。
(6).运行维护计划。
6、软件生命周期由软件定义(细分三个阶段问题定义、可行性研究、需求分析)、软件开发(细分总体设计、详细设计、编码、单元测试、综合测试)和软件维护三个时期组成。
7、软件维护通常有四类维护活动:a.改正性维护。
b.适应性维护。
c.完善性维护。
d.预防性维护。
8、软件设计文档包含:构架、数据流示意图、状态变化示意图、流程图、注释代码。
9、软件测试文档:测试计划、测试用例、软件缺陷报告、归纳、统计和总结。
10、开发进度表:Gantt图表11、软件产品组成:帮助文件、用户手册、样本和示例、标签、产品支持信息、图标和标志、错误信息、广告和宣传材料、软件的安装说明、软件说明文件、测试错误提示信息。
12、软件是计算机系统中硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。
13、测试人员在软件开发过程中的任务:寻找BUG;避免软件开发过程中的缺陷;衡量软件的品质;关注用户的需求。
14软件测试的目的:第一是确认软件的质量,第二提供信息,第三软件测试包括软件产品的测试还有软件开发过程。
15、软件与工业产品相比具有的特性:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在实用过程中没有磨损,老化的问题;软件对硬件和环境有着不同程度的依赖性;软件的开发至今尚未完全摆脱手工式的开发方式生产效率低;软件是复杂的,以后会更加复杂;软件的成本相当贵软件工作的牵涉到很多社会因素16、软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题,概括地说,主要包含主要包含两个方面:如何开发软件,怎么满足日益发展的需求;如何维护数量不断膨胀的已有软件。
软件工程复习资料整理

《软件工程》试题参考答案(1)卷一、单向选择题(四选一、每小题3分,共18分)1、需求分析的任务不包括(B)。
A.问题分析B.系统设计C.需求描述D.需求评审。
2、当模块中包含复杂的条件组合,只有( A)能够清晰地表达出各种动作之间的对应关系。
0802A.判定表和判定树C.流程图3、以下不属于逻辑覆盖的是(D)。
1402A.语句覆盖C.条件覆盖B.盒图D 关系图B.判定覆盖D.基本路径4、为适应软件运行环境的变化而修改软件的活动称为( B)。
1501A.纠错性维护B.适应性维护C.改善性维护 D 预防性维护二、填空题(每空2分,共18分)1. 软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。
01012. 高级语言:独立于机器,面向过程或面向(对象)01013. 软件项目管理的范围主要集中于 3 个P 上,即:People 人员、Problem 问题和(过程)。
02014. 由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的(副作用)。
15045. 在公式V(G) = E – N + 2 中: E 为程序图G 中边的总数;N 为程序图中结点的总数。
V(G)又称为图 G 的环形(复杂度)0204。
6. 任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统转换成一个信息变换模型。
03037. 为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要求用户(确认),例如,提问“你确实要删除…?”。
12048. 文档是一种数据媒体和其上所记录的(数据)。
0101三、判断题(每小题2分,共24分,错误打X、正确打√)1. 用户对软件需求的描述不准确,往往是产生软件危机的原因之一。
(√)01022. 一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
(√)02063. 目前的绝大多数软件都不适合于快速原型技术。
软件工程第三版课后习题

第一章一、判断题1.S WE B O KV3分两大类,共有15个知识域。
(Y)2.软件工程的提出起源于软件危机,其目的是最终解决软件的生产工程化。
(Y)3.软件工程学一般包括软件开发技术和软件工程管理两方面的内容,软件开发方法学和软件工程环境属于软件开发技术的内容,软件工程经济学属于软件工程管理。
(N)4.软件开发中的最大问题不是管理问题,而是技术问题。
(N)5.X P(e X t r e me P r o g r a mm i n g,极限编程)是由K e n t B e c k提出的一套针对业务需求和软件开发实践的规则,包括13个核心实践。
(Y)二、选择题1.下列所述不是敏捷生存期模型的是(C)。
A.S c r u mB.X PC.V模型D.O P E NU P2.软件工程的出现主要是由于(C)。
A.程序设计方法学的影响C.软件危机的出现B.其他工程学科的影响D.计算机的发展3.以下(C)不是软件危机的表现形式。
A.开发的软件不满足用户的需要B.开发的软件可维护性差C.开发的软件价格便宜D.开发的软件可靠性差4.以下不是S WE B O KV3的软件工程实践中的知识域的是(B)。
A.软件需求B.工程基础C.软件构造D.软件设计5.下列所述不是软件组成的是(D)。
A.程序B.数据C.界面D.文档6.下列对“计算机软件”描述正确的是(A)。
A.是计算机系统的组成部分B.不能作为商品参加交易C.是在计算机硬件设备生产过程中生产出来的D.之存在语计算机系统工作时7.软件工程方法的提出源于软件危机,其目的应该是最终解决软件的(D)问题。
A.软件危机B.质量保证C.开发效率D.生产工程化8.软件工程设计软件开发技术和项目管理等方面内容,下述内容中(D)不属于开发技术的范畴。
A.软件开发方法B.软件开发工具C.软件工程环境D.软件工程经济第二章一、判断题1.面向对象开发过程是多次重复和迭代的演化过程,(需要补充:面向对象开发方法是)在概念和表示方法是的一致性保证了各项开发活动之间的平滑过渡。
第8章 面向对象分析-软件工程基础(第3版)-胡思康-清华大学出版社
第8章 面向对象分析
第 5 页5
面向对象分析概述
面向对象分析的3类模型
OOA模型由3类独立模型构成:功能模型、静态模型和动态模型。 ➢功能模型描述软件系统的用户交互和功能。 ➢静态模型描述软件系统中类与对象以及它们间的关系,也因也称 为对象模型。 ➢动态模型描述系统的控制结构,也称为交互模型。
第8章 面向对象分析
第 6 页6
面向对象分析概述
类
静态模型的5个层次 类-对象层
对象
Coad和Yourdon 提出,对于大型、复杂 性软件系统,需要建立 分析问题域的静态模型。 该模型由5个层次组成: 类-对象层、结构层、 属性层、服务层和主题 层。
结构层 属性层 服务层 主题层
泛化关系
关联关系
属性
对象连接
服务
消息连接
⑶ 用例描述:用文字信息详细描述用例的内容,它是对用 例的有益补充。
第8章 面向对象分析
第 8 页8
建立静态模型
➢用例模型分别从参与者和系统的角度描述用户需求, 依据用例模型导出静态模型。静态模型是面向对象建 模中最基本、最重要、最耗时的技术活动。 ➢静态建模的任务是构建问题域的概念模型,把问题 域中的实体转变为信息域的类与对象以及它们间的关 系,因此也被称为对象模型或领域模型。 ➢静态模型通过建立类图及关系来反映领域概念,而 面向对象设计也建立类图,但各阶段对类的抽象程度 不同。
第8章 面向对象分析
第 12 页12
建立动态模型
建立状态图
状态图描述的就是对象状态的转换过程。通过对对象状态 的分析,能够了解对象在系统流程中的变换,从而发现潜在的事 件和条件。
建立状态图的一般过程如下: ⑴ 了解系统的主要功能和性能,确定和它们有关的主要对象。 ⑵ 列出一个对象的生存期内的所有可能的状态。 ⑶ 确定对象状态改变时的触发条件或事件。 ⑷ 在一个对象中,选定一组与描述状态相关的行为属性和促使 改变状态的方法。 ⑸ 结合触发条件、事件、行为属性值改变的先后顺序,建立软 件系统的状态图。
软件工程基础(一)有答案
软件工程基础(一)一、选择题1. 软件工程学的提出起源于软件危机,而其目的应该是最终解决软件的______ 问题。
A.质量保证B.生产危机C.生产工程化D.开发效率答案:C2. 软件生命周期分为几个阶段,需求分析属于______ 阶段的任务。
A.定义B.开发C.维护D.编码答案:A3. 软件工程方法是在实践中不断发展的方法,而早期的软件工程方法主要是指______。
A.结构化方法B.面向对象方法C.二者都对D.二者都不对答案:A4. 软件生命周期一般可以分为3大的阶段,它们分别是______ 。
A.分析、设计和维护B.定义、开发和测试C.分析、编码和测试D.定义、开发和维护答案:D5. 软件工程上常用的表达工具有______ 。
A.图形工具B.表格工具C.语言工具D.以上全是答案:D6. 软件工程环境一般应具有某些特征,下列叙述中______ 不是它必须具备的特征。
A.一组工具的集合B.按方法或模式组合的工具C.提供完善的移植工具D.支持全周期或阶段的工具答案:C7. 结构化分析方法(SA) 是一种______ 。
A.自顶向下逐层分解的分析方法B.自底向上逐层分解的分析方法C.面向对象的分析方法D.以上都不对答案:A8. 自顶向下设计把下列______ 结合起来交叉进行。
A.设计、编码、维护B.设计、编码、测试C.设计、编码、调试D.模块设计、程序设计、算法设计答案:C9. 数据流图是进行软件需求分析常用的工具,其中最基本的图符是:变换、数据流、数据存储和外部实体,其中用______ 图符来代表图中的数据池(数据最终的目的地)。
A.变换B.数据流C.数据存储D.外部实体答案:D10. 由事务型数据流图映射为软件结构的设计首先应设计一个______ ,它有两个功能:接收事务数据,根据事务类型调度相应的处理模块。
A.总控模块B.事务中心C.变换中心D.事务调度答案:B11. 面向数据流的设计方法把______ 映射成软件结构。
软件工程李爱萍 作业参考答案-最终版修改
第一章1.1什么是软件?软件和程序的区别是什么?答:⑴软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。
软件的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。
⑵软件不是程序,程序是软件的一部分。
程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
它是由软件开发人员设计和编码的。
程序执行时一般要输入一定的数据,也会输出运行的结果。
没有相关文档,仅有程序是不能称之为软件产品的。
1.2什么是软件生存周期?划分生存周期的主要原则是什么?答:(1)软件的生存周期是指某一软件项目被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间。
(2)主要原则:各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
1.3什么是软件危机?它有哪些主要表现?为什么会产生软件危机?答:(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(2)主要表现:对软件开发成本和研制进度的估计常常很不精确,导致经费预算经常突破,进度超时完成;由于开发人员常常对用户需求只有模糊的了解以及开发人员和用户又未能及时交换意见,导致已完成的软件不能满足用户的需要;软件产品质量差,可靠性得不到保证;软件产品可维护性差;软件成本在计算机系统总成本中所占的比例逐年上升,软件的发展跟不上硬件的发展;软件开发生产率提高的速度远远跟不上计算机应用速度普及深入趋势,软件发展跟不上用户的要求。
(3)产生软件危机的原因:造成软件危机的原因与软件自身的特点有关,也与软件开发人员在开发和维护时采用的生产方式、方法、技术有关。
软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。
给软件的开发和维护带来客观的困难;软件开发的管理困难。
由于软件规模大、结构复杂、又具有无形性,导致管理困难,进度控制困难,可靠性无法保证;软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大;软件开发技术落后;生产方式落后;开发工具落后,生产效率提高缓慢。
软件工程(习题与参考答案)
第1章概述(习题与参考答案)[判断题]1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)[选择题]1. ()因素促使计算机系统越来越复杂。
(D)A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系结构方面的深刻变化D. 以上所有选项2. 下面的()不再是现代软件工程师关注的问题。
(A)A. 为什么计算机硬件的成本这么高?B. 为什么软件需要很长时间才能完成?C. 为什么开发一个软件的成本这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会逐渐退化而不会磨损,其原因在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在使用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其原因在于()。
(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法使用C. 软件在不使用其他组件的情况下很容易构造出来D. 商业组件在很多应用领域中可以得到5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年代末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的基本目标是()。
(B)A. 消除软件固有的复杂性B. 开发高质量的软件C. 努力发挥开发人员的创造性潜能D. 更好地维护正在使用的软件产品7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三部分软件工程基础1软件的概念与特征(1)软件的定义(a)软件=程序和数据+文档程序:指令序列数据:使程序能正常操纵信息的数据结构。
文档:与程序开发、维护和使用有关的图文资料。
(b)软件是一种逻辑产品。
(2)软件的分类软件按功能可以分为应用软件、系统软件和支撑软件三种。
(a)应用软件为解决特定领域的应用而开发的软件,例如:事务处理软件、人工智能软件、会计软件。
(b)系统软件为管理计算机本身而开发的软件,例如:操作系统、编译程序、汇编程序、网络软件、数据库软件。
(c)支撑软件为开发软件和维护软件的软件。
计划进度管理软件、过程控制工具软件、质量管理给配置管理工具软件等(软件工程有关)2软件危机与软件工程(1)问题的提出20世纪60年代末以后出现了软件危机。
软件危机主要表现在成本+质量+生产率等三个方面。
其主要原因是软件开发和维护方法不正确。
(2)问题的解决为了解决这种软件危机,出现了软件工程的概念。
(3)软件工程的定义软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。
(4)软件工程的三个要素方法+工具+过程(a)方法是完成软件工程项目的技术手段;(b)工具支持软件的开发、管理、文档生成;(c)过程支持软件开发的各个环节的控制和管理。
(5)软件工程的核心思想是把软件产品看作是一个工程产品来处理(强调在软件开发过程中需要应用工程化原则)。
3 软件工程过程与软件生命周期(1)软件工程过程的定义 是把输入转化为输出的一组彼此相关的资源和活动。
(2)软件过程的组成部分由四个基本活动组成:p l a n (软件规格说明)d o (软件开发)c h e c k (软件确认)a c t i o n (软件演进)(3)软件的生命周期的定义可行性分析与计划指定+需求分析+软件设计+软件实现+软件测试+运行和维护。
4 软件工程的目标与原则(1)软件工程的目标在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
(2)软件工程的研究内容技术(软件开发)+管理(软件工程)软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。
软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。
(3)软件工程的原则(八个)抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
抽象:抽取事务最基本的特征和行为,忽略非本质细节。
信息隐蔽:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。
局部化:保证模块之间具有松散耦合关系,模块内部具有较高的内聚性。
确定性:软件开发过程中所有概念的表达应该是明确的,无歧义且规范的。
一致性:包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外接口应保持一致,系统规格说明与系统行为应保持一致。
完备性:软件系统不丢失任何重要成分,完全事项系统所需的功能。
可验证性:开发大型软件系统需要对系统自顶向下,逐层分解。
系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。
5软件开发的工具与软件开发环境的区别(1)软件开发工具的发展纯程序设计语言->单项工具支持->集成工具的支持(2)软件开发环境的定义是指全面支持软件开发全过程的软件工具集合。
(3)计算机辅助软件工程(C A S E,C o m p u t e r A i d e d S o f t w a r eE n g i n e e r i n g)是当前软件开发环境中富有特色的研究工作和发展方向。
C a s e就是成功的软件开发环境的典型例子之一。
6结构化分析方法(1)软件开发方法的组成部分分析法、设计法和程序设计方法(2)结构化方法的核心和基础结构化程序设计理论7需求分析软件需求分析是指分析用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
(1)需求分析阶段主要工作需求获取->需求分析->编写需求规格说明书->需求审评(2)需求分析方法的类型(一种划分)(a)结构化分析方法面向数据流的结构化分析方法(S A,s t r u c t u r e d a n a l y s i s)面向数据结构的J a c k s o n方法(J S D,J a c k s o n s y s t e m d e v e l o p m e n t m e t h o d)面向数据结构的结构化数据系统开发方法(D S S D,d a t a s t r u c t u r e d s y s t e m d e v e l o p m e n t m e t h o d)(b)面向对象的分析方法(O O A,o b j e c t o r i e n t e d m e t h o d)(3)需求分析的类型(另一种划分)从需求分析建立的模型的特性来分,需求分析方法又可以分为:静态分析和动态分析两种。
8 结构化分析方法结构化分析方法是指结构化程序设计理论在软件需求分析阶段的应用 。
结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
(1)结构化分析的常用工具第一、数据流图(D F D ,d a t a f l o w d i a g r a m ) 是需求理解的逻辑模型的图形表示第二、数据字典(D D ,d a t a d i c t i o n a r y ) 是结构化分析方法的核心 第三、判定表根据描述材料中的链接词找出判定条件之间的从属、并列、选择关系,根据他们构造判定树。
第四、判定树当数据流图中的加工要依赖于多个逻辑条件的取值,即完成加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。
(2)数据流程图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。
是描述数据处理过程的工具,也是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。
(3)数据字典(a )是结构化分析方法的核心。
(b)数据字典的作用是对D F D中出现的被命名的图形元素的确切解释。
(c)数据字典通常包含的信息有:名称,别名、何处如何使用、内容描述、补充信息等。
(4)判定表的组成部分基本条件,条件项;基本动作,动作项9软件需求规格说明书(1)软件需求规格说明书的重要性是需求分析阶段的最后成果,是软件开发中的重要文档之一。
注意:需求分析应交付的主要文档是需求规格说明。
(2)需求规格说明书的格式(引言)、概述、数据描述、功能要求、性能要求、运行要求、其他要求、附录。
10软件设计的基本概念(1)软件设计的基本目标是用比较抽象概括的方式确定目标系统的如何完成预定的任务,即软件设计是确定系统的物理模型。
(2)软件设计的组成部分(a)从工程管理角度分析软件设计分两步完成:概要设计、详细设计(过程设计)。
(b)从技术观点分析软件设计包括:软件结构设计+数据设计+接口设计+过程设计。
(3)软件设计的基本原理(a)抽象(抽象是思维工具,抽象的层次从概要设计到详细设计逐步降低)(b)模块化模块是指把一个待开发的软件分解成若干个小的简单的部分。
每个模块可以完成一个特定的子功能,各个模块可以按一定的方法组织起来成为一个整体,从而实现整个系统的功能。
(c)信息隐蔽(封装)(d)模块独立性(与其他模块的联系最少且接口简单)(4)模块独立性的重要性模块的独立程度是评价设计好坏的重要标准。
衡量软件的模块独立性的方法有两种:耦合性+内聚性(a)内聚性从功能角度分析模块内部的联系。
(b)耦合性模块之间的相互联系的紧密程度的度量。
(c)耦合性、内聚性与独立性的关系11概要设计(1)结构图是常用的软件结构设计的图形工具。
(2)概要设计主要包括以下几个方面:(a)设计软件系统结构(b)设计数据结构及数据库(c)编写概要设计文档(d)概要设计文档的审评(3)结构图常用的软件结构设计工具是结构图(S C,s t r u c t u r e c h a r t),也称为程序结构图。
使用结构图描述软件系统的层次和分块结构关系,它反映了整个系统的功能实现以及模块之间的联系和通讯,是未来程序中的控制层次体系。
结构图中的基本图形符号如下:(4)典型的面向数据流类的设计方法有两种变换型和事务型12详细设计(过程设计)(1)详细设计的任务为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
(2)常见的详细设计工具第一、图形工具:程序流程图P F D,N-S,P A D,H I P O第二、表格工具:判定表第三、语言工具:P D L (伪码) 程序流程图:独立于任何一种程序设计语言,其基本图符如下:13 软件测试(1)软件测试的重要性 40%的成本(2)软件测试的目的检验是否满足规定的需求或弄清预期结果与实际结果的差别。
测试的目的是查找错误,而不是演示软件的正确功能。
(3)软件测试的分类:第一种分类方法:从是否需要执行被测试软件的角度:静态测试和动态测试。
第二种分类方法:从功能划分则可以分为白盒测试和黑盒测试方法 。
(4)静态测试与动态测试(a )静态测试不实际运行软件,主要通过人工进行。
具体包括代码检查、静态结构分析、代码质量度量等。
(b )动态测试基于计算机的测试,为了发现错误而执行程序的过程。
动态测试通常以白盒动态测试为主,辅之以黑盒测试。
动态测试的关键是设计高效、合理的测试用例。
测试用例是指为测试设计的数据。
测试用例由测试输入数据和与之对应的预期输出结构两部分组成。
(5)黑盒测试与白盒测试 (a )黑盒测试法黑盒测试法又称为功能测试或数据驱动测试,黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。
只测试功能,看作一个黑盒子,不考虑程序内部的逻辑结构和内部特征,只依据程序的需求和功能规格说明书。
黑盒测试法主要有等价类划分法、边界分析法、错误推测法、因果图等。
黑盒测试方法主要用于软件确认测试。
(b )白盒测试法白盒测试法又称为结构设计或逻辑驱动测试,测试结构。
这种方法将被测试对象看作是一打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择用例。
它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。
白盒测试方法是在程序内部进行,主要用于完成软件内部操作的验证。
常用的白盒测试方法有:逻辑覆盖和基本路径测试等。
(6)软件测试的实施的步骤单元测试-> 集成测试-> 验收测试->最后系统测试。
(7)单元测试对软件设计的最小单位-模块(程序单元)进行正确性检验的测试。