软件工程课后习题简答题

合集下载

软件工程 各章 简答题

软件工程 各章 简答题

第一章绪论1. 软件产品的特性是什么?2. 软件生产的发展有几个阶段?各有何特征?3. 什么是软件危机?软件危机的表现是什么?4. 什么是软件工程?软件工程性质是什么?5. 软件工程目标和内容是什么?6. 软件工程面临的问题什么?7. 什么是软件工程过程?它包含些过程?8. 什么是软件生存周期?它有哪几个活动?9. 什么是软件生存周期模型?有哪些主要模型?10. 什么是软件开发方法?有哪些主要方法?第二章软件可行性研究与项目开发计划1. 可行性研究的任务是什么?2. 研究项目的技术可行性一般要考虑哪些情况?3. 可行性研究有哪些步骤?4. 可行性研究报告有哪些主要内容?5. 成本一效益分析可用哪些指标进行度量?6. 项目开发计划有哪些内容?第三章软件需求分析1. 什么是需求分析?需求分析阶段的基本任务是什么?2. 需求分析的难点主要表现在哪几个方面?3. 需求分析方法应遵循的原则是什么?4. 需求分析阶段的文档是什么?5. 什么是结构化分析方法?该方法使用什么描述工具?6. 结构化分析方法通过哪些步骤来实现.7. 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?8. 画数据流图的步骤是什么?画数据流图应该注意什么事项?9. 什么是数据字典?其作用是什么?它有哪些条目?10. 建立数据字典的形式是什么?11. 描述加工逻辑有哪些工具?12. 什么是IDEF方法?该方法中建立功能模型的基本步骤是什么?IDEF方法有什么特点?13. 简述SA方法的优缺点.第四章软件概要设计1. 什么是软件概要设计?该阶段的基本任务是什么?2. 什么是模块?模块有哪些基本属性?3. 软件设计的基本原理包括哪些内容?4. 衡量模块独立性的两个标准是什么?它们各表示什么含义?5. 模块间的耦合性由哪几种?它们各表示什么含义?6. 影响公共耦合的复杂程度的因素是什么?公共耦合会引起什么问题?7. 降低模块间的耦合度的方法有哪些?8. 模块的内聚性由哪几种?各表示什么含义?9. 什么是软件结构?结构图的主要内容是什么?10. 简述软件结构设计优化准则.11. 什么是模块的作用范围?什么是模块的控制范围?它们之间应该建立什么关系?12. 什么是”变换流”?13. 什么是”事务流”14. 面向数据流设计方法的过程是什么?15. 试述”变换分析”的设计步骤.试将变换型DFD数据流图转换成软件结构图.16. 试述”事务分析”的设计步骤.试将事务型DFD数据流图转换成软件结构图17. 叙述由IDEF图导出初始软件结构图的方法.第五章软件详细设计1. 详细设计的基本任务是什么?2. 结构化程序设计基本要点是什么?3. 详细设计有哪几种描述方法?4. 程序流程图的特点是什么?5. PAD图的特点是什么?6. 过程描述语言(PDL)的特点是什么?7. 简述Jackson方法的设计步骤.第六章软件编码1. 程序语言有哪些共同特征?2. 在项目开发时,选择程序设计语言通常考虑哪些因素?3. 第4代语言(4GL)有哪些主要特征?4. 举例说明各种程序设计语言的特点及适用范围.5. 什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?第七章软件测试1. 软件测试的目的是什么?2. 在软件测试中,应注意哪些原则?3. 什么是静态测试?什么是动态测试?4. 什么是黑盒测试法?什么是白盒测试法?5. 白盒测试有哪些覆盖标准?试对它们的检错能力进行比较.6. 采用黑盒技术设计测试用例有哪几种方法?这些方法呼有什么特点?7. 简要说明如何划分等价类?8. 用等价类划分的方法设计测试用例的步骤是什么?9. 使用边界值分析方法设计测试用例的原则有哪些?10. 软件测试过程中需要哪些信息?11. 软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?12. 单元测试有哪些内容?测试中采用什么方法?13. 什么是集成测试?为什么要进行集成测试?14. 非渐增式测试与渐增式测试有什么区别?15. 渐增式测试中组装模块的方法有哪些?各有什么优点和缺点?16. 什么是确认测试?该阶段有哪些工作?17. 调试的目的是什么?调试有哪些技术手段?第八章软件维护1. 软件维护有哪些内容?2. 什么是非结构维护?非结构化维护的特点是什么?3. 什么是结构化维护?结构化维护的特点是什么?4. 软件维护困难的原因是什么?5. 影响软件维护代价的因素有哪些?6. 软件维护费用的度量模型是什么?7. 软件维护的流程是什么?8. 维护技术有哪些?9. 软件维护的副作用有哪些?10. 如何控制因修改而引起的副作用?11. 什么是软件可维护性?可维护性度量的特性是什么?12. 提高可维护性的方法有哪些?13. 为了保证软件的可维护性,需要做哪些质量保证检查?14. 好的文档的作用和意义是什么?第九章软件开发的增量模型1. 瀑布模型有何局限性?2. 增量模型的基本思想是什么?3. 渐增模型有几种?各有何特点?4. 快速原型模型有几种?各有何特点?5. 快速原型模型的基本思想是什么?6. 运用原型的策略有几种?7. 使用快速原型方法构造原型时,对原型的要求是什么?8. 原型特性分为几种类型?9. 快速原型模型的开发步骤是什么?10. 构造原型的技术有哪些?11. 评价快速原型模型的优缺点.12. 原型的作用是什么?13. 什么情况下适宜使用原型?什么情况下不宜使用原型?第十章面向对象的方法1. 简述对象,类,类结构,消息方法的基本概念.2. 传统开发方法存在的问题什么?3. 为什么说用结构化方法开发的软件,其稳定性,可修改性和可重用性都比较差?4. 简述面向对象的特征.5. 继承性和多态性的好处是什么?6. 简述面向对象的要素.7. 面向对象分析模型的用途是什么?8. 简述对象模型的特征,举现实世界的例子,给出它的一般化关系,聚集关系的描述.9. 简述动态模型的特征,说明事件,事件跟踪图,状态,状态图的含义.10. 简述功能模型的特征.11. 简述三种分析模型的关系.12. 简述对象建模的过程.13. 简述动态建模的过程.14. 简述功能建模的过程.15. 面向对象设计准则是什么?16. 简述面向对象设计的启发规则.17. 系统设计的内容是什么?18. 对象设计的内容是什么?19. 在面向对象程序设计中,为适应面向对象方法所特有的概念(例如继承性)而必须遵循哪些新准则?20. 在类的实现中,利用既存类的途径是什么?21. 面向对象软件的测试如何进行?第十一章软件质量与质量保证1. 软件质量的含义是什么?2. 影响软件质量的因素有哪些?3. 什么是软件质量保证?4. 软件质量保证的主要功能是什么?5. 软件质量保证策略是什么?6. 软件质量保证的主要任务是什么?7. 说明McCall软件质量度题模型.8. 说明ISO的软件质量评价模型.9. 软件复杂性度量的主要参数有哪些?10. 程序复杂性的度量方法有哪些?11. McCabe度量法的缺点是什么?12. 什么是软件的可靠性?它们能否定量计算?13. 为什么要进行软件评审?软件设计质量评审与程序质量评审都有哪些内容?14. 提高软件质量和可靠性的技术有哪些?15. 说明容错软件的定义?16. 说明容错的一般方法?17. 说明容错系统的设计过程.第十二章软件工程管理1. 说明软件工程管理的重要性.2. 软件工程管理包括哪些内容?3. 软件项目计划中包括哪些内容?4. 软件开发成本估算方法有哪几种?各有什么特点?5. 画出表示软件任务开发并行性的网络图.6. 软件质量保证应做好哪几方面的工作?7. 什么是软件配置管理?什么是基线?8. 请叙述软件工程过程中版本控制与变更控制处理过程.9. 软件工程的意义是什么?都有哪些软件过程标准?10. 请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?第十三章软件开发环境1. 什么是软件开发环境?请列出其发展情况.2. 软件开发环境的基本要求是什么?3. “软件开发环境应是高度集成的一体化的系统”的含义是什么?4. 软件开发环境应具体高度的通用性.在些,通用性包括哪些方面?5. “软件开发环境应易于定制,裁剪或扩充以符合用户要求”,在此,”定制”,”裁剪”,”扩充”的含义是什么?6. 请叙述软件开发环境的分类.7. 何谓软件工具?通常包含哪几部分?8. 当今软件工具发展有何特点?9. 什么是CASE?CASE工具有哪些分类?10. 请叙述集成化CASE的五级模型.11. CASE工作台有哪些分类?。

