软件工程实用教程吕云翔课后答案.docx
- 文档编号:25289844
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:40
- 大小:160.96KB
软件工程实用教程吕云翔课后答案.docx
《软件工程实用教程吕云翔课后答案.docx》由会员分享,可在线阅读,更多相关《软件工程实用教程吕云翔课后答案.docx(40页珍藏版)》请在冰豆网上搜索。
软件工程实用教程吕云翔课后答案
软件工程实用教程吕云翔-课后答案
LT
1.
2.
3.符。
这主要是由于开发人员与用户之间不能充分有效的交流造成的,使得开发人员对用户需求的理解存在着差异;
4.相比越来越廉价的硬件,软件代价过高;
5.软件质量难以得到保证,且难以发挥硬件潜能。
开发团队缺少完善的软件质量评审体系以及科学的软件测试规程,使得最终的软件产品存在着诸多缺陷;
6.难以准确估计软件开发、维护的费用以及开发周期。
往往软件产品不能在预算范围之内,按照计划完成开发。
很多情况下,软件产品的开发周期或经费会大大超出预算;
7.难于控制开发风险,开发速度赶不上市场变化;
8.软件产品修改维护困难,集成遗留系统更困难;
9.软件文档不完备,并且存在着文档内容与软件产品不符的情况。
软件文档是计算机软件的重要组成部分,它为在软件开发人员之间以及开发人员与用户之间信息的共享提供了重要的平台。
软件文档的不完整和不一致的问题会给软件的开发和维护等工作带来很多麻烦。
1)简述软件工程的基本原则。
1.用分阶段的生存周期计划进行严格的管理;
将软件的生存周期划分为多个阶段,对各个阶段实行严格的项目管理。
软件开发是一个漫长的过程,人们可以根据工作的特点或目标,把整个软件的开发周期划分为多个阶段,并为每个阶段制定分阶段的计划及验收标准,这样有益于对整个软件开发过程进行管理。
在传统的软件工程中,软件开发的生存周期可以划分为可行性研究、需求分析、软件设计、软件实现、软件测试、产品验收和交付等阶段。
2.坚持进行阶段评审;
严格的贯彻与实施阶段评审制度可以帮助软件开发人员及时地发现错误并将其改正。
在软件开发的过程中,错误发现的越晚,修复错误所要付出的代价就会越大。
实施阶段评审,只有在本阶段的工作通过评审后,才能进入下一阶段的工作。
3.实行严格的产品控制;
在软件开发的过程中,用户需求很可能在不断的发生着变化。
有些时候,即使用户需求没有改变,软件开发人员受到经验的限制以及与客户交流不充分的影响,也很难做到一次性获取到全部的正确的需求。
可见,需求分析的工作应该贯穿到整个软件开发的生存周期内。
在软件开发的整个过程中,需求的改变是不可避免的。
当需求更新时,为了保证软件各个配置项的一致性,实施严格的版本控制是非常必要的。
4.采用现代程序设计技术;
现代的程序设计技术,比如面向对象,可以使开发出来的软件产品更易维护和修改,同时还能缩短开发的时间,并且更符合人们的思维逻辑。
5.软件工程结果应能清楚地审查;
虽然软件产品的可见性比较差,但是它的功能和质量应该能够被准确地审查和度量,这样才能有利于有效的项目管理。
一般软件产品包括可以执行的源代码、一系列相应的文档和资源数据等。
6.开发小组的人员应该少而精;
开发小组成员的人数少有利于组内成员充分的交流,这是高效团队管理的重要因素。
而高素质的开发小组成员是影响软件产品的质量和开发效率的重要因素。
7.承认不断改进软件工程实践的必要性。
随着计算机科学技术的发展,软件从业人员应该不断地总结经验并且主动学习新的软件技术,只有这样才能不落后于时代。
2)什么是软件过程?
软件过程标准包括哪些内容?
软件过程又称为软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合。
标准:
制定了ISO12207软件生存周期过程标准,它把用于开发一个软件系统的过程分为三类:
主过程、支持过程和辅助过程(组织过程)。
主过程是构成软件生存周期主要部分的那些过程,正是这些过程启动或进行软件产品的开发、操作或维护。
这些过程共有五个,它们是:
(1)获取过程:
定义需方(即获取一个系统、软件产品或软件服务的组织)的活动;
(2)供应过程:
定义供方(即向需方提供系统、软件产品或软件服务的组织)的活动;
(3)开发过程:
定义开发者(即定义和开发软件产品的组织)的活动;
(4)维护过程:
定义维护者(即对软件产品进行维护服务的组织)的活动,这个过程包括系统移植和退役;
(5)运行过程:
定义运行者(即在计算机系统运行环境中向其用户提供运行服务的组织)的活动。
支持过程是对另一个过程提供支持的过程。
被支持的过程根据需要采用支持性过程,并与该过程结合,帮助软件项目获得成功,并提高质量。
支持过程共有如下八个:
(1)文档过程:
定义对某生存周期过程所产生的信息进行记录的活动;
(2)配置管理过程:
定义配置管理活动;
(3)质量保证过程:
定义客观地保证软件产品和过程符合规定要求、遵守已定计划的活动;
(4)验证过程:
定义需方、供方或独立的第三方对软件产品进行验证的活动,这些验证活动的深度由软件项目的性质决定;
(5)确认过程:
定义需方、供方或独立的第三方对软件产品进行确认的活动;
(6)联合评审过程:
定义对某项活动的状态和产品进行评价的活动,这一过程可由任何双方共同采用,其中一方(评审方)评审另一方(被评方);
(7)审计过程:
定义对是否符合要求、计划和合同进行确定的过程,这个过程可由任何双方采用,其中一方(审计方)审计另一方(被审方)的软件产品或活动;
(8)问题解决过程:
定义对开发、操作、维护或其它过程中发现的问题(包括不一致性)进行分析和排除的过程。
辅助过程是一个组织用来建立、实施一种基础结构、并不断改进该基础结构的过程。
基础结构由一些相关的生存周期过程和人员组成。
这些辅助过程有如下四个:
(1)基础设施过程:
定义建立生存周期过程的基础结构所需的基本活动;
(2)管理过程:
定义在生存周期过程中管理(包括项目管理)的基本活动;
(3)培训过程:
定义为提供经过适当培训的人员所需的一些活动;
(4)过程改进过程:
定义一个组织(即需方、供方、开发者、操作者、维护者或另一过程的管理者)为了建立、测量、控制和改进其生存周期过程需完成的基本活动。
3)简述常见的软件生存周期模型各自的特征和优缺点。
1.瀑布模型是一种线性的开发模型,具有不可回溯性。
开发人员必须等前一阶段的任务完成后,才能开始进行后一阶段的工作,并且前一阶段的输出往往就是后一阶段的输入。
由于它的不可回溯性,如果在软件生存周期的后期发现并要改正前期的错误,那么需要付出很高的代价。
传统的瀑布模型是文档驱动的。
瀑布模型的优点是过程模型简单,执行容易;缺点是无法适应变更。
瀑布模型适应于具有以下特征的软件开发项目。
(1)在软件开发的过程中,需求不发生或发生很少变化,并且开发人员可以一次性获取到全部需求。
否则,由于瀑布模型较差的可回溯性,在后续阶段中需求经常性的变更需要付出高昂的代价。
(2)软件开发人员具有丰富的经验,对软件应用领域很熟悉。
(3)软件项目的风险较低。
瀑布模型不具有完善的风险控制机制。
2.原型模型主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究,是一种开发人员为了快速而准确地获取需求经常采用的方法。
在初步获取需求后,开发人员会快速地开发一个原型系统。
通过对原型系统进行模拟操作,开发人员可以更直观、更全面和更准确地了解用户对待开发系统的各项要求,同时还能挖掘到隐藏的需求。
原型模型的优点是简单和快速,缺点是需要花费一些额外的成本来构造原型,并且不利于创新。
3.增量模型作为瀑布模型的一个变体,具有瀑布模型的所有优点,此外,它还有以下优点:
第一个可交付版本所需要的成本和时间很少;开发由增量表示的小系统所承担的风险不大;由于很快发布了第一个版本,因此可以减少用户需求的变更;允许增量投资,即在项目开始时,可以仅对一个或两个增量投资。
增量模型的不足为:
如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性,可能会超出组织的能力。
增量模型适用于以下特点的软件项目。
(1)软件产品可以分批次地进行交付。
(2)待开发的软件系统能够被模块化。
(3)软件开发人员对应用领域不熟悉,难以一次性地进行系统开发。
(4)项目管理人员对全局把握的水平较高。
4.演化模型基于这样的假定:
需求是最基本的,是唯一的风险。
演化模型具有以下优点:
在需求不能予以规范时,可以使用这一演化模型;用户可以通过运行系统的实践,对需求进行改进;与瀑布模型相比,需要更多用户/获取方的参与。
演化模型的不足包括:
演化模型的使用仍然处于初步探索阶段,因此具有较大的风险,需要有利的管理;即使很好地理解了需求或设计,该模型的使用也很容易成为不编写需求或设计文档的借口;用户/获取方不理解该方法的自然属性,因此当结果不够理想时,可能会产生抱怨。
5.螺旋模型通常用来指导大型软件项目的开发。
它把开发过程分为制定计划、风险分析、实施开发和用户评估四类活动。
螺旋模型综合了传统的生存期模型的优点,同时扩展了增量模型管理任务的范围:
风险分析,用来弥补其不足。
螺旋模型的另外一个特征是,只有一个迭代过程真正开发可交付的软件。
螺旋模型也存在其缺点:
一个周期执行时间太长;要有方法和自动化工具支持,否则无法实施。
螺旋模型适应于风险较大的大型软件项目的开发。
6.统一过程模型具有三大特点:
用例驱动,以架构为中心,迭代和增量开发。
统一过程模型核心是解决可操作性问题,帮助开发人员尽可能少地依赖那些“不可描述的经验”。
可以多次执行各个工作流程,从而有利于更好地理解需求、设计出合理的系统构架,并最终交付一系列渐趋完善的成果。
适用的范围极为广泛。
对开发人员的素质要求较高。
统一过程模型在实际实施过程中也存在很多的困难,包括:
多层次持续的规划与评估;判断构架中关键风险的经验;高效率的验证和评价手段;多工种之间的频繁沟通;多版本工作产品的管理等。
7.敏捷方法是一种轻量级的软件工程方法,更强调软件开发过程中各种变化的必然性,通过团队成员之间充分的交流与沟通以及合理的机制来有效地响应变化。
敏捷模型避免了传统的重量级软件开发过程复杂、文档繁琐和对变化的适应性低等各种弊端,它强调软件开发过程中团队成员之间的交流、过程的简洁性、用户反馈、对所作决定的信心以及人性化的特征。
缺点:
组织模型和建模方法比较薄弱。
7)常用的软件工程的辅助工具有哪些?
各有什么作用?
1.分析设计工具
(1)MicrosoftVisio
MicrosoftVisio通过创建与数据相关的Visio图表来显示数据,这些图表易于刷新,并能够显著提高生产率,使用各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。
Visio提供了各种模板:
业务流程的流程图、网络图、工作流图、数据库模型图和软件图,这些模板可用于可视化和简化业务流程、跟踪项目和资源、绘制组织结构图、映射网络、绘制建筑地图以及优化系统。
(2)RationalRose
RationalRose是美国的Rational公司的面向对象建模工具,利用这个工具,可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C++、Java、VB和Oracle等语言和系统的代码。
RationalRose包括了统一建模语言(UML),OOSE,以及OMT,是一个完全的,具有能满足所有建模环境需求能力和灵活性的一套解决方案。
允许开发人员,项目经理,系统工程师和分析人员在软件开发周期内在将需求和系统的体系架构转换成代码,消除浪费的消耗,对需求和系统的体系架构进行可视化,理解和精练。
(3)Together
Together是由Borland公司发布的集成了JavaIDE的产品线,源于JBuilder中的UML建模工具。
这条产品线提供了不同应用层次的功能,比如TogetherDesigner,TogetherArchitect,TogetherDeveloper。
从2007年开始,他们将这些功能合并为一个产品进行发布。
技术上讲,Together是一组Eclipse插件。
TogetherDeploper使用UML1.4,支持多种语言,物理数据建模,设计模式,源代码设计模式识别,模板代码设计和重用,文件生成等。
(4)PowerDesigner
PowerDesigner是Sybase公司的CASE工具集,提供了一个复杂的交互环境,支持开发生存周期的所有阶段,从处理流程建模到对象和组件的生成。
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制。
PowerDesigner系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员DBA和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。
(5)CASEStudio
CASEstudio是一个专业的数据库设计工具。
可以透过ER图表、资料流向图来设计各式各样的数据库系统(像是mssql,oracle,sybase等),另外程式提供了各式各样的管理单元帮助程序员进行设计。
2.程序开发工具
(1)MicrosoftVisualStudio
MicrosoftVisualStudio是微软公司推出的Windows平台上的集成开发环境。
提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建应用程序。
VisualStudio包括各种增强功能,例如可视化设计器、对Web开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能,为开发人员提供了所有相关的工具和框架支持。
(2)Eclipse
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
最初是由IBM公司开发的替代商业软件VisualAgeforJava的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会管理。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
(3)NetBeans
NetBeans由Sun公司在2000年创立,当前可以在Solaris、Windows、Linux和MacintoshOSX平台上进行开发,并在Sun公用许可范围内使用。
NetBeans是一个全功能的开放源码JavaIDE,可以帮助开发人员编写、编译、调试和部署Java应用,并将版本控制和XML编辑融入其众多功能之中。
NetBeans可支持Java2平台标准版(J2SE)应用的创建、采用JSP和Servlet的2层Web应用的创建,以及用于2层Web应用的API及软件的核心组的创建。
此外,NetBeans还预装了两个Web服务器,即Tomcat和GlassFish,从而免除了繁琐的配置和安装过程。
(4)Delphi
Delphi是Borland公司研制的可视化开发工具,可在Windows3.x、Windows95、WindowsNT、WindowsXP、WindowsVista等环境下使用。
Delphi拥有一个可视化的集成开发环境,采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。
它提供了500多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。
开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。
(5)DevC++
DevC++是一个C&C++开发工具,它是一款自由软件,遵守GPL协议。
它集合了GCC、MinGW32等众多自由软件,并且可以取得最新版本的各种工具支持。
它使用MingW32/GCC编译器,遵循C/C++标准。
开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能。
3.测试工具
(1)LoadRunner
LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。
它能预测系统行为并优化系统性能。
LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为实行实时性能监测。
(2)WinRnnner
MercuryInteractive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
(3)Segue
SegueSilk产品系列是高度集成的自动化黑盒功能、性能测试平台。
分布式测试环境,集中控制门户(浏览器方式)能够控制测试代理,提供自动测试流程的流程化定义功能,具备"端到端"的组件测试能力,测试用例的管理、自动测试,连同测试脚本的跨平台能力,基于AOL7标准,全面支持WEB应用的测试能力,能够通过提供大量的数据,提供工作流类应用的模拟运行功能,全面支持UNICODE编码标准,支持各种WEB技术构件。
4.配置管理工具
(1)MicrosoftVisualSourcesafe
MicrosoftVisualSourceSafe是微软公司出品的版本控制系统,简称VSS。
软件支持Windows系统所支持的所有文件格式,通常与微软公司的VisualStudio产品同时发布,并且高度集成。
包括服务器和通过网络可以连接服务器的客户端。
VSS提供了基本的认证安全和版本控制机制,提供历史版本对比,适合于个人程序开发的版本管理。
(2)ClearCase
ClearCase是Rational公司开发的配置管理工具,可以与Windows资源管理器集成使用,并且还可以与很多开发工具集成在一起使用。
ClearCase主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务,包括支持当今流行软件开发环境Client/Server网络结构。
它包含了一套完整的软件配置管理工具而且结构透明、界面可亲。
5.项目管理工具
(1)MicrosoftProject
MicrosoftProject是专案管理软件程序,由微软开发销售。
软件设计目的在于协助专案经理发展计划、为任务分配资源、跟踪进度、管理预算和分析工作量。
可产生关键路径日程表,日程表可以以资源标准的,而且关键链以甘特图形象化。
另外,Project可以辨认不同类别的用户。
这些不同类的用户对专案、概观、和其它资料有不同的访问级别。
(2)CA-SuperProject
ComputerAssociatesInternational公司的CA-SuperProject是一个常用的软件,特别是在那些管理公司网络的项目管理人员、在Unix或Windows环境下的工作人员以及需要高性能程序的人中更受欢迎。
这个软件包能支持多达160,000多个任务的大型项目。
能创建及合并多个项目文件,为网络工作者提供多层密码入口,进行计划审评法(PERT)的概率分析。
而且,这一程序包含一个资源平衡算法,在必要时,可以保证重要工作的优先性。
(3)TimeLine
Symantec公司的TimeLine软件是有经验的项目经理的首选。
它的报表功能以及与SQL数据库的连接功能都很突出。
日程表、电子邮件的功能,排序和筛选能力以及多项目处理都是精心设计的。
另外,它还有一个叫做Co-Pilot的功能,这是一个很有用的推出式帮助设施,用户界面很好,极易操作。
许多评论人员认为TimeLine最适于大型项目以及多任务项目,但不如其他软件包便于初学者使用。
2练习题
1)什么是项目立项,包括哪几个步骤?
任何一个完整的软件工程项目都是从项目立项开始的。
项目立项包括项目发起、项目论证、项目审核和项目立项四个过程。
2)可行性研究包括哪些方面?
每个方面关注的问题领域是什么?
可行性研究需要从多个方面进行评估,主要包括:
战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性和风险可行性等。
●战略可行性研究主要从整体的角度考虑项目是否可行,例如提出的系统对组织目标具有怎样的贡献;新系统对目前的部门和组织结构有何影响;系统将以何种方式影响人力水平和现存雇员的技术;它对组织整个人员开发策略有何影响等等。
●操作可行性研究主要考虑系统是否能够真正解决问题;是否系统一旦安装后,有足够的人力资源来运行系统;用户对新系统具有抵触情绪是否可能使操作不可行;人员的可行性等问题。
●计划可行性研究主要估计项目完成所需的时间并评估项目的时间是否足够。
●技术可行性研究主要考虑项目使用技术的成熟程度;与竞争者的技术相比,所采用技术的优势及缺陷;技术转换成本;技术发展趋势及所采用技术的发展前景;技术选择的制约条件等。
●社会可行性研究主要考虑项目是否满足所有项目涉及者的利益;是否满足法律或合同的要求等。
●市场可行性研究主要包括研究市场发展历史与发展趋势,说明本产品处于市场的什么发展阶段;本产品和同类产品的价格分析;统计当前市场的总额、竞争对手所占的份额,分析本产品能占多少份额;产品消费群体特征、消费方式以及影响市场的因素分析;分析竞争对手的市场状况;分析竞争对手在研发、销售、资金、品牌等方面的实力;分析自己的实力等。
●经济可行性研究主要是把系统开发和运行所需要的成本与得到的效益进行比较,进行成本效益分析。
●风险可行性研究主要是考虑项目在实施过程中可能遇到的各种风险因素,以及每种风险因素可能出现的概率和出险后造成的影响程度。
3)进行可行性研究的一般步骤是什么?
1)明确系统的目标
2)分析研究现行系统
3)设计新系统的高层逻辑模型
4)获得并比较可行的方案
5)撰写可行性研究报告
4)需求分析和可行性研究的侧重点有什么不同?
可行性研究的目的是评估系统是否值得去开发,问题是否能够解决,而不是对需求进行定义。
如果说可行性分析是要决定“做还是不做”,那么需求分析就是要回答“系统必须做什么”这个问题。
5)获取需求的常用方法有哪些?
问卷调查、访谈、实地操作、建立原型
6)如何进行结构化需求分析,其建模方法都有哪些?
结构化分析的具体步骤为:
1)建立当前系统的“具体模型”:
系统的“具体模型”就是现实环境的忠实写照,这样的表达与当前系统完全对应,因此用户容易理解。
2)抽象出当前系统的逻辑模型:
分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得当前系统的“逻辑模型”。
3)建立目标系统的逻辑模型:
分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”。
4)为了对目标系统进行完整的描述,还需要考虑人机界面和其他一些问题。
在结构化分析中经常用到的建模方法主要有:
1)数据流图(DFD)
2)实体联系图(E-R)
3)控制流图(CFD)
4)状态迁移图(STD)
7)根据“学生档案管理系统”的数据流图,完成它的数据字典。
数据流名称:
资料
别名:
学生资料
组成:
学号+姓名+性别+年龄+学院+年级+专业
8)有如下一个学生选课系统:
教师提出开课计划,系统批准后给教师下发开课通知。
学生可向系统提出选课申请,系统批准后给学生下发选课申请结果通知。
课程结束后,系统还可以帮助教师录入学生成绩,同时把成绩单发送给学生。
请用Visio画出该系统顶层的数据流图。
3练习题
1)软件设计的意义和目标是什么?
软件设计在软件开发过程中处于核心地位,它是保证质量的关键步骤。
设计为我们提供了可以用于质量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实用教程 吕云翔 课后 答案