1软件工程概论
一章节软件工程概论

一.软件生存周期的概念 1.在软件项目开发过程中一般要面临如下的问题: (1) 提出问题? (2) 有无解决问题的办法? (3) 达到的标准? (4) 问题如何解决? (5) 解决问题的具体方法? (6) 如何实现? (7) 产品的检验? (8) 产品的使用和维护等。 2.软件生存周期:从软件定义、开发、使用、维护到淘汰的全过 程。
确和正确的要求往往是不实际的。
7
1.4 软件开发的方法和技术(2)
二.渐增型 1.渐增型方法是从问题的部分需求出发,先建立一个不完全的系 统,通过测试运行该系统取得经验和信息反馈,加深对软件需 求的理解,进一步使系统扩充和完善。如此反复,直至软件人 员和用户对所设计完成的软件系统满意为止。 2.在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 3.渐增型开发方法适合于知识型软件的开发,设计系统时对用户 需求的认识开始不是很清楚的,需要在开发过程中不断认识、 不断获得新的知识去丰富和完善系统。多数研究性质的试验软 件,一般采用此方法。 开发过程图解如下所示:
具” 等。
五.软件工程环境 方法与工具的结合,加上配套的软、硬件支持称为软件工程 环境。
它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任 务。
如UNIX环境、Ada环境以及各种工作站。 六.软件工程管理
1.按照进度及预算完成软件计划,实现预期的经济和社会效益。 17 2.软件管理可以借助计算机来实现。
开发阶段流程图
定义软件结构 与数据结构, 确定模块功能、 调用关系接口
评审
修改
接受
确定每个 模块算法
编写程序
修改 静态检查
通过 单元测试, 集成测试, 验收测试。
源程序 清单
软件工程概论 知识点

第一章软件工程概论1.1软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
1.2.软件工程1、软件工程的定义:指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理技术和方法进行软件的开发和维护,把经过时间考虑而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护.2、软件工程的基本原理:1) 用分阶段的生命周期计划严格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采纳现代程序设计技术5) 结果应能清楚地审查6) 开发小组的人员应少而精7) 承认不断改进软件工程实践的必要性3. 软件工程的方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。
软件工程三个要素:工具、方法、过程。
1.3 软件生命周期A,可行性分析与开发项计划:主要确定软件的开发目标及其可行性。
B,需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。
C,设计(概要设计和详细设计):主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。
D,,编码:将软件设计的结果转换成计算机可运行的程序代码。
E,测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
F,维护:在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求.1.4软件过程1.传统瀑布模型:是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。
2.快速原型模型:在用户不能给出完整、准确的需求说明等情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。
软件工程概论知识点

软件工程概论知识点软件工程是研究和应用计算机科学原理、方法和工具来开发和维护高质量的软件系统的工程学科。
它涉及到软件开发的整个生命周期,从需求分析到设计、编码、测试、部署和维护。
以下是软件工程概论的一些重要知识点。
1. 软件开发生命周期软件开发生命周期是软件工程中重要的概念,它包含了软件开发的各个阶段和活动。
常见的软件开发生命周期模型包括瀑布模型、迭代模型、螺旋模型等。
每个模型包括不同的阶段,如需求分析、设计、编码、测试、部署和维护等。
了解软件开发生命周期有助于理解软件开发过程中的活动和任务。
2. 软件需求工程软件需求工程是软件开发的第一步,它涉及到收集、分析、定义和记录软件系统的需求。
需求工程包括需求获取、需求分析、需求规格和需求验证等过程。
通过需求工程,软件开发团队可以确保对用户需求的准确理解,为软件系统的设计和开发提供清晰的目标和指导。
3. 软件设计原则软件设计是软件开发的关键环节,它决定了软件系统的结构、功能和性能。
软件设计原则是指导软件设计过程的一些基本原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则等。
遵循这些原则可以提高软件系统的可维护性、可扩展性和可重用性。
4. 软件开发方法和工具软件开发方法是根据软件开发生命周期的需求,结合特定的软件开发模型,选择合适的方法和工具来开发软件系统。
常见的软件开发方法包括敏捷开发、结构化开发和面向对象开发等。
软件开发工具包括集成开发环境、版本控制工具、测试工具等。
5. 软件质量保证软件质量保证是确保软件系统满足用户需求和规定标准的一系列活动。
软件质量保证包括软件测试、代码审查、性能优化和配置管理等。
通过软件质量保证,可以降低软件系统的缺陷率,提高软件的可靠性和可用性。
6. 软件项目管理软件项目管理是指对软件项目进行规划、组织、协调和控制的一系列活动。
软件项目管理包括项目计划、需求管理、进度管理、风险管理和团队管理等。
有效的软件项目管理可以提高软件项目的成功率和开发效率。
软件工程概论知识点汇总