软件工程—简答题

软件工程—简答题

软件工程—简答题1. 什么是软件工程?软件工程是一门将工程学原理与方法应用于软件开发的学科。

它涉及对软件的设计、开发、测试、维护和管理等方面的技术和方法。

软件工程的目标是创建高质量和可靠的软件系统,以满足用户的需求。

通过使用软件工程的原则和技术,开发团队能够有效地管理和控制软件开发过程,并提供可维护和可扩展的软件解决方案。

2. 软件工程的基本原则有哪些?软件工程的基本原则包括:2.1 分阶段开发软件开发过程通常分为需求分析、设计、编码、测试和维护等阶段。

每个阶段都应该有明确的目标和任务,确保软件系统的稳定性和质量。

2.2 面向对象设计面向对象设计是一种将问题领域的概念与程序设计语言中的对象模型相匹配的方法。

通过将问题划分为一组相互关联的对象,可以更好地组织和管理软件系统的结构和功能。

2.3 模块化和组件化模块化和组件化是将软件系统划分为相互独立且可重用的模块或组件的过程。

这样可以提高软件系统的可维护性和可扩展性,并降低代码的重复性。

2.4 品质保证软件工程要求对软件系统进行全面的测试和验证,以确保其满足用户的需求和质量标准。

包括单元测试、集成测试、系统测试等各个层次的测试。

