版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上软件工程问答题第1章 软件工程与软件文档1、什么是软件?软件的特点是什么?Answer:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。软件的特点:(1)软件是一种逻辑实体,具有抽象性而不具有物理性(2)软件的生产和硬件不同(3)软件产品不会磨损(4)开发和运行受计算机系统的限制(5)未完全摆脱手工艺的生产方式,计算机辅助开发工具帮助有限(6)软件本身的复杂性(7)软件成本相当昂贵,主要是脑力劳动成本(8)相当多的软件工作涉及到社会因素,比如体制、管理、法律等2、计算机软件有哪些常用的划分标准?Answer:(1)按软件的功能进行
2、划分,可分为:系统软件、支撑软件和应用软件(2)按软件规模进行划分,可分为:微型、小型、中型、大型、甚大型、极大型(3)按软件工作方式划分,可分为:实时处理软件、分时软件、交互式软件和批处理软件(4)按软件服务对象的范围划分可分为:项目软件和产品软件(5)按使用的频度进行划分:有的仅供一次性使用、有的有较高的使用频度(6)按软件失效的影响进行划分:有的软件失效对系统影响不大、有的可能造成灾难性后果3、什么是软件危机?为什么会出现软件危机?软件危机的表现是什么?Answer:软件危机就是在软件开发和维护过程中出现的一系列严重问题。软件危机产生的原因:(1)用户需求不明确(2)软件开发人员和用户对
3、软件需求的理解不一致(3)领域交叉知识的缺乏(4)软件开发人员不能有效、独立自主的处理大型软件的全部关系和各个分支(5)缺乏有力的方法学和工具方面的支持(6)软件产品的复杂性和人类智力的局限性,致使人们无力处理“复杂问题”软件危机的表现:(1)软件开发的进度难以控制,经常出现经费超预算,完成期限一拖再拖的现象(2)软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而给整个开发过程带来灾难性的后果(3)由于缺乏完整规范的资料,加之软件测试不够充分,从而造成软件质量低下,在运行中出现大量问题。4、什么是软件工程?软件工程构成三要素是什么?试说明软件工程是如何克服软件危机的?Answer:软件工程
4、定义:(1)Bauer定义:软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。(2)IEEE定义:软件工程是研究和应用如何以系统化、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。软件工程构成三要素为:(1)过程管理部分(2)方法技术手段(3)工具自动或半自动地支持软件的开发和管理要素之间的相互关联和支持5、软件工程的目标是什么?软件工程的原则是什么?Answer:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软
5、件产品。软件工程的原则:抽象、信息隐藏、模块化、局部化、一致性、完整性和可验证性。6、ACM提出的12个在不同场合反复出现的概念是什么?如何理解?Answer:ACM(Association for Computer Machinery)美国计算机协会这12个概念是:(1)绑定。通过把一个抽象的概念与附加特性相联系从而使抽象的概念具体化的过程。(2)大问题的复杂性。C(M)+C(N)C(M+N)(3)概念和形式模型。对一个想法或问题进行形式化、特征化、可视化和思维的各种方法。(4)一致性和完备性。 一致性包括公理的一致性、理论与事实的一致性、设计与实现的一致性等。 完备性包括公理的充分性和功能
6、的充分性。(5)效率。关于对空间、时间、人力、财力等资源耗费的度量。(6)演化。对更改的适应性。(7)抽象层次。通过具有不同层次的细节和指标的抽象能够表示一个实体或系统。(8)按空间排序。局部性和近邻性的概念。(9)按时间排序。事件排序中的时间概念。(10)重用。技术、概念或系统成分可被再次使用的能力。(11)安全性。对合适的响应以及抗拒不合适的非预期的请求以保护自己的能力、承受灾难的能力。(12)折中和结论。7、软件文档在软件开发中的地位和作用如何?在软件开发中对文档的基本要求是什么?Answer:软件文档的地位:(1)编制软件文档的过程,实际上就是采用软件工程方法,有组织、有计划的科学管理
7、过程和研究开发过程。(2)软件文档记录软件开发的活动和阶段性成果,它具有永久性并能提供给人或机器阅读。(3)从某种意义上,软件文档甚至比可执行代码程序还重要。软件文档的作用:(1)文档反应软件开发人员各阶段的工作成果和结束标志。(2)文档提高软件开发过程的透明度,便于软件管理人员对整个开发过程进行控制和管理。(3)文档增强软件开发的系统性(4)文档增强软件开发人员之间的交流(5)文档既便于协调软件开发工作,又为软件维护和扩充提供数据。(6)文档声明软件安装。对文档的基本要求:及时性、完整性、准确性、规范性。8、如何理解标准化工作对软件文档编写的积极作用?Answer:9、关于计算机文档的常用标
8、准有哪些?Answer:软件工程和软件文档标准可分为5个级别:国际标准、国家标准、行业标准、企业规范和项目规范。常用的有:ISO(国际标准化组织)、GB(国标)、ANSI(美国国家标准协会)、IEEE(美国电气与电子工程师协会)等10、根据国家标准,软件文档的种类有哪些?Answer:根据GB,软件文档种类有:(1)可行性研究报告(2)项目开发计划(3)软件需求说明书(4)数据要求说明书(5)概要设计说明书(6)详细设计说明书(7)数据库设计说明书(8)用户手册(9)操作手册(10)测试计划(11)测试分析报告(13)开发进度月报(14)项目开发总结报告第2章 软件生命周期、过程模型、CASE
9、1、什么是软件生命周期?把生命周期划分成阶段的目的是什么?Answer:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生命周期。把生命周期划分成阶段的目的:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度;在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,使得软件开发的全过程以一种有条不紊的方式进行,这样,能保证软件的质量,特别是提高软件的可维护性。2、软件生命周期各阶段是如何划分的?试述各阶段的基本任务。Answer:软件生命周期分为软件系统的可行性研究、需求分析、概要设计
10、、详细设计、实现、组装测试、确认测试、使用、维护、退役十个阶段。各阶段的基本任务:可行性研究:分析软件项目的经济可行性、技术可行性、法律可行性、进行方案的选择和编写可行性研究报告。需求分析:确认待开发软件的功能需求、性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则和用户手册概要。概要设计:根据软件需求规格说明建立软件系统的总体结构和模块间的关系,定义各功能模块接口,设计全局数据库或数据结构,规定设计约束,制定组装测试计划。详细设计:建立“模块开发宗卷”:设计程序模块的内部细节,包括算法、数据结构和各程序模块之间的详细接口信息;拟定模块测试方案。实现:根据详细设计文档将详细设
11、计转化为程序,完成程序调试和程序单元测试。组装测试:将经过单元测试的模块逐步进行组装和测试。确认测试:测试系统是否达到了系统需求。3、什么是软件开发模型?常用的软件开发模型有哪些?Answer:软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。常用的软件开发模型有:以软件需求完全确定为前提的模型:瀑布模型渐进式开放模型:原型模型、螺旋模型形式化开发方法为基础的变换模型4、瀑布模型的特点是什么?快速原型模型与螺旋模型有何区别?Answer:瀑布模型的特点是:(1)规定了阶段之间自上而下、相互衔接的固定次序,上一阶段的成果作为下一阶段的
12、输入(2)每一个阶段完成之后,必须对阶段性成果进行评审,确认之后才可进入下一阶段。快速原型模型与螺旋模型的区别为:快速原型模型:快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。螺旋模型:螺旋模型 ,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中
13、。5、什么是CASE?试举几例你所使用的CASE工具并说明它们的作用和特点。Answer:CASE(Computer Aided Software Engineering)计算机辅助软件工程:在软件工程活动中,软件工程师和管理员按照软件工程的方法和原则,借助计算机及其软件工具的帮助,开发、维护、管理软件产品的过程。CASE工具:事物系统规划工具、项目管理工具、支撑工具、分析和设计工具、程序设计工具、测试工具、原型建造工具、维护工具、框架工具。6、可行性研究的内容有哪些?Answer:可行性研究的内容有:引言、要求和目标、现有系统、所建议的系统、可选择的其它系统方案、投资及效益分析、社会因素方面
14、的可行性、结论。7、用系统流程图描述一家网上银行中网上购物系统的物理模型,并编写此系统的可行性研究报告。Answer:顾客购买活动图:顾客购买活动图主要是描述系统元素的活动,用于展示参与行为的类的活动或动作。下图便是网上顾客购物过程的活动图,直观地反映顾客在网上购买商品活动的整个过程,具体见下图。 从活动图中可以看到,顾客首先访问网上购物网站,浏览网页。接着如果是新用户就登录注册界面,输入相关信息进行注册,立刻成为用户。老用户就直接登录界面。注册成为会员后,就能够享受到商场提供的各种方便的服务,可以利用商品查询的功能,快捷地查询到 自己需要购买的商品,为顾客实现不出门也能方便快捷地了解到自己需
15、要购买的商品的价格,生产日期,有何优惠等。找到自己需要购买的商品以后,就可以进行购物了。在需要购买的商品点击购买按扭,进入订货界面,进行订货。客户可以查询自己的订单,看看是否交易成功。成功后就进行付款 ,最后可以选择继续购买还是注销退出,实现网上购物整个活动过程。第3章 软件文档写作1、什么是文档?如何理解软件文档在软件开发中的桥梁作用?Answer:文档是指某种数据媒体和其中所记录的数据。在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。软件文档在产品的开发生产和使用、维护过程中起着重要的桥梁作用。(1)提高软件开发过程的能见度(2
16、)提高开发效率(3)作为开发人员在一定阶段的工作结果和结束标志(4)记录开发过程中的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解(5)便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需求的软件提供依据。2、对软件文档的质量要求有哪些?Answer:(1)针对性:文档编制以前应分清读者对象(2)精确性:文档的行文应当十分确切,不能出现多义性的描述(3)清晰性:文档编写应力求简明,如有可能,配以适当的图表,以增强其清晰性(4)完整性:任何一个文档都应当是完整的,独立的,它应自成体系(5)灵活性:不同软件项目的规模和复杂程度有着许多实际差别,不能一样看待3、软
17、件文档的编写一般分为哪几个步骤?Answer:任何一个文件的编写过程都可以分为四个步骤:准备工作、确定写作内容、编写定稿、更新完善。4、如何写好计算机软件文档?Answer:(1)做好准备:深入理解系统和用户、明确写作目的、确定文档的组织方式(2)讲究文风:语言简洁、读者观点、尊重习惯(3)注重表达:图表、符号、引例(4)加强文档编写使用的组织管理 软件文档编写过程管理:软件文档编写计划管理、软件文档编写进度管理、软件文档评审管理、软件文档维护管理 软件文档使用管理:软件文档归档、软件文档控制、软件文档发行管理(5)注意几个问题:文档的整体结构、文档的一致性、文档的可用性、文档的可维护性、文档
18、的及时性、文档的评审测试、文档的使用培训、文档编写自动化5、在文档的编写中如何使用引例?Answer:在使用引例时,应该重视以下几点:(1)引例使用要适当,要有重点,多则无法突出重点,少则不易讲明问题(2)引例要典型,即所使用的引例必须有代表性,必须为读者提供量的概念,最好能提供量的范围(3)引例准确,文档编写者应该清楚这样一点:读者对引例的研究要比对文字叙述的研究认真几倍(4)引例之间应相互补充6、软件文档编写过程中主要包括哪些内容?如何理解文档的一致性?Answer:软件文档编写过程管理主要包括:软件文档编写计划管理、软件文档编写进度管理、软件文档评审管理、软件文档维护管理。所编写的文档是
19、否一致,主要是指:(1)文档与系统是否一致(2)文档之间是否一致(3)文档局部与整体是否一致(4)文档所用图表、符号是否一致(5)文档所用约定是否一致(6)文档所用概念的内涵和外延是否一致第4章 需求分析基础1、什么是软件需求?如何理解软件需求分析的重要性?Answer:IEEE软件工程标准词汇表中的需求定义:(1)用户解决问题或达到目标所需的条件或能力(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力(3)一种反映上面两点所描述条件或能力的文档说明软件需求分析的重要性体现在:在软件开发过程中遇到的许多问题,都是由于收集、编写、协商、修改软件需求过程中的失误带来的
20、,诸如信息收集不全、功能不明确、交流不充分、文档不完善、需求发生变化等。开发软件系统最为困难的部分就是准确说明开发什么,最为困难的概念性工作便是编写详细的技术需求,包括所有面向用户、面向机器和其他软件系统的接口。软件需求一旦做错,将会给系统带来极大的损害,同时对以后的修改也带来很大的困难。2、软件需求分析是软件工程过程中交换意见最频繁的步骤。为什么交换意见的途径会经常阻塞?Answer:3、需求分析分为哪几个方面?Answer:(1)问题识别(2)分析和综合(3)编制需求分析阶段的文档(4)需求分析评审4、需求获取技术主要作了哪些工作?Answer:(1)建立获取用户需求的方法的框架(2)支持
21、和监控需求获取的过程的机制5、什么是多视点分析?如何理解抽象在软件开发中的作用?Answer:多视点分析就是从各个角度分别对问题进行理解和分析,然后综合成为全面理解。抽象在软件开发中的作用:抽象方法要求分析人员在分析过程中善于捕捉用户描述或问题本身所固有的一般-特殊关系,首先关注一般问题的解决途径,进而指导特殊问题的求解。同时,分析人员应该注意用户描述所处的不同抽象级别,这是从杂乱零散关系中建立清晰思路的重要方法。6、快速原型法如何支持软件需求分析?Answer:在软件开发中,原型是软件的一个早期可运行版本,它反映最终系统的部分重要特性。如果在获得一组基本需求说明后,通过快速分析构造出一个小型
22、的软件系统,满足用户的基本要求。使得用户可在试用原型系统的过程中得到亲身感受和启发,做出反应和评价。然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、评价和修改,获得新的原型版本。如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。7、需求管理的内容有哪些?怎样理解需求文档的版本控制?Answer:需求管理的内容包括:变更控制、版本控制、需求跟踪、需求状态跟踪。需求文档的版本控制:版本控制是管理需求的一个必要方面。需求文档的每一个版本必须被统一确定,组内每个成员必须能够得到需求的当前版本,必须清楚地将变更写成
23、文档,并及时通知到项目开发所涉及的人员。为了尽量减少困惑、冲突、误传,应仅允许指定的人来更新需求。8、简述软件需求规格说明书的主要方面。Answer:(1)引言:目的+背景+定义+参考资料(2)任务概述:目标+用户特点+假定和约束(3)需求规定:信息功能描述+性能描述+输入输出+数据管理能力+故障处理+其它(4)运行环境规定:硬件、软件+接口+协议9、在软件需求规格说明书的“信息和功能描述”方面为什么采用不同的表达方式?有何区别?Answer:面向数据流的需求分析:数据流图+数据词典+小说明面向对象的需求分析:类图+各个类的详细说明+状态图+交互图+文字说明第5章 面向数据流的分析1、数据流程
24、图的作用是什么?它有哪些基本成分?Answer:数据流图在需求分析及整个软件开发和维护中有着重要作用:(1)数据流图是需求分析的主要工具(2)数据流图作为软件开发和维护各阶段信息交流的工具,为分析、设计人员提供在各阶段设计、实施和维护的依据。(3)当使用数据流图辅助物理系统设计时,以图中不同加工逻辑的定时要求为指导。数据流图的基本图形元素有4种:加工、数据输入的源点和数据输出的汇点、数据流、数据存储文件。2、数据词典的作用是什么?它有哪些基本条目?Answer:数据词典精确、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有输入、输出、存储成分和中间计
25、算有共同的理解。在数据词典的每一个词条中应包括以下信息:(1) 名称:数据对象或控制项、数据存储或外部实体的名字(2) 别名或编号(3) 分类:数据对象、加工、数据流、数据文件、外部实体、控制项(事件/状态)(4) 描述:描述内容和数据结构等(5) 何处使用:使用该词条(数据或控制项)的加工第6章 面向对象的需求分析方法(上)1、什么是面向对象方法学?什么叫面向对象?面向对象方法的特点是什么?为什么要用面向对象方法开发软件?Answer:面向对象方法的基本思想是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。它更加强调运用人类在日常的逻辑思维中经常采用的
26、思想方法与原则,例如抽象、分类、继承、聚合、封装等,使开发者以现实世界中的事物为中心来思考和认识问题,并以人们易于理解的方式表达出来。面向对象的基本观点:(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成(2)具有相同数据和相同操作的对象可以归并成为一个类,对象是对象类的一个实例(3)类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性(4)对象之间通过消息传递相互联系。面向对象=对象+类+继承+通信(或消息)如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。使用面向对象方法开发软件的原因是面向对象方法与传统
27、的软件开发方法相比,具有许多显著的优点:(1)按照人类的自然思维方式,面向客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流;(2)在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡;(3)对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用;(4)在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,很容易定位和修改,系统的可维护性好。2、什么是“对象”?识别对象时将潜在对象分成7类,试给出这7类对象的名称,并举例说明。Answer:对象可以定义为系统中用来描述客
28、观事物的一个实体,它是构成系统的一个基本单元,由一组属性和一组对属性进行操作的服务组成。对象的分类:(1)外部实体:与软件系统交换信息的外部设备、相关子系统、操作员和用户等(2)信息结构:问题信息域中的概念实体,如信号、报表、显示信息等(3)需要记忆的事件:在系统运行过程中可能产生并需要系统记忆的事件,如单击鼠标左键(4)角色:与软件系统交互的人员所扮演的角色(5)组织机构:有关机构,如单位,小组等(6)位置:系统环境或问题上下文的场所、位置、如客户地址,收件人地址等(7)操作规程:如操作菜单,某种数据输入过程等3、什么是“类”?“类”与传统的数据类型有什么关系和区别?Answer:把具有相同
29、特征和行为的对象归在一起就形成了类。类常常可以看作是一个抽象数据类型(ADT)的实现,但更重要的是把类看作是表示某种概念的一个模型。4、面向对象开发方法与面向数据流的结构化开发方法有什么不同?使用面向对象开发方法的优点在什么地方?Answer:面向对象方法与传统的软件开发方法相比,具有许多显著的优点:(1)按照人类的思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流;(2)在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡;(3)对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用;(4)在面向对象的方法中,系统由对
30、象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,很容易定位和修改,系统的可维护性好。结构化方法分析过程如下: 1.总结出系统应有的功能,对一个功能,从功能完成的过程考虑,将各个过程(或说小的功能(难以再分解)列出,标识出过程转向和传递的数据。这样,可以将所有的过程都画出来。 2.细化数据流。确定应该记录的数据。 3.分析各过程之间的耦合关系,合理地进行模块划分以提高它们之间的内聚性。实际上,对于这个练习,可以使模块具有信息内聚性。 而面向对象方法分析过程如下: 1.总结出系统应有的功能,从功能完成的过程考虑,描述每个功能的完成过程。对应UML的USE
31、CASE和SEQUENCE。 2.开始寻找定义对象,并归纳各对象应记录的属性,对象的状态及转换关系在这里定义。这一步的对象和第一步画SEQUENCE所带入的对象有联系但更重要的是区别。 3.从功能完成的过程考虑,区分所需要的各个功能。再根据定义出的对象,将功能分配到对象上。由于第一步的关系,在这个练习中,这一步相对简单。 4.根据前3步的结果,如果需要的话,应该重新画SEQUENCE。特别是希望UML图对编程能更有帮助时。由于我只做了系统分析,没有编程,所以这一步没有做。 两种方法的异同: 1.总结系统应具备的功能的时候,都是根据题目的描述,一条一条总结归纳得到的。对结构化方法,就是画数据流图
32、。对面向对象方法,就是USECASE和SEQUENCE。实际上,在工作中使用时,一般还需要ACTIVITY图。 2.确定应该记录的数据。对结构化方法,就是细化数据流,并整理出一个一个的表。对面向对象方法,就是寻找和定义对象,并归纳各对象应记录的属性。一般O-R关系转换都是套用流行的方法,可能有些组织对此都有规定。 3.模块的组织。如果实在是要避免歧义的话,应该说成是“将数据和功能分配到不同的文件中,用文件来合理地组织代码”。对结构化方法,就是划分模块,每个模块应该包含哪些文件以及每个文件的内容。对面向对象方法,就是在已有对象的基础上,将功能分配到对象上。相比较结构化方法,面向对象在这里强制要求
33、:将数据和功能分配到不同的文件中时,是以数据为中心。事实上,使用结构化方法划分模块时,如果希望模块具有信息内聚性,那么,也是以数据为中心。“有信息内聚性的模块,本质上是抽象数据类型的实现”P89,软件工程JAVA语言实现。 4.接下来就应该是编程了。如果都使用JAVA的话,我很难想象出两种结果的代码能有多大的区别。 以上列出了两个例子,其意图在于说明某些情况下,我们进行系统分析时,当我们希望模块有信息内聚性时,结构化方法和面向对象的方法得到的过程和结果不会有很大差别。第6章 面向对象的需求分析方法(下)5、面向对象的程序设计语言具有数据抽象、信息隐蔽、信息继承等特征。作为运算单位的对象应具有下
34、列特性:对象把数据和处理数据的操作结合为一体、对象在计算中可向其它对象发送消息、对象的内部状态只根据外部送来的消息才操作。C+, Smalltalk, objectC是面向对象的语言。6、基于复用的面向对象的需求分析过程主要分为两个阶段:论域分析和应用分析。试讨论它们各自承担什么任务?如何衔接?Answer:论域分析是基于特定应用论域,标志、分析、定义可复用于应用论域内多个项目的公共需求的技术。它的目标是发现和创建一组应用广泛的类,这组类常常超出特定应用的范围,可以复用于其它系统的开发。它主要的过程活动:(1)定义要研究的论域:分析员首先隔离感兴趣的业务论域、系统类型或产品分类,再抽取OO项和
35、非OO项(2)分类从论域抽取的项:对所有的项进行归类并定义各个种类的一般定义特征(3)收集论域中各个应用的有代表性的样例:为了完成这个活动,必须保证在问题中的应用具有适合已定义的某些种类的项(4)分析样例中的每一个应用应用分析的依据是在论域分析时建立起来的论域分析模型,并把它用于当前正在建立的应用当中。7、面向对象的需求分析文档与面向数据流的需求分析文档有何区别?Answer:面向对象的需求分析文档内容如下:(1)改写:编写目的+读者对象+软件项目概述+文档概述+定义+参考资料(2)一般性描述:软件产品与其环境之间的关系+用户特征+限制与约束+假设与前提条件(3)功能需求描述:系统的类图+类的
36、详细描述(4)其他需求描述:性能要求+设计约束+界面要求+进度要求+交付要求+验收要求面向数据流的需求分析文档内容如下:(1)引言(2)任务概述:目标+条件与限制+运行环境(3)数据描述:静态数据+动态数据+数据库描述+数据词典+数据采集(4)功能需求:功能划分+功能描述(5)性能需求:数据精确度+适应性(6)运行需求:用户界面+报表格式(7)其他需求第7章 统一建模语言UML1、试述UML在静态和动态建模方面提供的支持,以及各框架的功能和应用场合。Answer:静态结构由类图和对象图描述,动态行为由状态图、时序图、协作图和活动图描述。类图:类图描述了系统的静态结构,表示系统中的类和类与类之间
37、的关系。对象图:描述了一组对象以及它们之间的关系,表示类的对象实例。状态图:表示一个状态机,强调对象行为的事件顺序。时序图:展示了几个对象之间的动态协作关系,它主要是用来显示对象之间发送消息的顺序,它还显示了对象之间的交互,即系统执行的某一特定时间点所发生的事。协作图:也展示对象之间的动态协作关系,除了说明信息的交互外,还显示对象及其间的关系(周境)。2、试述UML的特点和应用领域。Answer:UML的特点:(1)是一种语言(2)是一种可视化的建模语言(3)是一种可用于详细描述的语言(4)是一种构造语言(5)是一种文档化语言UML的应用领域:统一建模语言是一种直观化、明确化、构建和文档化软件
38、系统产物的通用可视化建模语言,从企业信息系统到基于web的分布式应用,甚至严格的实时嵌入式系统都适合于UML来建模。3、试述用例图的组成元素和元素之间的关系。Answer: 用例图的组成元素有角色和用例。角色代表外部用户或其他系统,用例代表系统能提供的功能。通过列举角色和用例,显示角色在每个用例中的参与情况。4、列举类之间的几种关系,并分别举例说明各自的表示方法。Answer:(1)关联:类之间的链接,即与该关联连接的类的对象之间的语义连接。(2)聚集:一种特殊的关联,它指出类间的“整体-部分”关系(3)泛化:指出类间的“一般-特殊关系”(4)依赖:两个模型元素之间的语义连接,独立元素的变化会
39、影响依赖元素(5)细化:对同一事物的不同抽象级别的两种描述之间的一种关系5、说明构件图在软件开发和维护过程中具有的意义。Answer: 构件图:描述组件以及它们之间的关系,表示系统的静态实现视图。6、试述应用顺序图和协作图进行动态交互行为建模的意义和方法。Answer:7、试述构件图和配置图对系统整体建模时侧重点的不同之处。Answer: 构件图描述构件及其之间的相互依赖。配置图描述了处理器、设备和软件构件运行时的体系结构。构件图侧重于静态结构,而配置图侧重于动态结构。8、试述顺序图和协作图在建模中的不同之处。Answer:时序图用来描述对象间的交互行为,它注重消息的顺序,即对象间消息的发送和
40、接收的顺序。时序图还揭示了一个特定场景的交互,即系统执行期间发生在某时间点的对象之间的特定交互,它适合于描述实时系统中的时间特性和时间约束。协作图着重于协作对象之间的交互和链接,它可用于系统中的操作执行、用例执行或一个简单的交互场景。协作图展示了对象及其间的链接,还展示了链接的对象之间如何发送消息。协作图和时序图都可以用来展示系统的交互,时序图强调时间和顺序,协作图强调对象之间的关系。9、活动图和状态图的区别有哪些?并举例说明。Answer:活动图是状态图的变形,它根据对象状态的变化捕获动作和它们的结果,它表示了各个动作及其间的关系。与状态图的区别:活动图中的动作状态之间的迁移不是靠时间触发的
41、,而是当动作状态中的活动完成时迁移就触发。在活动图中,事件只能附加到开始点到第一个动作之间的迁移。10、RUP是一个怎样的软件开发过程,它包含哪几个阶段?Answer:RUP(Rational Unified Process)开发过程:(1)初始阶段:主要确定项目的范围和目标,并进行可行性分析;(2)细化阶段:对开发项目的问题领域和功能作详细分析,画出用例图,建立系统的基础结构,还要进行风险分析,制定相应的对策和开发计划;(3)构造阶段:迭代渐增地建造系统的过程;(4)移交阶段。11、试述ROSE的主要功能和特点。Answer:ROSE的主要功能:支持UML建模过程中使用的多种模型和框图;不仅
42、能够对应用程序建模,而且能够方便地对数据库建模;可以创建比较对象模型和数据模型,并且进行两种模型间的相互转化;可以创建数据库各种对象,实现从数据库到数据模型的逆向工程;支持WEB应用,可以和RATIONAL的其它套件配合使用,贯穿于软件开发的整个过程。ROSE的特点:能够提供许多并非UML建模需要的辅助软件开发的功能;具有逆向转出工程代码的功能,根据现有的系统产生模型;利用ROSE自带的ROSESCRIPT脚本语言,可以对ROSE进行扩展,自动改变模型、创建报表、完成ROSE模型的其他任务等;ROSE提供的控制单元和模型集成功能允许进行多用户并行开发,并对他们的模型进行比较或合并等操作。12、
43、针对你所熟悉的某个系统,应用UML进行分析并使用ROSE画出它的系统用例图,类图,交互图(顺序图或协作图),并为其中复杂的业务流程建立活动图,针对某个类进行状态图的建模。Answer:13、针对一个高校学生选课系统利用ROSE和UML,按照软件需求说明书书写的国家标准写一份软件需求规格说明书。第8章 面向数据流的软件设计1、结构化设计的基本思想是什么?Answer: 自上而下,逐步分解,设计方法是把数据流图自上而下逐步映射成软件结构。2、什么是软件结构?常见的软件结构描述方式有哪些?Answer:软件结构:系统的构件以及这些构件打包的方式和相互交互的方式。常见软件结构描述方式:面向数据流、面向
44、对象等3、将DFD图映射为软件结构图有几种方法?Answer: 主要有两种方法:事务映射和变换映射。4、软件工程把设计过程分成两步:概要设计和详细设计。试述这两个阶段的主要任务,简述为什么大型系统的设计必须分两步走。Answer:概要设计:将软件需求转化为数据结构和软件的系统结构,并建立接口。详细设计:通过对数据表示进行细化,得到软件的详细的数据结构和算法。为什么分两步走:概要设计和详细设计是软件设计的两步,概要设计确定模块的划分,模块之间的调用关系,接口等;详细设计细分模块、数据结构等;大型系统中分两步走是必要的,概要设计确定模块划分后,详细设计可把各模块交给不同的人做详细设计,大型系统中这
45、样的分工是比较合理的,能提高效率,做到合理分工。5、影响模块独立性的因素是什么?Answer:所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其它模块的接口是简单的。影响模块独立性的因素有:模块间的耦合和模块的内聚。6、什么叫耦合?耦合有几种类型?哪种类型的耦合最好,哪种类型的耦合最不好?试为每种类型的内聚各举一个例子。Answer:耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。 耦合有七种类型:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。最好的是非直
46、接耦合,最不好的是内容耦合。6、什么叫内聚?内聚有几种类型?哪种类型的内聚最好,哪种类型的内聚最不好?试为每种类型的内聚各举一个例子。Answer:内聚是模块功能强度(一个模块内各元素彼此结合的紧密程度)的度量。内聚有七种类型:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、巧合内聚。最好的是功能内聚,最不好的是巧合内聚。8、什么叫模块的作用域和控制域?它们之间的关系对软件结构有什么影响?Answer: 模块的作用域是指模块内一个判定的作用范围,凡是受到这个判定影响的所有模块都属于这个判定的作用范围。模块的控制域包括它本身及其所有的从属模块; 作用域和控制域的关系对软件结构的影响:
47、模块的作用域应在控制域范围内,如果一个判定的作用域包含在这个判定所在模块的控制域之内,则这个结构是简单的,否则,它的结构是不简单的,软件结构应尽力追求简单。9、最好的扇出数是多少?扇出一般不超过几个?为什么要控制最大扇出数?Answer:最好的扇出数fan-out(3=fan-out=9),扇出一般不超过九个。 控制最大扇出数的原因:如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块,模块的设计应该尽可能做到简单。 10、应用面向数据流的设计方法完成银行储蓄系统的软件结构设计。Answer:11、应用面向数据流的设计方法完成你所在学校的教学管理相关系统的软件结构设计
48、。Answer:12、简述详细设计的主要任务。Answer:详细设计的主要任务:在使用程序设计语言编程以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达,使之成为编码的依据。13、常用的详细描述工具有哪些?各有什么优缺点?Answer: 详细设计描述工具有: (1)程序流程图优点:比较直观、清晰、易于学习掌握缺点:流程图使用的符号不够规范,常常使用一些习惯性用法,特别是表示程序控制流程的箭头可以不受任何约束,随意转移控制 (2)N-S图(盒图) 优点:符合结构化设计原则 缺点:当问题很复杂时,N-S图可能很大 (3)PAD(问题分析图) 优点:用二维树形结构的
49、图来表示程序的控制流,将其翻译成程序代码比较容易(4)判定表 优点:当算法中包含多重嵌套的条件选择时,能清晰地表达复杂的条件组合与应做动作之间的对应关系,能够简洁、无二义性地描述所有的处理规则(5)PDL(设计程序用语言) 优点:可以做到逐步求精:从比较概括和抽象的PDL程序起,逐步写出更详细、更精确的描述(6)HIPO图优点:此图形表达方法容易看懂,适用范围很广,不仅限于详细设计14、完成一个简单的学生选课系统的详细设计,分别用盒图和PAD图表达主要算法。Answer:15、概要设计说明书和详细设计说明书主要内容有哪些?什么情况下两者可以合二为一?Answer: 概要设计说明书主要内容: (
50、1)概要设计:需求规定+运行环境+基本设计概念和处理流程+结构+功能需求和程序的关系+人工处理过程+尚未解决问题 (2)接口设计:用户接口+外部接口+内部接口 (3)运行设计:运行模块组合+运行控制+运行时间 (4)系统数据结构设计:逻辑结构设计要点+物理结构设计要点+数据结构与程序的关系 (5)系统出错处理设计:出错信息+补救措施 (6)系统维护设计 详细设计说明书主要内容: (1)引言:编写目的+背景+定义+参考资料 (2)程序系统的结构 (3)程序1(标识符)设计说明:程序描述+功能+性能+输入项+输出项+算法+流程逻辑+接口+存储分配+注释设计+限制条件+测试计划+尚未解决问题 (4)
51、程序2设计说明如果一个软件系统比较简单,层次很少,两个文档就可以合二为一,文档合称为软件设计说明书。16、应用面向数据流的设计方法,完成一个简单的学生选课系统的软件设计说明书。Answer:第9章 面向对象的软件设计1、使用面向对象设计方法进行高层设计,以建立系统的体系结构。这样的结构有哪几种主要的组成部分?每一部分所承担的职责是什么?Answer:Smalltalk中使用的软件体系结构是模型/视图/控制器(MVC)。在这个结构中,有三种主要的组成成分:模型、视图、控制器。模型:软件中的应用论域的各种对象,它们的操作独立于用户界面;视图:管理用户界面的输出;控制器:处理软件的输入。系统的组成部
52、分有四个:(1)问题论域:考虑对时间与空间的折中、内存管理、开发人员的变更、类的调整;(2)用户界面:提供有效的人机交互所必须的实际显式和输入;(3)任务管理:当系统中有许多并发行为时,需要按照各个行为的协调和通信关系划分各种任务,以简化并发行为的设计和编码;(4)数据管理:提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。2、在类的设计中需要遵循的方针是什么?三个主要的设计准则,即抽象、信息隐藏和模块化如何才能做到?Answer:在类的设计中需要遵循的方针有:(1)信息隐蔽(2)消息限制(3)狭窄界面(4)强内聚(5)弱耦合(6)显式信息传递(7)派生类当作派生类
53、型(8)抽象类3、在类的通过复用的设计中,主要的继承关系有哪几种?试举例说明。Answer:特殊化处理三种可能的方式:(1)由既存类建立子类(2)建立继承层次由既存类建立新类(3)建立既存类的父类4、什么是对象模型?建立对象模型时主要使用哪些图形符号?Answer:对象模型:它的作用是描述系统的静态结构,包括构成系统的类和对象、它们的属性和操作以及它们之间的联系主要用到的图形符号有:关联、连接5、什么是动态模型?建立动态模型时主要使用哪些图形符号?Answer:动态模型:考察在任何时刻对象及其联系的改变,描述系统的这些涉及时序和改变的状况用到的图形符号有:状态图、事件追踪图6、什么是功能模型?
54、建立功能模型时主要使用哪些图形符号?Answer:功能模型:着重于系统内部数据的传送和处理,由多个数据流图构成,还包括了对象模型内部数据间的联系主要用到的图形符号:数据流图7、试用面向对象观点分析高校学生选课系统中有哪些类和对象?试建立学生选课系统的对象模型。Answer:8、用面向对象方法分析一个简单的储蓄系统,试建立它的对象模型、动态模型和功能模型。Answer:9、试用面向对象的方法,针对高校学生选课系统,基于UML编写其软件需求规格说明书和设计说明书。Answer:第10章 程序编码1、选择编程语言主要考虑哪些因素?Answer:选择编程语言的几条经验准则:(1)选择适合应用领域的语言
55、(2)系统用户的要求(3)可以使用的编译程序(4)可以得到的软件工具(5)软件可移植性要求(6)人的因素(7)工程规模2、软件的质量完全由设计的质量来决定,编码只是按照设计的伪码来翻译,所以编码与软件的质量没有关系。这种说法对吗?为什么?Answer:软件的质量首先取决于设计的质量。但并不是说,编码阶段就不能有所作为。恰好相反,程序员应该像优秀的翻译员一样在编码“翻译”中坚持简明清晰、高质量的原则,竭力避免过于繁杂晦涩。为此程序员不仅要养成良好的编码风格,而且要十分熟悉所使用的语言,以便能得心应手、恰到好处地运用语言的特点,为提高程序的清晰性和效率服务。3、试分析程序设计语言的特点与软件的可靠性、可理解性、可修改性、可测试性及成本的关系。Answer: 4、列出重要的编码风格指导原则,并按照你心目中的重要性来排列。Answer:软件编码要遵循以下原则:(1)遵循开发流程,在设计指导下进行代码编写;(2)以实现设计的功能和性能为目标,正确完成设计要求的功能,达到设计的性能;(3)程序具有良好的结构,提高程序的封装性,降低模块间的耦合程度;(4)程序可读性强,易于理解,方便调试和测试,可测试性好;(5)易于使用和维护;有良好的修改性、扩充性;可重用性强、移植性好;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论