软件工程概论知识点汇总软件工程概论知识点汇总第一章软件工程概述1. 软件工程定义及概念2. 软件工程的历史发展3. 软件开发生命周期模型a. 瀑布模型b. 迭代模型c. 增量模型d. 螺旋模型e. 敏捷开发模型第二章需求分析与管理1. 需求工程的基本概念2. 需求获取与分析方法3. 需求规格说明书4. 需求变更与配置管理第三章软件设计与架构1. 结构化设计方法2. 面向对象设计方法3. 设计模式及应用4. 软件架构设计与选择第四章软件编码与测试1. 编码规范与风格2. 测试方法与策略3. 单元测试与集成测试4. 软件质量保证与评估第五章软件项目管理1. 软件项目组织与人力资源管理2. 软件项目计划与进度管理3. 风险管理与配置管理4. 软件项目质量管理第六章软件维护与演化1. 软件维护的类型与阶段2. 软件维护的过程与方法3. 软件重构与演化第七章软件工程的理论与方法1. 软件需求建模方法2. 软件设计原则与方法3. 软件度量与评估方法4. 软件工程的形式化方法第八章软件工程的伦理与职业道德1. 软件工程的伦理问题2. 软件工程师的职业道德要求3. 软件工程师的专业素养与发展本文档涉及附件:________本文所涉及的法律名词及注释:________1.著作权法:________保护软件的著作权,禁止未经授权的复制、修改、发布等行为。
2.商标法:________保护软件的商标权,禁止他人未经授权使用相同或相似的商标。
3.专利法:________保护软件的发明专利权,禁止他人未经授权使用相同或相似的发明。
4.合同法:________规定软件开发过程中的合同签订与履行等事项。
软件工程概论课后习题答案