2.5 项目管理项目管理是软件工程中非常重要的一环,它涉及资源的分配、进度的控制、团队协作等方面。

通过合理的项目管理,能够提高软件开发的效率和质量。

3. 软件工程的开发模型有哪些?软件工程的开发模型有许多种,常见的包括:3.1 瀑布模型瀑布模型是最早提出的软件开发模型,它将软件开发过程划分为需求分析、系统设计、编码、测试和维护等连续的阶段。

每个阶段的输出作为下一个阶段的输入,依次进行。

3.2 增量模型增量模型将软件开发过程划分为多个独立的增量,每个增量都包含完整的开发过程。

每个增量都可以交付给客户使用或测试,这样可以更快地获取用户反馈并逐步完善系统。

3.3 原型模型原型模型通过快速开发一个原型来获取用户需求,并以此为基础进行详细设计和开发。

简答题软件工程课后习题答案

简答题软件工程课后习题答案

课后习题答案02333软件工程第三章结构化方法1.基本概念需求分析:一般来说,分析是系统地使用信息,对一个问题的估算。

软件需求分析是这一概念的特化,即系统化地使用“数据流”、“加工”、“数据存储”、“数据源”和“数据潭”等术语所表达的信息,对待建系统“是什么”给出一个估算――系统概念模型软件设计:在需求分析的基础上,定义满足需求所需要的结构,即针对给定的问题,给出该问题的软件解决方案,确定“怎么做”的问题数据流图:表达功能模型的工具,即数据流图(Dataflow Diagram)简称DFD图,简单的说,DFD图是一种描述数据变换的图形化工具,其中饮食的元素可以是数据流、数据存储、加工、数据源和数据潭等变换型数据流图:具有较明显的输入部分和变换(主加工)部分之间的界面变换部分和输出部分之间界面的数据流图事务型数据流图:数据到达一个加工T,该加工T根据输入数据的值,在其后的基干动作序号(称为一个事务)中选出一个来执行模块:执行一个特殊任务的一个过程以及相关的数据结构1.简答题2.何谓模块耦合?简述模块耦合的类型。

