第一题: 面向对象设计应该遵循哪些准则? 简述每条准则的内容,并说明遵循这条准则的必要性。

答:

面向对象设计准则:

1、模块化;把程序整体划分成一个个独立命名且可独立访问的完成单个子功能的模块。采用模块化,软件结构清晰,不仅容易设计也容易阅读和理解,有利于软件开发工程的组织管理

2、抽象:抽出事物的本质特性,暂不考虑其细节,使设计从具体实现方法中超脱。包括程序抽象、数据抽象、参数抽象。

3、信息隐藏:对象封装。有利于测试期间和以后的软件维护期间进行软件的修改。

4、弱耦合:包括交互耦合、继承耦合。

5、强内聚:包括服务内聚、类内聚、一般-特殊内聚。

6、可重用:是提高软件开发生产率和目标系统质量的重要途径。

第二题: 下面叙述对一个计算机辅助设计(CAD)软件的需求:该CAD软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与CAD系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。几何图形数据及其他支持信息都保存在一个CAD数据库中。开发必要的分析、设计模块,以产生所需要的设计结果,这些输出将显示在各种不同的图形设备上。应该适当地设计软件,以便与外部设备交互并控制它们。所用的外部设备包括鼠标、数字化扫描仪和激光打印机。进一步精化上述要求,把CAD软件的功能分解成若干个子功能于下表.;为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3 个值:乐观值(即最小规模a),悲观值(即最大规模b)和可能值(即最可能规模m)。分别算出这3种规模的平均值,然后用下式的加权平均法计算每个子功能规模,结果示于下表.

代码行技术的估算表

未调整的功能点数表 

复杂性因素表

要求:

(1)根据以上未调整的功能点数表和复杂性因素表,用功能点技术估算每个子功能的规模;

(2)从历史数据得知,开发这类系统的平均生产率是620LOC/PM,如果软件工程师的平均月工资是8000元,请估算开发本系统的工作量和成本。

(3)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系统的工作量和成本。

答:

(1)技术复杂性因子:

TCF = 0.65+0.01×DI = 1.14

最后计算功能点数:

FP  =UFP × TCP

=31  × 1.14

=363

PS: DI在“复杂性因素表”中已经给出数值了;以及,UFP在“未调整的功能点数表”中也给出数值了。

(2) 用代码行估算,开发本系统的工作量为

E=33200/620 ≈ 54PM

成本为:8000×54=432000(元)

(3) 用功能点技术估算,开发本系统的工作量为

E=363/6.5 ≈56 PM

成本为: 8000×56=448000(元)

第三题: 面向对象程序设计语言主要有哪些技术特点?

答:面向对象程序设计语言的技术特点主要有:封装、多态、继承。

其中,多态有分为重载和重写。

另外,面向对象的编程思想更加接近现实度的事物,有这样几点好处:

1.是编知程更加容易.因为面向对象更接近于现实.所以你可以从现实的东西出发.进行道适当的抽象.

2.在软件工程上.面向对象可以使工程更加回模块化.实现更低的耦合和更高的内聚.

3.在设计模式上.面向对象可以更答好的实现开-闭原则.也使代码更易阅读.

第四题: CMM 的基本思想是什么 ? 为什么要把能力成熟度划分成 5 个等级

答:

1、CMM的基本思想:鉴于问题往往由管理软件过程的方法不当所引起,因此软件技术的运用并不会自动提高软件的生产率和质量,提高软件生产率和软件质量的关键,是改进对软件过程的管理。

2、能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。对软件过程的改进不可能一蹴而就,只能是在完成一个又一个小的改进步骤基础上不断进行的渐进过程。因此,CMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。这5个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机构识别出其现有的软件过程的缺陷,指出应该做哪些改进,并且帮助他们把应做的改进工作排出优先次序。

第五题: 什么是基线?为什么要建立基线

答:

1、基线:已通过正式复审的规格说明或中间产品,可作为进一步开发的基础,且只有通过正式的变化控制过程才能改变它。

2、建立基线的三大原因是:重现性、可追踪性和报告。

其中,

①重现性是指及时返回并重新生成软件系统给定发布版的能力,或者是在项目中的早些时候重新生成开发环境的能力。

②可追踪性建立项目工件之间的前后继承关系。其目的在于确保设计满足要求、代码实施设计以及用正确代码编译可执行文件。

③报告来源于一个基线内容同另一个基线内容的比较。基线比较有助于调试并生成发布说明。

第六题:对象和属性之间有何区别 ?

答:对象是对客观世界实体的抽象,它是描述实体静态属性的数据和代表实体动态行为的操作结合在一起所构成的统一体。属性只不过是对象的一种特性,它是组成对象的一种成分。

第七题:为什么应该尽量使用面向对象语言来实现面向对象分析和设计的结果

答:面向对象语言,能够更完整、更准确地表达问题域语义,侧重在3个重要优点:

(1)一致的表示方法、

(2)可重用性、

(3)可维护性。