软件工程概论课后习题答案软件工程概论郑人杰等版第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。
办公软件、嬉戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。
1.2 认为“软件就是程序,软件开发就是编程序。
”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。
”这种观点是错误的。
首先,软件是计算机系统中与硬件互相依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;第二,在软件开发中,编程只是软件开发过程的一个阶段。
1.3 假如将软件开发比作高楼大厦的建筑,可以将软件的设计比作什么?可以将软件的设计比作建造设计,软件设计的成绩相当于建造设计的设计图纸。
1.4 什么是软件危机?它有哪些典型表现?为什么会浮现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所碰到的一系列严峻问题。
典型表现:(1)对软件开发成本和进度的估量经常很不精确。
(2)用户对“已完成的”软件系统不惬意的现象常常发生。
(3)软件产品的质量往往靠不住。
(4)软件经常是不行维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年升高。
(7)软件开发生产率提高的速度,既跟不上硬件的进展速度,也远远跟不上计算机应用快速普及深化的趋势。
产生软件危机的缘由:除了软件本身的特点,其缘由主要有以下几个方面:(1) 缺乏软件开发的阅历和有关软件开发数据的堆积,使得开发工作方案很难制定。
(2) 软件人员与用户的沟通存在障碍,使得猎取的需求不充分或存在错误。
(3) 软件开发过程不规范。
如,没有真正了解用户的需求就开头编程序。
(4) 随着软件规模的增大,其复杂性往往会呈指数级上升。
需要无数人分工配合,不仅涉及技术问题,更重要的是必需有科学严格的管理。
(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能彻低保证。
1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。
软件工程概论知识点汇总简洁范本

软件工程概论知识点汇总软件工程概论知识点汇总1. 软件工程概述软件工程是一门关注软件开发的学科,它涉及到软件的设计、开发、测试、维护等方面。
软件工程的目标是通过系统化的方法来开发和维护高质量的软件产品。
2. 软件开发周期软件开发周期通常包括以下阶段:需求分析:明确定义软件系统的需求和功能。
设计:设计软件系统的结构、模块和接口。
编码:根据设计文档编写程序代码。
测试:对软件进行测试以确保其正确性和稳定性。
部署:将软件部署到目标系统中。
维护:修复软件中的漏洞和缺陷,并进行功能扩展。
3. 软件工程的原则软件工程遵循以下原则:模块化:将软件系统划分为独立的模块,每个模块负责不同的功能。
可重用性:设计和开发具有可重用性的模块,以提高开发效率和软件质量。
可测试性:设计易于测试的软件模块,以便及早发现和修复问题。
可维护性:设计易于维护的软件系统,以便快速修复问题和实现功能变更。
可扩展性:设计支持功能扩展和修改的软件架构。
4. 软件工程的方法和模型软件工程采用多种方法和模型来组织和管理软件开发过程:瀑布模型:将软件开发过程划分为顺序的阶段,每个阶段有特定的输出和目标。
增量模型:将软件开发过程分为多个增量,每个增量都是一个完整的小型软件系统。
原型模型:通过快速构建原型来获取用户反馈,并不断迭代改进软件系统。
敏捷方法:强调快速迭代和响应变化,通过小团队合作开发高质量的软件。
5. 软件测试软件测试是确保软件系统质量和正确性的重要过程。
常见的软件测试方法包括:单元测试:对软件的最小单元进行测试,例如函数和方法。
集成测试:测试不同模块之间的交互和兼容性。
系统测试:对整个软件系统进行全面的测试。
验证和验证测试:验证软件是否满足用户需求和规格,验证软件是否正确实现。
性能测试:测试软件在不同负载下的性能和响应时间。
6. 软件项目管理软件项目管理涉及到以下方面:项目计划:制定项目计划,明确项目的目标、范围、时间和资源。
项目组织:建立项目团队和分配任务,确保项目成员之间的协作和沟通。
软件工程概论PPT课件

集成测试
总结词
集成测试是在单元测试的基础上,将多个模块或组件组合在一起进行测试,以验证它们之间的集成是否正常工作。
详细描述
在软件开发过程中,当多个模块或组件完成单元测试后,需要进行集成测试来验证它们之间的交互和集成是否正 常。集成测试的目的是发现模块之间的接口问题和集成后的性能问题,以确保软件的整体功能和性能达到要求。
编码
选择编程语言
根据项目需求和团队技术能力,选择适合的 编程语言进行编码。
编码规范
制定编码规范,确保代码的可读性、可维护 性和可扩展性。
编码实现
按照设计文档和编码规范,编写代码实现各 个模块的功能。
代码审查
对编写的代码进行审查,确保其符合规范和 设计要求,并进行必要的重构和优化。
测试
单元测试
对每个模块进行单元测试,确保其功能正常、符合设计要求。
界面风格与一致性
界面设计应保持一致的风格,以提高用户对软件系统的认知和熟悉 度。
模块设计与划分
模块设计与划分概述
模块设计与划分是指将软件系统划分为一系列相互独立、可复用 的模块。
模块化设计的好处
模块化设计可以提高软件系统的可维护性、可扩展性和可重用性。
模块间的通信与协作
模块间的通信和协作是模块化设计的关键,应确保模块间的松耦 合和低耦合。
05 软件测试工程
单元测试
总结词
单元测试是对软件中的最小可测试单元进行检查和验证,通常以函数或方法为 单位进行测试。
详细描述
单元测试是软件开发过程中的一种测试方法,旨在验证软件的最小单元是否符 合设计要求和功能规范。它通常在编码阶段同步进行,以确保代码的正确性和 可靠性。单元测试的方法包括白盒测试和黑盒测试。
第一章软件工程概论

31
• 软件工程过程定义了:
– 方法使用的顺序 – 要求交付的文档资料 – 为保证质量和适应变化所需要的
管理 – 软件开发各个阶段完成的里程碑
2020/11/4
32
软件工程项目的基本目标
• 付出较低的开发成本
• 达到要求的软件功能
• 取得较好的软件性能
• 开发的软件易于移植
• 需要较低的维护费用
• 第二次则在此基础上获得较为满意的 软件产品
2020/11/4
25
螺旋模型
• 螺旋模型沿着螺线旋转,在四个象 限上分别表达四个方面的活动,即:
• 制定计划──确定软件目标,选定实 施方案,弄清项目开发的限制
• 风险分析──分析所选方案,考虑如 何识别和消除风险
• 实施工程──实施软件开发
• 客户评估──评价开发工作,提出修 正建议
• 软件的开发至今尚未完全摆脱手工 艺的开发方式
• 软件本身是复杂的
• 实际问题的复杂性
• 程序逻辑结构的复杂性
• 软件成本相当昂贵
• 相当多的软件工作涉及到社会因素
2020/11/4
4
2020/11/4
5
软件的分类
• 按软件的功能进行划分:
– 系统软件 • 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信处理程序等
2020/11/4
6
– 支撑软件 • 文本编辑程序 • 文件格式化程序 • 磁盘向磁带向数据传输的程序 • 程序库系统 • 支持需求分析、设计、实现、 测试和支持管理的软件
2020/11/4
7
– 应用软件
• 商业数据处理软件 • 工程与科学计算软件 • 计算机辅助设计/制造软件 • 系统仿真软件 • 智能产品嵌入软件 • 医疗、制药软件 • 事务管理、办公自动化软件 • 计算机辅助教学软件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
2、软件危机的主要表现:(1)对软件开发成本和进度的估计经常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3、产生软件危机的原因(1)从软件特点上看,软件是逻辑部件,不是物理部件;(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)4、消除软件危机的途径(1)首先应该对计算机软件有一个正确的认识;(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;(4)应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
(2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
6、软件工程的本质特征(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
7、软件工程的基本原理(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的(阶段性)产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
(1)软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表。
(2)软件开发时期:总体设计;详细设计;编码和单元测试;综合测试。
(3)软件维护时期:主要任务是使软件更持久地满足用户需要。
具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。
9、软件生命周期每个阶段的基本任务(1)问题定义:“要解决的问题是什么?”;(2)可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗?”(3)需求分析:“为了解决这个问题,目标系统必须做什么。
”(4)总体设计:“概括地说,应该怎样实现目标系统?”(5)详细设计:“应该怎样具体地实现这个系统呢?”(6)编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块。
(7)综合测试:关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
(8)软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
10、什么是软件生命周期模型?有哪些主要模型?(1)生存周期模型:描述软件开发过程中各种活动如何执行的模型。
对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
(2)主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素。
12、可行性研究过程的步骤:(1)复查系统的规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理。
14、数据流图(DFD):以图形的方式描述数据在系统中流动和处理的过程。
只反映系统必须完成的逻辑功能,是一种功能模型。
15、画数据流图应注意的事项:(1)命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。
(2)画数据流而不是控制流,一般不画物质流。
(3)每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
(4)编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应。
(5)父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致。
(6)局部数据存储。
(7)注意数据流图的易理解性。
16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
内容:数据流;数据流分量(即数据元素);数据存储;处理。
17、需求分析的任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统开发计划18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计。
19、什么是软件概要设计?该阶段的基本任务是什么?(1)把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。
称为概要设计或结构设计。
(2)基本任务:①设计软件系统结构②进行数据结构及数据库的设计③编写概要设计的文档④评审。
20、总体设计(概要设计)原理:(1)模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。
(2)抽象:抽出事物的本质特性而暂时不考虑它们的细节。
(3)逐步求精(4)信息隐蔽和局部化(5)模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单。
21、模块独立程度的衡量标准:耦合和内聚(1)耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合。
(2)内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。
偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
22、概要设计的启发式准则:(1)改进软件结构,提高模块独立性(2)模块规模应该适中(3)深度、宽度、扇出和扇入都应适当(4)模块的作用域应该在控制域之内(5)力争降低模块借口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测23、面向数据流的设计方法:把信息流映射成软件结构。
有两种类型:(1)交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统。
由输入、输出、变换(或称处理)三部分组成,是一顺序结构。
(2)事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流。
处理T称为事务中心。
24、详细设计的基本任务:(1)为每个模块进行详细的算法设计(2)为模块内的数据结构进行设计(3)对数据库进行物理设计(4)其他设计(5)编写详细设计说明书(6)评审25、结构程序设计:(1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
(2)结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法②使用三种基本控制结构构造程序③主程序员组的组织形式。
26、选择程序设计语言基本原则:(1)系统用户的要求(2)可以使用的编译语言(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:(1)编制易于修改和维护的代码(2)编制易于测试的代码(3)必须将编程和编文档的工作统一起来(4)编程中采用统一的标准和约定,降低程序复杂性(5)限定每一层的副作用,减少耦合度(6)尽可能地复用28、软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案(3)成功的测试是发现了至今为止尚未发现的错误的测试29、软件测试的准则:(1)所有测试都应该能追溯到用户需求(2)应该远在测试开始之前就制定出测试计划(3)把Pareto原理应用到软件测试中(4)应该从“小规模”测试开始,并逐步进行“大规模”测试(5)穷举测试是不可能的(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
30、测试的步骤:(1)模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试(2)子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;(3)系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试。
(4)验收测试:有用户参加的系统测试;验证是否满足用户的需要(5)平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。
31、非渐增式和渐增式测试方法(1)非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法。
(2)渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
这种每次增加一个模块的方法称为渐增式测试。