答:耦合是不同模块之间相互依赖程序的度量内容耦合:当一个模块直接修改或操作另一个模块的数据,或一个模块不通过正常入口而转入到另一个模块时,公共耦合:两个或两个以上的模块共同引用一个全局数据项控制耦合一个模块通过气喘吁吁向另一个模块传递一个控制信息,接收信号的模块根据信号值进行适当的动作标记耦合:若一个模块A通过接口向两个模块B和C传递一个公共参数数据耦合:模块之间通过参数来传递数据3.何谓模块内聚?简述模块内聚的类型。

答:指一个模块内部各成分之间相互关联程度的度量偶然内聚:一个模块的各成分之间基本不存在任何关系逻辑内聚:几个逻辑上相关的功能被放在同一个模块中时间内聚:一个模块完成的功能必须在同一时间内执行,但这些功能只是因为时间因素关联在一起过程内聚:一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行通信内聚:一个模块的所有成分都操作同一数据集或生成同一数据集顺序内聚:一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入功能内聚:最理想的内聚,模块的所有成分对于完成单一的功能都是基本的。

软件工程课后作业

软件工程课后作业

1路松峰_20140062 2018-07-29 10:32:40一、简答题1.什么是软件工程?软件工程是关于软件生产的各个方面的工程学科。

二、判断题1、软件危机的主要表现是软件需求增加,软件价格上升。

正确2、软件就是程序,编写软件就是编写程序。

错误三、选择题1、用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为( A )工具。

A. CASEB.CAIC. CAMD. CAD2、在下列选项中,( C )不是软件的特征。

A.系统性与复制性B.可靠性与一致性C.有形性与可控性D.抽象性与智能性3、软件工程的三要素是( B )A.技术、方法和工具B.方法、工具和过程C. 方法、对象和类D.过程、模型和方法1、快速原型模型的主要优点是什么?软件产品的开发基本上是线性顺序进行的。

2、什么是模型?模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。

二、判断题1、在软件开发中采用原型系统策略的主要困难是成本问题。

正确2、软件过程改进也是软件工程的范畴。

正确三、选择题1、包含风险分析的软件工程模型是( D )。

A.喷泉模型B.瀑布模型C.增量模型D.螺旋模型2、软件过程是( C )。

A.特定的开发模型B.一种软件求解的计算逻辑C.软件开发活动的集合D.软件生命周期模型3、CMM模型将软件过程的成熟度分为5个等级。

在(B )使用定量分析来不断地改进和管理软件过程。

A.管理级B. 优化级C. 定义级D.可重复级面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。

该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导出软件的结构。

二、判断题1、需求评审人员主要由开发人员组成,一般不包括用户。

错误2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。

正确三、选择题1、增量模型本质上是一种( C)。

软件工程_简答题复习题(带答案)

软件工程_简答题复习题(带答案)

软件⼯程_简答题复习题(带答案).. ..第⼀章1,与计算机硬件相⽐,计算机软件有哪些特点?软件的特点如下。

1)⽆法直接观察计算机软件的物理形态,只能通过观察它的实际运⾏情况来了解它的功能、特性和质量等。

2)⼈们在分析、设计、开发、测试软件产品,以及在软件开发项⽬的管理过程中,渗透了⼤量的脑⼒劳动。

3)不存在像硬件⼀样的磨损和⽼化现象,但存在着缺陷维护和技术更新的问题。

4)软件的开发和运⾏必须依赖于特定的计算机系统环境。

5)具有可复⽤性。

3,什么是软件危机?什么原因导致了软件危机?软件危机的现象如下。

1)经费超出预算,项⽬⼀再拖延。

2)不重视需求,开发的软件不能满⾜⽤户的要求,项⽬成功率低。

3)没有规的软件⼯程⽅法,软件可维护性差、软件质量差、可靠性差。

4)开发⼯具落后,⼿⼯⽅式,开发效率低。

所有导致软件危机的原因,都与软件本⾝的产品特点相关。

1)软件是⼀个复杂的逻辑产品。

如果没有解决复杂问题的有效⽅法,以及软件产品的结构、质量、可维护性得不到保障,开发与维护费⽤就会持续升⾼。

2)软件产品不能实现⼤规模复⽤,这导致了软硬件⽣产效率的不同。

3)软件⽣产是脑⼒劳动,它看不见、摸不着,开发成本、开发周期等都⽆法做到准确估算,⽣产过程不易控制。