因此,一般说来,应该尽量选用面向对象语言来实现面向对象分析、设计的结果。

第八题: 解释以下名词:

答:

1、COCOMO2模型:构造性成本模型,该模型把软件开发工作量表示成代码行数(KLOC)的非线性函数。

2、面向对象的多态性:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。

3、面向对象的方法:包括面向对象分析、设计和程序设计。

4、面向对象的继承性:一个类直接继承其父类的全部描述(数据和操作)

5、面向对象的高内聚低耦合:内聚衡量一个模块内各个元素彼此结合的紧密程度,在设计时应该力求做到高内聚;降低耦合度,即降低方法与外界的耦合程度,不使用全局信息。

6、Gantt(甘特)图:应用广泛的制定进度计划的工具,能很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间。

7、信息隐藏(Data Hiding) :一个模块内包含的信息(过程和数据)对于不需要这些信息的模块是不能访问的

8、面向对象的属性:类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。

第九题:王大夫在小镇上开了一家牙科诊所 。 他有一个牙科助手、一个牙科保健员和一个接 待员 。 王大夫需要一个软件系统来管理预约 。 当病人打电话预约时 ,接待员将查阅预约登记表 ,如果病人申请的就诊时间与已定下的预约时间冲突 ,则接待员建议一个就诊时间以安排病人尽早得到诊治。 如果病人同意 建议的就诊时间 ,接待员将输入约定时间和病人的名字 。 系统将核实病人的名字并提供 记录的病人数据 ,数据包括病人的病历号等 。 在每次治疗或清洗后 ,助手或保健员将标记 相应的预约诊治已经完成 ,如果必要的话会安排病人下一次再来 。 系统能够按病人姓名和按日期进行查询 ,能够显示记录的病人数据和预约信息。 接 待员可以取消预约 ,可以打印出前两天预约尚未接诊的病人清单。 系统可以从病人记录 中获知病人的电话号码 。 接待员还可以打印出关于所有病人的每天和每周的工作安排 。

(1). 建立上述牙科诊所管理系统的对象模型;

(2). 建立牙科诊所管理系统的用例模型;

(3). 用数据流图建立所述牙科诊所管理系统的功能模型;

(4). 画出所述牙科诊所管理系统的状态图。

答:

1、建立牙科诊所管理系统的对象模型

(1) 从对牙科诊所问题的陈述中,对象的候选者(名词):王大夫、小镇、牙科诊所、牙科助手、牙科保健员、接待员、软件系统、预约、病人、预约登记表、就诊时间、预约时间、约定时间、系统、名字、记录的病人数据、病历号、姓名、日期、预约信息、病人清单、病人记录、电话号码、每天工作安排、每周工作安排。

  1. “名字”和“姓名”是同义词,应该作为病人和预约登记表的属性;
  2. “记录的病人数据”实际上是“病人记录”,可以统一使用"病人记录”作为对象名;
  3. “病人清单”是已预约但尚未就诊的病人名单,应含病人姓名、预约就诊时间等内容,它和“预约信息”内容基本相同,可保留“病人清单”作为问题域中的对象。

(2)另外,问题域的对象之间关联关系:

  1. 牙科诊所诊治多名病人;
  2. 一位病人有一份病人记录;
  3. 一位病人可能预约多次也可能一次也没有预约;
  4. 牙科诊所在一段时间内将打印多份病人清单;
  5. 牙科诊所开业以来已经建立了多份预约登记表;
  6. 预约登记表中记录了多位病人的预约;
  7. 根据预约登记表在不同时间可以制定出不同的工作安排。

2、建立牙科诊所管理系统的用例模型。

先找出系统的用户,然后再根据用户对系统的功能需求确定用例。

3、用数据流图建立所述牙科诊所管理系统的功能模型 。

4 画出所述牙科诊所管理系统的状态图

第十题:面向对象软件的哪些特点使得测试和维护变得比较容易 ? 哪些特点使得测试和维护变得比较困难

答:面向对象软件的模块独立特点使得测试和维护变得比较容易;代码重构特点使得测试和维护变得比较困难。

第十一题: 为什么说参数化类有助于提高可重用性

答:

在实际的应用程序中,有一些软件元素,从逻辑功能看,彼此是相同的,所不同的主要是处理的对象类型不同。

参数化类就是使用一个或者多个类型去参数化一个类的机制,有了这种机制,程序员可以先定义一个参数化的类模块,再使用时把数据类型作为参数传递进来,在不同的应用程序中重复使用。

第十二题: 为什么推迟关键路径上的任务会延迟整个项目 ?

答:

关键路径定义为一组任务(称为关键任务),这组任务决定了完成项目所需要的最短时间。

如果位于关键路径上的一个关键任务的完成时间被推迟了,那么关键路径上的下一个任务的开始时间和结束时间也要相应地延迟。这样依次传递,会波及关键路径上的最后一个任务,从而延迟整个项目。

