软件工程概论.pdf

上传人:ylj18****41534 文档编号:73122183 上传时间:2023-02-15 格式:PDF 页数:8 大小:507.96KB
返回 下载 相关 举报
软件工程概论.pdf_第1页
第1页 / 共8页
软件工程概论.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《软件工程概论.pdf》由会员分享,可在线阅读,更多相关《软件工程概论.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 1 页 共 8 页 软件工程 1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。2、软件危机的主要表现:(1)对软件开发成本和进度的估计经常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。3、产生软件危机的原因(1)从软件特点上

2、看,软件是逻辑部件,不是物理部件;(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)4、消除软件危机的途径(1)首先应该对计算机软件有一个正确的认识;(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展

3、阶段形成的一些错误概念和做法;(4)应该开发和使用更好的软件工具 总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。(1)1968 年 NATO 会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理.(2)1993IEEE 定义:软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究中提到的途径。6、软件工程的本质特征(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制

4、复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。7、软件工程的基本原理(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的(阶段性)产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性 第 2 页 共 8 页 8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期。包括:可行性分析和项目开发计划,需求分析,

5、概要设计,详细设计,编码,测试,维护。(1)软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表。(2)软件开发时期:总体设计;详细设计;编码和单元测试;综合测试。(3)软件维护时期:主要任务是使软件更持久地满足用户需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要.9、软件生命周期每个阶段的基本任务(1)问题定义:“要解决的问题是什么?”;(2)可行性研究:“对于上一个阶段

6、所确定的问题有行得通的解决方案吗?”(3)需求分析:“为了解决这个问题,目标系统必须做什么。”(4)总体设计:“概括地说,应该怎样实现目标系统?”(5)详细设计:“应该怎样具体地实现这个系统呢?(6)编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块。(7)综合测试:关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。(8)软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。10、什么是软件生命周期模型?有哪些主要模型?(1)生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的

7、人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。(2)主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素.12、可行性研究过程的步骤:(1)复查系统的规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查 13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市

8、场计划;技术方案;实施周期;财务分析;风险管理.14、数据流图(DFD):以图形的方式描述数据在系统中流动和处理的过程。只反映系统必须完成的逻辑功能,是一种功能模型.15、画数据流图应注意的事项:(1)命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。(2)画数据流而不是控制流,一般不画物质流。(3)每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。(4)编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应.(5)父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致.(6)局部数据存储。(7)注意数据流图的

9、易理解性。16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。内容:数据流;数据流分量(即数据元素);数据存储;处理.第 3 页 共 8 页 17、需求分析的任务(1)确定对系统的综合要求 (2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统开发计划 18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行 数据设计、系统结构设计、过程设计、界面设计.19、什么是软件概要设计?该阶段的基本任务是什么?(1)把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。(2)基本任务:设计软件系统结

10、构 进行数据结构及数据库的设计编写概要设计的文档评审。20、总体设计(概要设计)原理:(1)模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能.(2)抽象:抽出事物的本质特性而暂时不考虑它们的细节。(3)逐步求精(4)信息隐蔽和局部化(5)模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单.21、模块独立程度的衡量标准:耦合和内聚(1)耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合。(2

11、)内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标.偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。22、概要设计的启发式准则:(1)改进软件结构,提高模块独立性(2)模块规模应该适中(3)深度、宽度、扇出和扇入都应适当(4)模块的作用域应该在控制域之内(5)力争降低模块借口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测 23、面向数据流的设计方法:把信息流映射成软件结构.有两种类型:(1)交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界的形式离开系统。由输入、输出、变换(或称处理

12、)三部分组成,是一顺序结构。(2)事务流:数据沿输入通路到达一个处理 T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流。处理 T 称为事务中心。24、详细设计的基本任务:(1)为每个模块进行详细的算法设计 (2)为模块内的数据结构进行设计(3)对数据库进行物理设计(4)其他设计(5)编写详细设计说明书(6)评审 25、结构程序设计:(1)如果一个程序的代码块仅仅通过顺序、选择和循环这 3 种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的.(2)结构化程序设计的基本要点:采用自顶向下、逐步求精的程序设计方法使用三种基本控制结

13、构构造程序主程序员组的组织形式。第 4 页 共 8 页 26、选择程序设计语言基本原则:(1)系统用户的要求(2)可以使用的编译语言(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域 27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:(1)编制易于修改和维护的代码(2)编制易于测试的代码(3)必须将编程和编文档的工作统一起来(4)编程中采用统一的标准和约定,降低程序复杂性(5)限定每一层的副作用,减少耦合度(6)尽可能地复用 28、软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现迄今为止

14、尚未发现的错误的测试方案(3)成功的测试是发现了至今为止尚未发现的错误的测试 29、软件测试的准则:(1)所有测试都应该能追溯到用户需求(2)应该远在测试开始之前就制定出测试计划(3)把 Pareto 原理应用到软件测试中(4)应该从“小规模”测试开始,并逐步进行“大规模测试(5)穷举测试是不可能的(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。30、测试的步骤:(1)模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试(2)子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;(3)系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码

15、的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试.(4)验收测试:有用户参加的系统测试;验证是否满足用户的需要(5)平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。31、非渐增式和渐增式测试方法(1)非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法。(2)渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增式测试。(3)非渐增式和渐增式测试方法的优缺点比较:

16、非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式方法可以利用部分已测试过的模块作为测试软件;非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些;非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些;非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度;渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的测试较为彻底。第 5 页 共 8 页 32、什么是白盒测试法?有哪些覆盖标准?试对他们的检错能力进行比较?(1)白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻

17、辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。(2)白盒法的覆盖标准:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖(3)从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。33、什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些方法各有什么特点?(1)黑盒测试法:把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测

18、试,依据需求规格说明书,检查程序是否满足功能要求。(2)采用黑盒技术测试用例的方法有:等价类的划分、边界值分析、错误推测和因果图。等价类的划分,是将输入数据按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率.但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例。边界值分析法一般与等价类划分结合起来。但它不是从一个等价类中任选一个例子做代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于

19、边界值的测试数据.(边界情况是指输入等价类和输入等价类边界上的情况。)这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误。错误推测法是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例。因果图能够有效地检测输入条件的各种组合可能会引起的错误.它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。34、软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.软件维护工作分为以下四类:(1)矫正性维护:目标是识别和矫正功能错误、性能错误和实现错误。(2)

20、适应性维护:使软件适应于外界环境的改变而对软件所做的修改工作。(3)完善性维护:为了扩充软件的功能或改善软件的性能对软件所做的改变。(4)预防性维护:为了以后更便于维护,或者为了改进可靠性,或者提供更好的基础便于将来提高性能而修改软件。35、决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性.36、提高可维护性的方法 (1)建立明确的软件质量目标和优先级(2)使用提高软件质量的技术和工具(3)进行明确的质量保证审查(4)选择可维护的程序设计语言(5)改进程序的文档 37、软件维护的副作用有哪些?(1)编码副作用.在使用程序设计语言修改源代码时可能引入的错误。(2)数据副作

21、用。在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。数据副作用是修改软件信息结构导致的结果。但它可以通过详细的设计文档加以控制.(3)文档副作用。如果对可执行软件的修改没有反映在文档中,就会产生文档副作用。(以上根据老师课件和软件工程概论整理)第 6 页 共 8 页 38、某厂对部分职工重新分配工作的政策是:年龄在 20 岁以下者,初中文化程度脱产学习,高中文化程度当电工。20 岁至 40 岁之间,中学文化程度,男性当钳工,女性当车工,大学文化程度都当技术员。年龄在 40 岁以上者,中学文化程度当材料员,大学文化程度当技术员.请用结构化语言判定表或判定树描述上述问题的加

22、工逻辑。(1)判定树 (2)判定表 (3)结构化语言:CASE 年龄b)IF(a=b)IF(a=c)PUT(等边三角形”)ELSE PUT(”等腰三角形)ENDIF ELSE IF(a=c)PUT(”等腰三角形”)ELSE IF(b=c)PUT(等腰三角形)ELSE PUT(”一般三角形)ENDIF ENDIF ENDIF ELSE PUT(”这不是一个三角形)ENDIF第 8 页 共 8 页 40、用 PAD 图描述下面问题的控制结构。有一个表 A(1)、A(2)、。A(n),按递增顺序排列。给定一个 Key 值,在表中用折半法查找。若找到,将表位置 i 送入 x,否则将零送到 x,同时将 key 值插入表中。算法:置初值 H=1(表头),T=N(表尾)。置 i=(H+T)/2(取整)。若 Key=A(i),则找到,i 送到 x;若 KeyA(i),则 Key 在表的后半部分,i+1 送入 H;若 KeyA(i),则 Key 在表的前半部分,i-1 送入 T,重复第 2 步查找直到 HT 为止.查不到时,将 A(i),.。A(N)移到 A(i+1).A(N+1),Key 值送入 A(i)中。解:如图所示:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