4)软件成本主要是由研发成本构成;⽽硬件的⽣产成本主要是材料和制造成本,分摊的研发成本很少,即软件研发过程与硬件制造过程相⽐要复杂得多。

5,请简述软件⼯程研究的容。

软件⼯程研究的容包括软件开发⽅法、软件开发模型、软件⽀持过程和软件管理过程。

软件开发⽅法的容涵盖市场调研、正式⽴项、需求分析、项⽬策划、概要设计、详细设计、编程、测试、试运⾏、产品发布、⽤户培训、产品复制、销售、实施、系统维护、版本升级等。

常⽤的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。

软件⽀持过程由所⽀持的CASE⼯具组成,常⽤的CASE⼯具有Power Designer和Rational Rose等。

软件工程简答题及答案

软件工程简答题及答案

软件工程简答题及答案软件工程试题整理_ 简答题1、可行性研究的任务是什么?首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。

然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。

从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。

㈠技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。

㈡经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。

㈢社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

2、什么是模块的影响范围?什么是模块的控制范围?他们之间应该建立什么关系?一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。

一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。

一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。

如果再设计过程中,发现模块作用范围不在其控制范围之内,可以用“上移判点” 或“下移受判断影响的模块,将它下移到判断所在模块的控制范围内”的方法加以改进。

3、非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块?非渐增式测试与渐增式测试的测试方法有以下区别:㈠非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。

而渐增式测试往往把单元测试与集成测试和在一起,同时完成。

㈡非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

㈢渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。

软件工程—简答题

软件工程—简答题

软件工程—简答题四、简答题1. 简述软件危机产生的原因。

答案:软件危机产生的原因有:(每点1分)(1)软件的规模越来越大,结构越来越复杂。

(2)软件开发的管理困难。

由于软件规模大,结构复杂,又具有无形性,导致管理困难,进度操纵困难,质量操纵困难,可靠性无法保证。

(3)软件开发费用不断增加。

软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升很快。

(4)软件开发技术、开发工具落后,生产率提高缓慢。

(5)生产方式落后。

软件仍然使用个体手工方式开发。

2. 简述需求分析的概念及需求分析的基本任务。

答案:需求分析是指开发人员要准确懂得用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。

(3分)需求分析的基本任务是要准确地定义新系统的目标,为了满足用户需要,回答系统务必“做什么”的问题。

(2分)3. 简述数据流图的分类及每一类的特点。

答案:数据流图有两类:变换型数据流图与事务型数据流图。

(1分)变换型数据流图是由输入、处理与输出三部分构成,(1分)因此变化型数据流图是一个顺序结构。

(1分)事务型数据流图特征:事务处理中心将它的输入流分离成许多发散的数据流,形成许多加工路径,(1分)并根据输入的值选择其中一个路径来执行。

(1分)4. 简述建立对象模型的过程。

答案:建立对象模型的步骤如下:(每点1分)(1)确定类:标出来自问题域的有关对象类。

(2)准备数据字典:为所有建模实体准备一个数据字典,准确描述各对象类的精确含义,描述当前问题中的类的范围,包含对类的成员、用法方面的假设或者限制;(3)确定关联:确定二个或者多个类之间的相互依靠;(4)确定属性:只考虑与具体应用直接有关的属性(5)使用继承来细化类:使用继承来共享公共结构,以此来重新组织类__全国2010年1月1.简述软件工程面临的问题。

软件工程 简答题复习题(带答案)

软件工程 简答题复习题(带答案)

软件工程简答题复习题(带答案)软件工程简答题复习题(带答案)1. 什么是软件工程?软件工程是一种系统化、规范化、可量化的方法,用于开发、维护和测试软件系统的过程。

它涵盖了软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。

2. 软件开发生命周期有哪些阶段?常见的软件开发生命周期包括需求分析、系统设计、详细设计、编码、测试、部署和维护等阶段。

3. 什么是需求分析?需求分析是软件开发过程中的第一步,它涉及与客户进行沟通和理解客户需求的过程。

通过需求分析,开发团队可以明确软件系统的功能和性能要求,并将这些要求转化为详细的规格说明。