【软件工程习题(含参考答案)】面向对象章节相关推荐

  1. 【软件工程习题(含参考答案)】软件系统分析-五道题

    软件系统分析章节精选课后习题(含参考答案),如有错误,望不吝指出(#^.^#) [第一题]住院患者监护系统 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化, ...

  2. 【软件工程习题(含参考答案)】总复习

    60多道题总复习题(含参考答案),希望对大家的软件工程期末复习有帮助,你值得收藏!(#^.^#) ☞原文:[软件工程-精选习题集(含参考答案)]总复习-60道简答题 第一题:名词解释 1.极限编程 ( ...

  3. reg类型变量综合电路_2014年PLD习题集(含参考答案)数字系统设计

    下载word有问题请添加微信号:xuecool-com或QQ:370150219处理(尽可能给您提供完整文档),感谢您的支持与谅解. 第1章习题 1.1 名词解释 PROM CPLD FPGA ASI ...

  4. 大学计算机基础教程模拟选择题,【浙江大学】大学计算机基础教程——习题与参考答案...

    习题与参考答案 第1章 概述 简答题: 1.计算机是一种能按照事先存储的程序,自动.高速地进行大量数值计算和各种信息处理的现代化智能电子装置. 2.计算机的5个组成部分是:输入.存储.处理(运算).控 ...

  5. 常见嵌入式/C/C++面试题100+集合(含参考答案)-更新中

    常见嵌入式/C/C++面试题100+集合(含参考答案) 面试题1:变量的声明和定义有什么区别? 面试题2:sizeof和strlen的区别? 面试题3:C语言的关键字static和C++的关键字sta ...

  6. python内置函数用来打开或创建文件_2020年《python程序设计》基础知识及程序设计598题XS[含参考答案]...

    2020年<python程序设计>基础知识及程序设计 598题[含参考答案] 一.填空题 1.表达式 len('中国'.encode('utf-8')) 的值为___________.(6 ...

  7. 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...

    <百一测评--<Web应用开发>选择题(含参考答案)-JavaEE基础>由会员分享,可在线阅读,更多相关<百一测评--<Web应用开发>选择题(含参考答案)- ...

  8. matlab7.x答案,MATLAB习题及参考答案

    <MATLAB习题及参考答案>由会员分享,可在线阅读,更多相关<MATLAB习题及参考答案(14页珍藏版)>请在人人文库网上搜索. 1.习题:1, 计算与的数组乘积.2, 对于 ...

  9. 2019年计算机学业水平测试填空题,2019年计算机学业水平模拟测试选择题80题Word(含参考答案)...

    2019年计算机学业水平模拟测试选择题80题Word(含参考答案) 2019年计算机学业水平测试选择题(10大题80小题) 第一题: 1.1."妈妈把鹏鹏的照片放在快盘里,远方的爷爷奶奶也能 ...

最新文章

  1. weedfs java_初窥weedfs分布式文件系统
  2. Swift之String的简单实用
  3. [LeetCode] Palindrome Number Valid Palindrome - 回文系列问题
  4. IIS 7 php 7.0 部署WE MALL
  5. aix oracle 内存限制,请教 AIX 与 Linux 中,怎样分析Oracle的内存占用?
  6. 三维重建面试0:*SLAM滤波方法的串联综述
  7. php curl实现get请求,PHP中使用curl实现Get和Post请求 | 严佳冬
  8. 装B指南之使用浏览器播放电影
  9. [MySQL 5.6优化] --order by limit x,x 优化
  10. 【机器学习】熵、决策树、随机森林 总结
  11. 浅谈 JavaScript 编程语言的编码规范--转载
  12. matlab 工具函数 —— logdet(A)
  13. 过滤器Filter与监听器Listener
  14. 数据结构与算法分析(一)
  15. 计算机优秀毕业生访谈,访谈 | 信息院优秀毕业生经验分享
  16. 2017人人都是产品经理年度作家评选结果公告
  17. Redis-使用redis-trib构建集群
  18. 用CSS动画制作一个正方体
  19. k线顶分型 python_顶分型K线形态形态特征及操作要领
  20. linux多拨脚本,openwrt-mwan3负载均衡,多线多拨

热门文章

  1. 笔记本计算机故障排除,笔记本电脑开不了机的原因与解决方法
  2. 声卡突然听不到监听_初次玩外置声卡监听与录音 遇到些问题 恳请大神帮忙解决...
  3. MapReducer——使用序列化求部门工资总额(4)
  4. PET医用薄膜打印机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. Unity视频流插件UMP
  6. 【生活】冰箱常备食物--以备不时之需,或者对付哪些喜欢空降的盆友
  7. MatplotlibSeaborn绘图整理(基于Titanic数据集)【未完待续】
  8. windows上编译安装pytorch的c++扩展
  9. 宁德时代与VinFast达成全球战略合作;海南省第二家君悦品牌酒店开业 | 美通企业日报...
  10. uefi装完系统后无法引导_电脑开机常见问题及解决方法(附带uefi引导的系统安装)...