赞
踩
学习通课后作业参考答案。仅供核对、复习使用,请先独立完成作业。
注意使用目录,或者Ctrl + F
搜索。
正确答案:
第1问:
抽象——业务、功能的抽象
分类——归纳、演绎
分解——复杂系统的分解
复用——提高分析、设计、开发效率
第2问:
是计算机系统中与硬件相互依存的另一部分。是包括程序、数据、文档、服务的完整集合——缺一不可。
答案解析:
正确答案见第1章课件的第14页,教材的1.1节
正确答案:
第一问答案:
软件危机是指在软件开发、维护过程中所存在的一系列严重、或致命的问题。目前,几乎所有软件都不同程度地存在这类问题。
第二问答案:
软件危机的主要典型表现与产生的原因有以下几方面:
对软件开发成本和进度的估计常常很不准确。拖期,项目管理经验欠缺。
软件不能符合用户的要求。用户对“已完成的”软件系统不满意的现象经常发生。模糊的需求、闭门造车、忙于编程,仓促上阵。
软件产品的质量往往靠不住。可靠性和质量保证欠缺,缺少测试。
软件常常是不可维护的。设计死板,没有整体考虑。
软件通常没有适当的文档资料。缺少设计资料、难以维护,写文档嫌麻烦。
软件成本在计算机系统总成本中所占的比例逐年上升。软件过于庞大,成本过高。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。跟不上计算机和软件技术的发展速度,技术落后。
开发者只专注于技术、风险意识薄弱。
第三问答案:
消除途径主要有:
理解软件的概念:软件是程序、数据及相关文档的完整集合。
应该推广使用在实践中总结出来的开发软件的成功的技术和方法
应该开发和使用更好的软件工具。
软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。
所以要解决软件危机中的问题,既要有技术措施(方法和工具),又要有必要的组织管理措施,必须用工程化的方法管理软件开发过程,用先进的软件开发技术进行软件开发,从管理和技术两方面保证软件开发的质量。
答案解析:
见第1章课件第22页、或教材的1.2节
正确答案:
第1问:回答以下任意一个均算正确:
① 软件工程是开发、运行、维护和修复软件的系统方法,是一门工程学科,即采用工程的概念、原理、技术和方法来开发和维护软件。
② 软件工程是把系统的、 有序的、 可量化的方法应用到软件的开发、 运营、和维护上的过程。
第二问答案:
通过本课程的学习,使学生系统地掌握软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在设备上能高效运行的软件,为今后从事软件开发、测试和维护工作打下坚实的基础。
答案解析:
见第1章课件1.3节、或教材的1.3节
正确答案:
软件复用:把复用的思想用于软件开发,称为软件复用。采用复用思想可简化软件开发过程,提高软件质量,并降低总的开发工作量与维护代价。
分而治之:俗语“分而治之、各个击破”,降低系统的复杂性
软件优化与折中:不断改进软件中的算法、数据结构和程序组织,实现整体质量的最优。
为了让软件跑的快起来,提高开发速度,提高软件质量必须对开发好的软件系统进行优化。
答案解析:
见第1章课件第38页、或教材1.4.2节
正确答案:
1、软件生命周期又称作软件生存周期、系统开发生命周期,是指从提出开发软件产品开始,直到软件报废为止的全过程。
2、主要包括软件定义、开发和运行三个阶段,每个阶段又可进—步划分成若干个子阶段。
3、划分方法:
定义阶段:是对软件进行一个初步的分析,确定软件要完成的总目标、制定软件开发计划、完成软件的可行性分析,并确切回答系统要解决的问题是什么?
开发阶段:设计和实现在前一个时期定义的软件,主要体现为系统设计(总体设计、详细设计)和系统实现。
运行阶段:测试校验、交付与维护阶段的主要任务是使开发出的软件持久地满足用户的需要,直到寿命终止。
通常,一个阶段的工作要在前一个阶段工作完成并审查通过之后,才能够开始进行。而这一阶段的工作也恰恰是为了能够延续并具体实现前一个阶段所提出的方案。
知识点: 第1章 软件工程学概论
答案解析:
见课件或教材的第1章第1.5节
正确答案:
常见的软件工程模型有:瀑布模型、快速原型模型、演化模型、螺旋模型、喷泉模型等。
瀑布模型:文档驱动。适合在软件需求比较明确、开发技术比较成熟、工程管理比较严格的场合下使用。
快速原型模型:原型驱动。用户时刻参与,便于交流,比较适合大型的、复杂的软件系统。
演化模型:分阶段迭代开发。演化模型的特点是通过逐步迭代弄清软件需求,而建立软件系统,在一定程度上减少了软件开发活动的盲目性。其适合场合为需求没有或者难以完整定义的软件,注意与原型模型之间的区别。
螺旋模型:风险+原型驱动。主要用于大型软件的开发。
喷泉模型:用例驱动、迭代开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
答案解析:
见课件或教材的1.6节
正确答案:
软件项目的问题定义内容包括:
1)问题的背景、开发系统的现状。弄清楚准备开发的软件使用背景,开发系统现处于什么状态,为什么要开发它。
2)开发的理由和条件、开发系统的问题要求。
3)总体要求、问题的性质、类型范围。
4)要实现的目标、功能规模、实现目标的方案。
5)开发的条件、环境要求等。
以上内容都写到问题定义报告(或称系统定义报告)中,以供可行性分析阶段使用。
答案解析:
见教材2.1节、或课件第4页
正确答案:
业务背景:
机票预订系统业务简单、比较容易实现。主要目的是向机场的服务器传递数据。当顾客在旅游局进行咨询时,终端向服务器发出查询请求,服务器根据航班信息库的实时数据,向终端发送数据,显示在终端的屏幕上。当顾客向售票员定票时,终端向服务器发出详尽的一份定单,服务器核对后,存入定票信息库,并修改机票信息库。当顾客再次来取票时,终端向服务器发出查询定票请求,服务器接收后,查询定票信息库,核对后,传送机票确认表单,终端打印出机票。
采用的关键技术:
本项目可利用现有的成熟的B/S、C/S原理,客户端的程序是建立在Windows系统上以第4代高级编程语言为开发软件的应用程序,服务器端采用 windows或Linux 为操作系统的工作站,是采用Oracle 8、MySQL等数据库系统的数据库服务程序。
决定可行性的主要因素:
成本/效益分析结果,效益 〉成本。
技术可行,现有技术可完全承担开发任务。
操作可行,软件能被原有工作人员快速接受。
可行性的要求:
主要功能:为游客提供机票预定服务,方便旅游局的售票工作,提高旅游局的服务质量和服务效率
性能要求:机场提供的信息必须及时的反映在旅游局的工作平台上。售票系统的定单必须无差错的存储在机场的主服务器上。对服务器上的数据必须进行及时正确的刷新。
输出要求:数据完整,详实。
输出要求:简捷,快速,实时。
安全与保密要求:服务器的管理员享有对机场航班信息库及机票信息库和定票信息库的管理与修改。售票员只享有对订票信息库的部分修改(写入与读出)。
完成期限:预计六个月。
目标可行性:
系统实现后,大大提高旅游局的机票预定服务效率。降低售票服务中的错误发生率,减少信息交流的烦琐过程及其带来的开销。
答案解析:
理解业务背景,系统采用的关键技术、可行性分析的几个方面,理解后即可回答出
正确答案:
软件系统的需求分为用户需求和系统需求两类。软件需求阶段的任务就是要将客户等提出的用户需求转换为系统需求。
用户需求是用自然语言加图的形式给出的、关于系统需要提供哪些服务以及系统操作受到哪些约束的声明。用户需求术语是来表达高层的概要需求,通常只描述系统的外部行为,而不涉及系统内部的特性。系统需求详细地给出系统将要提供的服务以及系统所受到的约束,对系统的需求文档的描述应该是精确的。它可能成为系统买方和软件开发者之间合同的重要内容。系统需求常常分为功能需求和非功能需求。
答案解析:
见教材或课件的2.3节
正确答案:
系统流程图的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。它表达了数据在系统各部件之间流动的情况,不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
主要区别是:系统流程图表达的是信息在系统中各个部件之间流动的情况;程序流程图表达的是对信息进行加工处理的控制过程。
答案解析:
见教材与课件的2.6节
正确答案:
从题意来看:
业务中有3个实体:班级(班号、班级名称、专业)、学生(学号、姓名、性别、所在班级)、教师(教工号、姓名、所在院系、联系方式);
有3个联系:
班级和学生之间是一对多(1:n)的组成联系
班级和教师之间是一对一(1:1)的管理联系
学生和教师之间是多对多(n:m)的教与学的联系。
根据上述分析,班级、学生和教师的实体-联系(E-R)图如下所示:
答案解析:
见教材或课件的2.8节、或数据库原理教材。重点是要理解实体与实体之间的业务关系,是一对一、一对多、还是多对多的关系?此环节非常重要,注意班级、学生、教师三个实体的属性必须给出来
(1)借书:根据读者的借书证查阅读书档案,若借书数目没有超过规定数目,可办理借阅手续(修改库存记录及读者档案),超过规定数目者不予借阅。对于第一次借阅者则直接办理借阅手续。
(2)还书:根据读者书中的条形码,修改库存记录及读者档案,若借阅时间超过规定期限就要罚款。
请对以上问题,画出分层数据流图。(25.0分)
正确答案:
第一种比较粗略的答案:
第0层:
第1层:
借书:
还书:
第二种比较具体的答案:
顶层:
第0层:
第1层:
借书处理:
还书处理:
答案解析:
仔细阅读题目,理解其业务处理流程及步骤,找出业务实体。根据数据流图DFD的四个组成部分,首先划出系统的顶层数据流图,然后再根据业务的处理过程再分别画出每个业务处理过程的数据流图DFD
正确答案:
①为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:
l 结构设计:确定程序由哪些模块组成,以及这些模块之间的关系;
l 过程设计:确定每个模块的处理过程。
其中,结构设计是总体设计阶段的任务,过程设计是详细设计阶段(通过对结构设计内容进行细化,得到软件的详细的数据结构和算法)的任务。
②总体设计的主要任务是:设计软件的结构——也即确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系(如何组成?如何调用?)。
答案解析:
见课件或课件的3.1节
正确答案:
①模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,既相对独立,又相互联系,把这些模块集成起来构成一个整体,可以完成软件系统所要求的功能。模块化是解决软件复杂问题的一种手段。对于一个复杂的大型软件系统,应该将它适当分解,即把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。
②模块设计准则:
改进软件结构提高模块独立性
模块规模应该适中
深度、宽度、扇出和扇入都应适当
模块的作用域应该在控制域之内
力争降低模块接口的复杂程度
设计单入口、单出口的模块
模块功能应该可以预测
软件包应满足设计约束和可移植性
答案解析:
见教材3.2节、或课件第47-56页
正确答案:
①模块的独立性一般采用耦合和内聚这两个定性的技术指标进行度量。
②耦合用来反映模块之间互相连接的紧密程度,模块之间的连接越紧密,联系越多,耦合性就越高——即模块之间的耦合性。
内聚用来反映模块内部各个元素彼此结合的紧密程度,一个模块内部各个元素之间结合越紧密,则它的内聚性就越高——即模块自身的内聚性。
因此,为了使模块具有较强的独立性,要求模块是高内聚、低耦合。
答案解析:
见教材第66页、或课件第30页和第46页
正确答案:
从细化后的DFD出发,映射数据流是建立软件结构的一个系统化的途径。具体表现为:
①需求分析阶段,信息流是一个关键考虑,通常用DFD描绘信息在系统中加工和流动的情况。
②任何软件系统都可以用DFD表示,所以映射数据流的方法可以设计任何软件的结构。
③把DFD中的信息流映射成软件结构时,信息流的类型决定了映射的方法——变换流和事务流。
答案解析:
见教材第3.4节、或课件第69页
1)读者可以查询图书信息以及查询借阅信息;
2)读者可以通过系统预约所需的图书;
3)图书馆工作人员利用该系统完成读者的借书、还书业务。其中还书时还可以进行续借和罚款等业务处理;
4)图书馆工作人员可以对图书信息、读者信息等进行维护;
5)对于到期的图书,系统会自动向读者发送催还信息;
6)管理员会定期进行读者管理、图书管理、系统备份等系统维护工作。
请根据上述功能需求描述,请利用“层次图”手工画出“图书管理系统”的软件总体功能结构图。(30.0分)
正确答案:
答案解析:
熟悉掌握第3章3.3节的内容
正确答案:
软件详细设计的目标是对目标系统做出精确的设计描述,其主要任务包括:
l 模块的程序算法设计。
l 模块内的数据结构设计。
l 模块接口设计。
l 模块测试用例设计。
l 编写详细设计说明书。
l 详细设计评审。
答案解析:
见教材第85页,或课件第2页
正确答案:
l 置用户操作于控制之下:不要强迫用户进入不必要的、或不希望的动作,并提供灵活的交互;允许用户交互,可以被中断和撤消。
l 减少用户的记忆负担:减少对短期记忆的要求;建立有意义的缺省值;定义直觉性的捷径;界面的视觉布局应该基于真实世界。
l 保持界面一致:允许用户将当前任务放入有意义的环境中;保持应用系统界面的一致性;如果用户已经习惯了某种交互模式,除非有不得已的理由,否则不要改变,以免导致混淆。
这些黄金规则实际构成了一系列用户界面设计原则的基础,这些原则可以指导软件设计的重要方面。
答案解析:
见教材4.2节,或课件第15页
正确答案:
表达过程规格说明的工具叫做详细设计工具,也称程序算法设计工具。它可以分为三类:图形工具(如程序流程图),表格工具(如判定表),语言工具(如PDL过程设计语言)。无论采用哪类工具,都需要对设计进行清晰、无歧义的描述,应表明控制流程、系统功能、数据结构等方面的细节,以便在系统实现阶段能根据详细设计的描述直接编程。
答案解析:
见教材4.3节、或课件4.3节
正确答案:
旅游价格优惠条件有2个:旅游旺季或旅游淡季,团体游客或散客都是游客。游客的区分条件是是否团体?价格有4个:不优惠、优惠5%、优惠20%、优惠30%。
判定表如下:
判定树如下:
答案解析:
理解业务,找出所有条件,参考教材4.3.2节所讲内容
正确答案:
①程序流程图:
②N-S图:
③PAD图:
④PDL伪码:
定义变量:i=7、S=0
DO WHILE i<=1000
IF i被7整除 THEN
S=S+i
输出:i
END IF
i=i+1
ENDDO
输出:S
⑤程序复杂度: V(G)=判定结点 + 1 = 2 + 1 = 3
答案解析:
理解业务,根据教材或课件的4.3节、4.5节答题。
正确答案:
程序内部的文档包括恰当的标识符、适当的注释和程序的视觉组织等等。
答案解析:
见教材或课件5.1节
正确答案:
第一问答案:
软件测试是为了寻找错误而运行程序的过程。软件测试应该是对软件开发过程中形成的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试。
第二问答案:
测试目的:设计一系列的测试方案,发现程序中的错误,是为了证明程序有错, 而不是证明程序无错。
基本任务:是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,评估是否能满足软件设计要求的过程。
答案解析:
见教材或课件5.2节
正确答案:
第一问答案:
黑盒法:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。只关心软件的功能是否正确。
第二问答案:
白盒法:也叫玻璃盒测试(Glass Box Testing)。对软件的过程性细节(内部逻辑)做细致的检查。这一方法是把测试对象 看作一个打开的盒子,它允许测试人员利用程序内部的逻辑 结构及有关信息,来设计或选择测试用例,对程序所有逻辑路径进行测试。
第三问答案:
白盒测试的主要方法有逻辑覆盖、基本路径测试等,主要用于软件验证。
黑盒法:等价类划分、边界值分析、错误推测法、状态测试法 等;注重测试软件的功能性需求,而不是内部逻辑结构。
第四问答案:
黑盒测试的主要内容还是功能部分,主要是覆盖全部的功能测试,可以结合兼容性测试、性能测试等方面进行,根据软件需求、设计文档、模拟客户场景随系统进行实际的测试。它具有适用于各阶段测试、从产品功能角度测试、容易入手生成测试数据等优点,同时它的缺点是某些代码得不到测试、如果规格说明有误,则无法发现错误、不易进行充分性测试等缺点。
白盒法测试是一种验证技术,它具有可以构成测试数据,使特定程序部分得到测试、有一定充分性度量手段、可获较多工具支持等优点,同时它的缺点是不易生成测试数据、无法对未实现规格说明的部分进行测试、工作量大,通常只用于单元测试等。
答案解析:
见教材或课件的5.7节、5.8节
main () { int num1=0, num2=0, score=100; int i; char str; scanf (“%d, %c\n”, &i, &str); while (i<5) { if (str='T') num1++; else if (str='F') { score=score-10; num2 ++; } i++; } printf (“num1=%d, num2=%d, score=%d\n”, num1, num2, score); }
(25.0分)
正确答案:
①流图:
② 程序环形复杂度V(G):
如上图所示有两个判定结点b、c、e,则:
V(G)=判定结点数 + 1 = 3 + 1 = 4
或:
如上图所示有4个由边和结点围起来的区域R1、R2、R3、R4,则:
V(G)=区域数 = 4
③独立路径:
根据上面环形复杂度的计算结果,源程序的基本路径集合中有3条独立路径,与其对应的一组独立路径是:
path 1:a→b→h
path 2:a→b→c→d→f→b→h
path 3:a→b→c→e→g→f→b→h
path 4:a→b→c→e→f→b→h
④测试用例设计:
**
注意:此答案只选择了i=4或大于等于5时的测试用例,只要能把四条路径全部执行的测试用例都算正确
答案解析:
参见教材或课件5.7节的实例
正确答案:
第一问答案:
测试用例是为了高效率地发现软件缺陷而精心设计并执行的少量测试数据。在实际测试中,由于无法达到穷举测试,所以要从大量输入数据中精选有代表性或特殊性的数据作为测试数据。不同的测试数据发现程序错误的能力差别很大,为了提高测试效率、降低测试成本,应该选用高效的测试数据。一个好的测试用例应该能发现尚未发现的软件缺陷。
从测试用例本身构成的角度来看,测试用例是测试执行的最小实体,是为特定的目的而设计的一组测试输入、执行条件和预期结果。
第二问答案:
测试人员根据软件的需求规格说明书设计测试用例,依靠被测程序输入和输出之间的关系或程序的功能设计,对程序功能和程序接口进行测试。黑盒测试是从用户角度出发进行的测试。黑盒测试主要试图发现以下几类错误:是否有不正确或遗漏了的功能、在接口上,输入能否正确地接受,能否输出正确的结果、是否有数据结构错误或外部信息(例如数据文件)访问错误、性能上是否能够满足要求、是否有初始化或终止性错误。
答案解析:
见教材或课件5.3.3节和5.8节
条件1:1≤month≤12
条件2:1≤day≤31
条件3:1912≤year≤2050
请使用等价类划分方法设计测试用例,填入下表中。
(15.0分)
正确答案:
题解:关于每个月份的天数问题,可以详细划分为以下等价类:
M1={month: month有30天}
M2={month: month有31天,除去12月}
M3={month: month是2月}
M4={month: month是12月}
D1={day: 1≤day≤27}
D2={day: day=28}
D3={day: day=29}
D4={day: day=30}
D5={day: day=31}
Y1={year: year是闰年}
Y2={year: year不是闰年}
测试用例设计:
答案解析:
参见教材或课件5.8.1节
试为它设计足够的测试用例,分别实现对程序的判定覆盖、条件覆盖和条件组合覆盖。(10.0分)
正确答案:
符合判定覆盖、条件覆盖和条件组合覆盖的测试用例设计如下表所示:
答案解析:
见5.7节,此题比较简单,具体原理见教材或课件
正确答案:
①调试是在测试发现错误之后排除错误的过程。
②软件测试的目的是尽可能多地发现软件中的缺陷,但这并不是最终目的,在进行了成功的测试之后必须进行调试工作。而调试的目的是确定错误的原因和位置,并进行程序修改、排除错误,因此调试也称为纠错。
③常用的调试技术有:试探法排错、回溯法排错、对分查找法排错、归纳法排错、演绎法排错
答案解析:
见教材或课件5.10节
正确答案:
粗略答案:因为软件是人编写的,每个人的能力有明显的区别,自然而然的存在一些缺陷或漏洞,因此对软件的维护是不可或缺的。
标准答案:为了纠正在开发阶段未发现的错误和缺陷,使软件适应新的计算机环境并满足变化的用户要求,对正在使用的软件进行修改是不可避免的。因此,如果希望软件系统能延长寿命,必须要对它进行维护。如果希望软件系统有效益,则必须设法降低维护的代价。
正确答案:
按软件维护的性质不同,可以把软件维护分为改正性维护、适应性维护、完善性维护、预防性维护四种类型。
正确答案:
(1) 难以跟踪软件版本的进化过程——软件的变化未在文档中反映出来;
(2) 难以读懂他人程序;
(3) 无文档或不全;
(4) 软件人员流动性大——难以形成全面的文档;
(5) 设计时未考虑将来修改的需要——盲目设计,设计呆板,修改困难;
(6) 维护工作无吸引力,缺乏成就感。
或:
软件维护困难的原因:许多软件因文档不全、设计质量差、开发过程不注意采用好的方法、忽视程序设计风格、编程语言选择的不恰当等软件配置的缺陷,导致维护工作十分困难。
正确答案:
文档是影响软件可维护性的决定性因素。所以维护期间的文档比程序代码更重要。
软件文档主要分为:用户文档和系统文档。其中用户文档包括:功能描述、安装文档、使用手册、参考手册、操作员指南;系统文档包括:可行性研究报告、项目开发计划、软件需求说明书、数据需求说明书、测试计划、概要设计说明书、详细设计说明书、测试分析报告、开发进度报告、项目开发总结、软件维护手册。
正确答案:
提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。
正确答案:
第1问:面向对象(object-oriented,OO):是一种具体的软件开发技术与策略;也是一整套关于如何看待软件系统与现实世界的关系,用什么观点来发现问题并进行求解,如何进行软件系统构造的软件方法学。
第2问:基本概念主要包括:对象+类+关系(依赖、关联、聚合、组合、实现、继承)+封装+消息通信+多态性等,可运用这些概念来构造软件系统。也可以将面向对象技术的基本概念总结为:类 + 对象 + 继承 + 用消息通信。
第3问:
封装性:如类的定义、或现实生活中的激光教鞭、电视机遥控器等
继承性:如学校的学生和大学生;股份公司的普通雇员和股东;再如:退休教师可以继承教师类或退休者类、医院的医护人员和医生、护士 等
多态性:各种图形的绘制、公司员工的工资计算 等等都可用多态来实现
正确答案:
第1问:统一过程是一个软件开发过程——是一个将用户需求转化为软件系统所需的活动的集合。
第2问:统一过程是基于构件的,所构造的软件系统是由软件构件通过明确定义的接口相互连接而建造起来的。统一过程使用统一建模语言(UML)来建立软件系统的所有模型。统一过程的突出特点(核心思想)是用例(use case)驱动、以构架为中心、迭代(iteration)和增量的。
正确答案:
统一过程是由一系列循环组成的系统生命周期,且每次循环都向用户提供一个产品版本或增量。其中:
1、每次循环过程都包括四个阶段:初始、细化、构造和移交,且每个阶段需要经过多次迭代。
2、每次循环结束都会产生系统的一个新版本,每个版本都是一个准备交付的产品,包括软件配置的所有内容。
正确答案:
第1问:UML主要由UML语义和UML表示法两部分构成。
第2问:UML1.X系列由5类9种图组成。主要包括系统结构和系统行为两大类。其中系统结构包括:静态图和实现图;系统行为包括:交互图、行为图和用例图,具体的9类图为:
1 | 1 | 1 |
---|---|---|
系统结构 | 1)静态图 | (1)类 图:类以及类之间的相互关系 |
(2)对象图:对象以及对象之间相互关系 | ||
2)实现图 | (1)构件图:构件及其相互依赖关系 | |
(2)部署图:构件在各节点上的系统部署 | ||
系统行为 | 3)交互图 | (1)顺序图:强调时间顺序的交互图 |
(2)通信图:强调对象间协作的交互图 | ||
4)行为图 | (1)状态机图:类所经历的各种状态变迁 | |
(2)活动图:对业务工作流建模 | ||
5)用例图 | (1)用例图:需求捕获,测试验证依据 此图是获取软件需求和验证软件正确性主要来源 |
1)静态图:
(1)类 图:类以及类之间的相互关系
(2)对象图:对象以及对象之间相互关系
2)实现图:
(1)构件图:构件及其相互依赖关系
(2)部署图:构件在各节点上的系统部署
3)交互图:
(1)顺序图:强调时间顺序的交互图
(2)通信图:强调对象间协作的交互图
4)行为图:
(1)状态机图:类所经历的各种状态变迁
(2)活动图:对业务工作流建模
5)用例图:
(1)用例图:需求捕获,测试验证依据——此图是获取软件需求和验证软件正确性主要来源
正确答案:
迭代:每次迭代都是一个能产生系统内部版本的袖珍项目——或多或少要经历所有的核心工作流,是一种使用和生产制品的人员之间的协作。每次迭代都经历需求、分析、设计、实现和测试五种核心工作流,而且都是从规划开始、以评估结束。每次迭代都要经历需求、分析、设计、实现和测试等5个核心工作流,但不同阶段的迭代侧重点不同。
增量:每个增量均是一次迭代的内部版本与下一次迭代的内部版本之间的差别
正确答案:
撰写报告时,要简洁明了,把为什么采用统一过程来开发软件的理由解释清楚,并体现RUP的核心思想:用例驱动、以构架为中心的迭代和增量开发。核心内容可从以下两个方面来阐述:
1)一个软件开发项目可以粗略地划分为两大块:初始和细化阶段与构造和移交阶段。在初始和细化阶段,建立业务案例,缓解最主要的风险,创建构架基线,并精确规划项目的其余部分。由一个较小的、低成本的开发组来完成这些任务。然后,项目进入到构造阶段,此时的目标是实现规模经济。此时,参与项目的人数有所增加,他们在细化阶段建立的构架基线上进行构造来开发大部分的系统功能,并尽量重用现有的软件。
2)统一过程是一个将用户需求转化为软件系统所需活动的集合,不只是一个简单的过程,而是一个通用的过程框架,可用于不同类型的软件系统、不同的应用领域、不同类型的组织、不同的功能级别以及不同的项目规模,其突出特点是用例驱动、以构架为中心、迭代和增量的。统一过程使用UML来建立软件系统的所有模型,UML是一个通用的标准建模语言,已经成为工业标准,可以对任何具有静态结构和动态行为的系统进行建模,适用于系统开发的不同阶段,从需求规格描述直到系统完成后的测试和维护。
正确答案:
用例被普遍采用的原因主要有:
1)为用户提供了捕获业务功能需求的系统方法。
2)可驱动整个开发过程(从用例捕获开始项目的开发过程),大部分开发活动如分析、设计和测试都是从用例开始执行的,而设计和测试则可根据用例的重要性(优先级)进行规划和协调——目的是实现重要的核心业务。
3)正确的用例捕获,可以反映用户的真实需求。
4)用例有助于设计构架。
5)用例可作为编写测试计划、用户手册的起点。
正确答案:
第一问答案:
业务模型是理解一个组织中业务过程的技术。业务模型(business model)对应用领域的业务过程进行描述,例如,银行的业务过程包括存款、贷款以及投资等。业务模型主要通过业务用例模型和业务对象模型来体现,业务模型提供对客户业务的整体了解。
第二问答案:
业务模型分两步来建立:
1、建立业务用例模型——业务对外所提供的价值
1)识别业务参与者,找出业务活动的服务对象;
2)识别业务用例,业务活动的操作序列;
3)详述业务用例,建立文档与UML模型;
2、建立业务对象模型——业务内部的实现机制
1)识别工作人员,承担一系列职责的人;
2)识别业务实体,业务内部所访问和操纵的事物;
3)实现工作单元,从实现角度来展示业务用例如何得到满足,表现为工作人员与业务实体之间的交互过程。
正确答案:
描述用例可利用用例模型图和用例规约文档来进行描述,用例模型图是由业务系统中的业务用例建立的用例图,而用例规约文档主要包含如下内容:
1)用例名称:动词短语(动宾结构),描述用例目的的简短动词短语。
2)描述:介绍用例目的,强调用例为参与者提供的价值。
3)前置条件:描述在哪些用例成功执行之后,该用例才会被触发,并描述其中的依赖关系。
4)部署约束:描述如何使用该系统来完成用例。
5)正常事件流:交互动作的有序序列,描述所有的系统输入以及系统响应,组成了该用例的正常流程:该正常事件流表明事件按计划进行时的交互动作,揭示了用例的目的。
6)可选事件流:交互动作的有序序列,描述组成该用例的一个可选流程的所有系统输入及其响应。
7)异常或错误事件流:交互动作的有序序列,描述组成该用例的一个异常流程的所有系统输入及其响应。
8)活动图:在图中显示事件流的所有流程,能够完整地描述事件流,为度量用例的复杂度提供方法。
9)非功能性需求:用一两个简短的段落来介绍用例成功执行的判断准则,该准则不适合在事件流中描述。
10)说明(可选):确定不符合上面类别的其他事务,其中可能包括对系统功能的限制。
11)未解决的问题(可选):需要进一步询问相关人员的问题列表。
正确答案:
第1问答案:
用例关系主要有:泛化、扩展、包含
第2问答案:
泛化:在确定并概括每个用例的动作时,还应该确定公用的或共享的动作。要想减少冗余,可以将共享的部分提取出来放到单独用例中进行描述,以便重用,可以用泛化表示这种重用关系。
扩展:在原用例的基础上,对原用例进行功能补充,表现为“补充的用例说明”,主要体现为确定扩展的功能;
包含:对原用例提供明显的、无条件的扩展——注意:离开被包含的用例,原用例就不能构成一个完整的用例——即提取公共用例,以便实现多个用例的复用。
(20.0分)
正确答案:
修改后的活动图如下:
正确答案:
(10.0分)
正确答案:
系统的参与者有3个:Bank network、Manager、Clerk。因Customer与用例没有交互,故不是;
系统的用例有5个:Authorize purchase、Open store、Log onto redister、Sell goods、Restock inventory
正确答案:
分析模型由代表该模型顶层包的分析系统组成;使用分析包将分析模型组织为更易于管理的若干部分,这些部分代表了对子系统或某一层系统的抽象;分析类代表了对系统设计中的类或子系统的抽象;在分析模型中,用例是通过分析类及其对象实现的,由分析模型中的各种协作来表示,标记为用例实现—分析。具体组成如下图所示:
正确答案:
第1问答案:
实体类(entity class)用来对持久信息进行建模。
边界类(boundary class)用来对软件产品和参与者之间的交互进行建模。
控制类(control class)用来对复杂的计算和算法进行建模。在银行软件产品中,计算利息的算法就是一个控制类。
第2问答案:
以下两种都算正确。
或:
或<>、<>、<>
正确答案:
第1问答案:
每个用例都要根据其风险、对用户和构架的重要性、对团队是否有能力开发等方面划分等级。一旦用例按这些类别来分类,就可以确定哪个用例的子集是最重要的,并适合在第一个迭代中实现。该过程包括一系列权衡和妥协的综合考虑。例如,一个用例的风险可能很高,就想在第一次选代中实现它,但是,如果开发团队对实现该用例完全没有把握,那么,作为妥协,就应该选择一个风险较低、容易实现的用例。
第2问答案:
通常,可以将用例的风险、重要性、适用性分成1~5个数字表示的等级。级别越高,该用例就越适合在第一次或者下一次选代中实现。
正确答案:
若出现循环依赖则使得任何一个包都不能独立的重用,修改任何一个包都会引起所有包的变化。
正确答案:
正确答案:
正确答案:
根据上题画出的包图根据下述业务来细化包图。
具体描述:在客户咨询管理中嵌套三个子包,分别是咨询,投诉,报修;派工管理中嵌套两个子包,维护安排和回访安排。请手工画出细化后的包图。
正确答案:
正确答案:
正确答案:
正确答案:
构架(Architecture)是一个系统的组织结构,包括:系统分解的各个组成部分、各部分相互之间的连接性、交互机制、以及指导系统设计的相关规则。
或者更详细地说明为以下四个内容:
1)软件系统的组织。
2)构成系统的结构元素和各元素之间的接口,以及由元素间协作所规定的各元素的行为。
3)结构元素和行为元素合成为逐渐增大的子系统。
4)指导组织的构架风格:元素及其接口、协作和组合。
构架可以描述为多种模型视图:用例模型视图、分析模型视图、设计模型视图等。
正确答案:
需要构架的原因主要有以下四个:理解系统、组织开发、鼓励重用、演化系统。
具体描述为:
1)理解系统的构成及关系
2)便于组织开发,协调分工
3)为提高质量和开发效率鼓励重用
4)进一步演化系统,适应新的变更,并通过接口与外部系统进行交互。
正确答案:
用例驱动构架的开发,构架指导用例的实现。
可进一步说明为:构架受到已有用例的影响,即用例驱动构架;将需求捕获为用例时,可利用构架知识来更好地完成任务,即构架指导用例——用例和构架相互制约,可由多次迭代来完成。
正确答案:
建立坚实、可靠的构架需要经过确定目标、将类分组、展示技术、抽取子系统、应用原则和目标对构架进行评估等5个步骤。
更详细的答案:
建立坚实、可靠的构架需要完成如下5个步骤:
1)确立目标——可扩展性、可维护性、可靠性和可伸缩性等
2)将类分组——从职责相似的(与功能相关的)角度,对类进行分组,并利用分包原则
3)展示技术——每使用一项技术(如,包、子系统、接口)都必须将其添加到包依赖关系图中——即构架包图
4)抽取子系统——利用打包机制,通过寻找有清晰定义的接口,与系统的其他部分松散耦合的包来确定候选子系统
5)应用准则和目标对构架进行评估——结合系统开发目标,利用UML建模工具,以OO设计原则和模式、高内聚和低耦合的原则定期地对构架进行评估。
正确答案:
构架描述是建立系统各种模型的视图,即用例、分析、设计、实施(部署)和实现等5个模型的视图——如,RUP中采用的“4+1”视图。构架描述中不包括测试模型视图——因它对描述构架不起作用,只是用来验证软件的构架基线。
或:
构架描述是系统各种模型的视图,即是用例、分析、设计、实施和实现模型的视图。构架描述叙述了系统的组成部分,有利于所有开发人员和其他项目相关人员理解系统。
正确答案:
正确答案:
正确答案:
正确答案:
面向对象(OO)的设计(即OOD)是对系统对象的详细描述,这些对象通过相互协作(静态结构、动态行为)来满足系统需求。设计所描述的仍然是解决方案,只不过在更细的层面上,描述了实例变量、方法参数、返回类型以及各种技术的细节。
正确答案:
设计工作集中在细化阶段的末期到构造阶段的初期,将产生合理且稳定的构架,并创建实现模型的蓝图。
设计模型非常接近实际的系统,在整个软件生命周期里很自然地要保持并维护好设计模型,尤其在双向工程中,设计模型可以用来可视化地刻画系统实现并支持图形化编程技术。
正确答案:
设计模式是对软件设计中普遍出现的一类问题的解决方案,这种解决方案定义明确、文档充分,经历时间考验。
设计模式在两个方面帮助开发人员设计出更好的软件。
1)设计模式为协作和文档提供了公用语言
2)设计模式深化了面向对象的理论
正确答案:
下面的步骤就是设计过程。
1)建立整个设计目标
2)建立设计准则
3)找出独立的设计任务
正确答案:
每个设计方面的工作都必须遵守下面的步骤:
1)确立工作目标和优先级。虽然整个系统的设计目标已经确定,但不是每个设计工作都会影响到目标。每项设计工作都必须确定要达到的目标和优先级,以及它无法实现的任务。从涉及到的技术和包或子系统的目标来看,问题就比较清晰。例如,TimeCardDomain包和TimeCardWorkflow包的设计工作无疑对性能有极大的作用,因为它们控制着持久存储和数据流;而HTMLProduction框架以及TimeCardUI包的设计工作对系统的可扩展性有极大的影响,因为用户界面在需求变更面前是非常脆弱的,极易受到需求变更的影响。
2)对前一步工作进行评审。前面的步骤产生了分析模型,选择了技术,而且建立了考勤系统的结构约束。每部分的设计工作都必须经过评审,然后以此为基础,遵循各种约束进行设计。分析模型从开发人员的角度对问题进行了描述,是设计包和子系统时最好的资源。在许多情况下,类或包的职责能够直接从分析类的职责演化出来。
3)针对目标进行设计。在某些情况下,高层设计方案几乎完全由所采用的技术决定,例如,采用EJB进行开发将决定设计方案中很大的一部分。要想实现每个用例的目标,必须做出一系列决定,实际上在各种限制条件下,开发人员无需也没有机会做出大量决定,在某些情况下,完全由开发人员来设计包或子系统,以最终实现系统目标。对这种需要高度创造性和反复迭代的设计工作,设计模式绝对是一个非常有价值的技术。
4)将设计应用于用例。将高层设计应用到用例上,不但能够验证设计方案,而且会改进设计。在这个过程中,逐步将前一步建立起来的高层设计方案应用到各个用例上,直到充实整个设计方案的细节,而且满足所有可应用的用例,或证明是失败的。
正确答案:
在开始设计之前,必须要给出对应于前面定义的目标的具体例子以及非常明确的标准,清晰的、可量化的目标能够驱动设计并提供一个有价值的度量标准。定义得模模糊糊的目标不仅不能为设计提供一个正确的方向,还会挫败开发人员的积极性。
一旦定义好了具体的目标,下一步就是要进行高层设计。要想同时满足所有的目标通常很难做到,因此,可以分步设计,一次只瞄准一个目标,然后定期检查以确保没有出现偏差。
业务描述:某公司销售多种物品,每个物品包含了0到多个物品特征,1到多个物品对应于1个货物类别,0到多个货物类别对应于0到多个类别特征,且每个物品特征属于每个类别特征;物品存放到0到多个仓库中,且每个物品和仓库之间都有库存;客户可以同时下订单,每个订单包含0到多个订单项,且每个订单项对应一个物品。(20.0分)
正确答案:
顾客(User)先向自动售货机的前端(Front)投币;售货机的识别器(Recognizer)识别钱币;售货机前端(Front)根据识别器(Recognizer)返回的识别结果产生商品列表;顾客通过前端(Front)选择商品;前端(Front)向识别器(Recognizer)发出选择商品操作;识别器(Recognizer)通知出货器(Dispenser)将所选商品进行出货,并反馈给顾客。请在给定的参与者和匿名对象的基础上补充业务中所有对象按时间先后顺序的交互操作步骤,并标注操作的消息编号,注意控制焦点也要标出来。(20.0分)
正确答案:
正确答案:
在编码实现阶段,开发者根据设计模型中对数据结构、算法分析和模块实现等方面的设计要求,编写具体的程序,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。
正确答案:
构架实现的目的是通过如下途径勾画实现模型及其构架:
l 识别对构架有重要意义的构件,例如可执行构件。
l 在相关的网络配置中将构件映射到节点上。
在构架设计过程中,要勾画设计子系统及其内容和接口。在实现过程中,使用与设计子系统一一对应的实现子系统,并提供相同的接口。因此,对实现子系统及其接口的识别就显得价值不大,在此就不作讨论。相反,在实现阶段,主要的任务是在实现子系统范围内创建实现相应的设计子系统的构件。
在该活动中,构架设计师维护、精化并更新构架描述以及实现模型和实施模型的构架视图。
正确答案:
实现子系统的目的是确保一个子系统履行它在每个构造中的角色,这意味着要保证在构造中要实现的需求(如场景或用例)以及那些影响子系统的需求能通过子系统内部的构件和其他子系统正确地加以实现。
当子系统内部的构件和其他子系统正确地实现了当前构造中要实现的需求以及那些影响子系统的需求时,一个子系统就实现了其目标。
即使子系统的内容(例如构件)是由构架设计师勾画的,随着实现模型的进一步完善,仍然需要由构件工程师来精化。
正确答案:
实现类的目的是为了在文件构件中实现设计类,包含下列任务。
l 勾画出包含源代码的文件构件。
l 从设计类及其所参与的关系中生成源代码。
l 按照方法实现设计类的操作。
l 确保构件提供与设计类相同的接口。
正确答案:
正确答案:
管理者预先确定一个给定代码制品在开发期间所允许的最大错误数,一旦达到该值,就必须丢弃,然后由有经验的软件设计人员重新设计和编写。最大值会随着应用领域的不同而不同,还会随着代码制品的不同而不同。确定允许的最大错误数可以参考某个类似的已得到纠错性维护的代码制品的错误情况。但是,不管采用什么估计技术,一旦超出预定的错误数,管理者必须保证放弃该代码制品。
正确答案:
使用一致和有意义的变量名
自文档化代码的问题
使用参数
代码编排以增加可读性
嵌套if语句
编码标准
正确答案:
根据个人的理解来回答,没有标准答案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。