4. 需求分析的主要目标是什么?需求分析的主要目标是确保开发团队和客户对软件系统的需求达成共识。

它需要明确软件系统的功能需求、性能需求和约束条件,以便后续的设计和开发工作能够按照这些需求进行。

5. 什么是软件设计?软件设计是在需求分析的基础上,根据系统需求和约束条件,将系统划分为模块,确定模块之间的接口和关系,设计出满足系统需求的软件结构和算法的过程。

6. 软件设计的原则有哪些?常见的软件设计原则包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP)和迪米特法则(LoD)等。

7. 什么是软件测试?软件测试是为了评估系统的质量和功能是否满足需求的过程。

它通过设计和执行测试用例,检查系统的输出是否符合预期,并发现潜在的错误和缺陷。

8. 软件测试的分类有哪些?软件测试可以分为单元测试、集成测试、系统测试和验收测试等不同的层次。

单元测试用于测试软件的最小功能单元,集成测试用于测试不同模块之间的交互,系统测试则测试整个系统的功能和性能,验收测试是由客户进行的测试,以确认系统是否达到了合同中规定的要求。

9. 什么是软件维护?软件维护是在软件交付给客户后,为了保证其正常运行和适应环境变化而进行的一系列活动。

维护包括错误修复、性能优化、功能扩展等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章:三、简答题1. 软件产品的特性是什么?答:●软件是一种逻辑产品,具有无形性;●软件产品的生产主要是研制;主要是脑力劳动;●软件不存在磨损和老化问题,但存在退化问题;●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。

2. 软件发展有几个阶段?各有何特征?答:①程序设计阶段。

硬件特征:价格贵、存储容量小、运行可靠性差。

软件特征:只有程序、程序设计概念,不重视程序设计方法。

②程序系统阶段。

硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。

软件特征:程序员数量猛增,开发人员素质低。

③软件工程阶段。

硬件特征:向超高速、大容量、微型化及网络化方向发展。

软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。

3. 什么是软件危机?其产生的原因是什么?答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。

而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。

致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。

软件危机主要表现在两个方面:(1) 软件产品质量低劣,甚至开发过程就夭折。

(2) 软件生产率低,不能满足需要。

4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点?答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。

软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。

主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。

⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。

但在软件开发实践中也逐渐暴露出它的缺点。

它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。

⑵增量模型是一种非整体开发的模型。

根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。

该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。

⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实施工程、客户评估。

⑷喷泉模型用于采用对象技术的软件开发项目。

它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。

喷泉模型使开发过程具有迭代性和无间隙性。

软件开发过程有4个阶段,即分析、系统设计、软件设计和实现。

各阶段相互重叠,以分析为基础,资源消耗成塔形,从高层返回低层无资源消耗。

强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。

⑸基于知识的模型也称为智能模型。

通过领域的专家系统,可使需求说明更加完整、准确和无二义性。

通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。

5. 有哪些主要的软件开发方法?答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。

6. 软件生存周期各阶段的主要任务是什么?答:软件生存周期按瀑布模型分为6个阶段:● 可行性研究与计划(确定系统的目标和规模,分析项目的可行性);● 需求分析与规格说明(明确系统的规格和要求);● 设计(包括概要设计和详细设计,将系统分解为模块);● 编程(用程序语言实现每个模块,简单容易);● 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);● 运行维护(扩充功能、纠错等)。

7. 原型化方法的核心是什么?它具有哪些特点?答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。

强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。

它是一个循环的模型。

速成原型法按以下步骤循环执行:快速分析。

②构造原型。

③运行和评价原型。

④修改与改进。

第二章:三、简答题1. 需求工程包括哪些基本活动?各项基本活动的主要任务是什么?答:需求工程过程包括如下主要活动:⑴获取需求。

深入实际,在充分理解用户需求的基础上,获取足够多的问题领域的知识,积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。

需求获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。

⑵需求分析与建模。

对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。

进一步对所建立的模型(原型)进行分析。

需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。

⑶需求规格说明。

对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。

⑷确认需求。

以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格说明与用户达成一致。

其主要任务是冲突求解,包括定义冲突和冲突求解两方面。

