软件工程分析设计题_第1页
软件工程分析设计题_第2页
软件工程分析设计题_第3页
软件工程分析设计题_第4页
软件工程分析设计题_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.请给出以下问题描述的用例模型。一个新的音像商店准备采用计算机系统向比较广泛的人群销售或租借录像带和光碟。该音像商店将存有大约1000盘录像带和500张光碟,这些订购涉及多家订购商。所有的录像带和光碟都有一个条码,可以使用条码扫描仪来支持销售和返还,客户会员卡也同时条码化。客户可以预定录像带并在指定日期来取。系统必须拥有灵活的搜索机制来回答客户的询问,包括关于该音像商店还没有进货的电影(但可能是已经请求订购了)。2. 请指出下面需求描述存在的问题,并进行适当的修改。 (1) 系统用户界面友好。(2) 系统运行时应该占用尽量少的内存空间。(3) 即使在系统崩溃的情况下,用户数据也不能受到破坏。

2、(4) ATM系统允许用户查询自己银行帐户的现存余额。(5) ATM系统应该快速响应用户的请求。(6) ATM系统需要检验用户存取的合法性。(7) 所有命令的响应时间小于1秒;BUILD命令的响应时间小于5秒。(8) 软件应该用JAVA语言实现。答案要点:(1) 问题:“友好”是不可验证的。改正:具有一年计算机使用经验的用户经过3小时的培训就可以学会使用该系统。(2) 问题:“尽量少”存在歧义。改正:系统运行时所占用的最大内存空间是256MB。(3) 问题:“不能受到破坏”是不可验证的。改正:如果系统发生崩溃,那么该系统重新正常启动后,可以将用户数据恢复到最后未完成操作执行前的状态。(4) 该

3、描述是正确的。(5) 问题:“快速”是不可验证的。改正:ATM系统将在1秒钟之内响应用户的请求。(6) 问题:“如何验证合法性”是存在歧义的。改正:ATM系统将通过用户名和口令验证其存取的合法性。(7) 问题:所有命令中必然会包括BUILD命令,因此这两个需求描述是矛盾的。改正:去掉关于BUILD命令的需求描述。(8) 问题:该描述不是功能需求或非功能需求,应该是对设计实现的一个约束条件。3.假设你是一个软件项目的负责人,该项目要求开发一个安全性要求极高的医疗控制系统,用于控制医院病人的放射性治疗。该系统是嵌入式系统,内存限定在 16MB,程序规模估计是10KLOC,病人的放射治疗信息将记录到

4、数据库中。(1) 请使用简单 COCOMO 模型估算系统开发的工作量。(2) 请考虑产品、计算机、人员和项目等影响因素,使用中间 COCOMO 模型估算系统开发的工作量,并说明考虑这些因素的理由及其取值。参考答案:(1)由简单 COCOMO 模型公式计算:工作量E 3.6 ×(10)1.20 57.06(人月)开发时间D2.5 ×(57.06)0.32 9.12(月)(2):工作量修正因子F 1.90 工作量E 2.8 ×(10)1.20 × 1.90 2.8 × 15.85 × 1.90 84(人月)开发时间D 2.5 ×

5、(84)0.32 2.5 × 4.13 10.32(月)4.现在要对一个自动饮料售货机软件进行黑盒测试,该软件的规格说明如下:一个自动售货机软件可以销售单价1元5角的盒装饮料。该售货机只接收1元和5角两种硬币,若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,则送出相应的饮料;若投入的硬币少于1元5角,则显示错误信息并退出硬币;若投入的硬币多于1元5角,则送出饮料的同时退还多余的硬币。请设计测试该软件的全部测试用例。5.某诊所需要开发一个软件系统来管理预约,具体要求如下:当病人打电话预约时,接待员将查询日历并安排病人尽早得到诊治。如果病人同意计划的约定时间,该接待员将输入约定

6、时间和病人姓名,系统将核实病人姓名并提供病人已有的记录数据。在每次检查和治疗之后,医生将标记相应的预约已经完成并添加治疗说明,如果必要的话还会安排病人下一次再来。诊所人员可以使用系统按照病人姓名和预约日期进行查询,查询结果显示病人的记录数据和预约信息。接待员可以取消预约,并打印出已经预约但不能接诊的通知清单。另外,接待员还可以打印出关于所有病人的每周预约安排。请使用功能点技术估算该软件的规模,并说明每个信息域特征的估计理由。答案:(1) 外部输入:病人信息(简单)、预约信息(中等)治疗说明(简单)、取消预约(中等)(2) 外部输出:治疗记录(简单)、预约信息(中等)通知清单(中等)、每周预约安

7、排(复杂)(3) 外部查询:查看日历(中等)、查看病人数据(简单)查看预约(中等)、查看治疗记录(简单)(4) 内部文件:病人信息(简单)、预约信息(中等)治疗记录(简单)(5) 外部接口:无6.请考虑下图的对象模型,运用你对Gregorian日历的知识,指出该模型存在的所有问题,并给出修改后的正确模型。参考答案: “星期”之间不是聚合关系“月”与其他关系之间的多重性不正确修改结果:7.请考虑下图表示的系与教师之间关系的类图:1) 类图中显示了哪些关系?2) 一个教师可以同时在多个系工作吗?请说明理由。参考答案:(1) 类图显示了两个关系: “学校”与“系”之间的一对多关联;“系”与“教师”之

8、间的多对多关联(2) 一个教师可以同时在多个系工作,因为它们之间是多对多关联。8.请分析比较下面两个for循环的优缺点。第一个for循环:for (i = 0; i < N; i+) if (condition) DoSomething(); else DoOtherthing(); 第二个for循环:if (condition) for (i = 0; i < N; i+) DoSomething(); else for (i = 0; i < N; i+) DoOtherthing(); 参考答案:第一个for循环的代码简练且结构清晰,但效率较低;第二个for循环的执行效

9、率较高,但结构不够紧凑。9.下面三个程序运行时分别会产生什么结果?为什么?程序1:void GetMemory(char *p, int num) p = (char *)malloc(sizeof(char), num); return; int main() char *str = NULL; GetMemory(str,100); strcpy(str, “Hello World.”); printf(str); return 0; 程序2:void GetMemory(char *p, int num) p = (char *)malloc(sizeof(char), num); re

10、turn; int main() char *str = NULL; GetMemory(&str, 100); strcpy(str, “Hello World.”); printf(str); return 0; 程序3: int main() char *str = (char *)malloc(100); strcpy(str, “Hello ”); free(str); if (str != NULL) strcpy(str, “World.”); printf(str); return 0; 参考答案:程序1:系统运行崩溃。原因:GetMemory(str,100)并没有将申请到的内存传回到调用程序,str一直是NULL,从而导致非法内存访问,使程序崩溃。程序2:显示“Hello World.”,但将产生内存泄漏。原因:GetMemory(&str,100)申请到的内存没有被释放。程序3:显示“Hello World.”但有时系统运行异常。原因: 在free(str)释放内存空间后,str仍然指向原来空间地址,成为“野指针”。如果这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论