常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。

⑸需求管理。

在整个需求工程过程中,贯穿了需求管理活动。

需求管理主要包括跟踪和管理需求变化,支持系统的需求演进。

由于客户的需要总是不断(连续)增长的,但一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件管理的首要问题。

对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。

当前的发展是软件家族法,即产品线方法。

多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性,并进行关于变化的推理。

进化需求是十分必要的。

2.简述抽取需求的主要方法,并比较它们的特点。

⑴面谈法。

这是一种重要而直接简单,随时可使用的发现和获取需求的方法。

面谈的对象主要有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个对领域知识的学习和转换过程。

使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才能取得好的效果。

⑵问卷法调查法。

通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。

这是一种从多个用户处收集需求信息的有效方式,是对面谈法的补充。

⑶会议讨论法。

所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。

这种方法适合于开发方不清楚项目需求的情况。

⑷原型法。

对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需求。

而原型化方法(Prototyping Method)是获取这一类项目需求的有效方法。

⑸面向用例的方法。

分析建立“用例”的过程,也就是提取需求的过程。

在实际应用中,常常将以上方法进行综合应用。

3. 客户的需要总是不断地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化就成为软件进化的首要问题。

请说明需求变更的管理过程。

答:需求变更的管理是需求管理的核心内容。

其主要任务是对系统需求变更进行跟踪和控制。

对传统的变化管理过程来说,其基本内容包括软件配置、软件基线和变更审查等。

目前推出的新的管理方法有软件家族法,即软件产品线方法及多视点方法等。

下图描述了需求变更的管理过程。

4. M公司的软件产品以实验型的新软件为主。

用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。

若你作为一名管理人员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由。

切记:副总裁不喜欢报告长度超过一页。

参考答案提示:应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。

根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。

5. 如何画分层数据流图?有哪些基本原则?答:总的原则是:至顶而下,逐层分解(画分层数据流图)。

逐层分解的画法可以控制每一层的复杂度。

顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。

中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。

底层:由不再进行分解的基本加工组成。

画分层数据流图的基本原则有:①数据守恒与数据封闭原则。

②加工分解的原则。

③子图与父图“平衡”的原则。

④合理使用文件的原则。

6. 加工小说明有哪些描述方法?它们各有何优缺点?为什么不采用自然语言进行描述?答:主要的描述方法有三种;结构化语言、判定表和判定树。

●结构化语言:介于自然语言和形式语言(如谓词逻辑)之间的的一种半形式语言,它是自然语言的一个受限制的子集。

是在自然语言的基础上加上一些约束,一般分为两层结构:外层语法较具体,为控制结构(顺序、选择、循环);内层较灵活,表达“做什么”。

常用结构化英语或结构化汉语表示,精确、简明扼要、文体灵活。

结构化语言特点:简单,易学,少二义性,但不好处理组合条件。

●判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。

判定表是一种二维的表格,常用于较复杂的组合条件。

通常由四部分组成,如教材表2-2所示。

对用结构化语言不易处理的较复杂的组合条件问题,可使用判定表。

●判定树:本质上与判定表相同,图形表示更易于理解。

描述一般组合条件较清晰,但不易输入计算机。

7. 考察下图中子图、父图的平衡关系。

图1图2参考答案:⑴显然,图1中子图与父图不平衡。

⑵图2中,如果有如下数据条目:订货单=客户+账号+数量则子、父图平衡。

8. 画出银行取款过程的用例图。

问题描述为:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款数据库”,修改相应数据,并更新“银行卡”,同时发出付款通知,出纳向储户付款。

参考答案:分析所给出的需求,确定角色为:储户、存款数据库、存折、出纳。

用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。

第三章:三、简答题1.答:对应关系,2.(1)数据由某个子系统产生,并且被存储到仓库中,以便为另外一些子系统共享;(2)由于中央集中控制的缘故,共享数据能得到有效的管理,各子系统之间不需要通过银行取款系统的高层用例图复杂的机制来传递共享数据;(3)一个子系统不必关心其他的子系统是怎么使用它产生的数据;(4)所有的子系统都拥有一致的基于中央数据仓库的数据视图。

相关文档
最新文档