3、软件工程为什么要强调规范化和文档化?
答案对象模型是什么软件工程强调规范化和文档化。规范化的目的是使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,以便于后人的使用和维护,在开发过程中各类相关人员借助于文档进行交流和沟通。另外,在开发过程中产生的各类文档使得软件的生产过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理。在用户最终验收时可以通过对提交的文档进行技术审查和管理审查,保证软件的质量。
8、请画图说明软件工程的层次化结构,并详细分析中间两层的内容。
软件工程的内容具有层次化结构,最底层是质量保证层,中间是过程层和方法层,最上层是工具层。见图:
其中过程层定义了一组关键过程域,目的是保证软件开发过程的规范性和可控性。方法层提供了软件开发的各种方法,包括如何进行软件需求分析和设计,如何实现设计,如何测试和维护等方法。
15、请给出软件工程七条基本原理中的任意三条基本原理。
原理1.用分阶段的生命周期计划严格管理 原理2.坚持进行阶段评审原理3.实行严格的产品控制原理4.采用现代程序设计技术原理5.结果应能清楚地审查原理6.开发小组的人员应该少而精原理7.承认不断改进软件工程实践的必要性
1. 软件工程的主要目标是什么?
软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:
1实现预期的软件功能,达到较好的软件性能,满足用户的需求。
2增强软件过程的可见性和可控性,保证软件的质量。
3提高所开发软件的可维护性,降低维护费用。
4提高软件开发生产率,及时交付使用。
5合理预算开发成本,付出较低的开发费用。
2. 简述软件过程模型
答:1)软件过程是人们开发和维护软件及相关产品的活动、方法、实践和改进的集合。它明确定义软件过程中所执行的活动及其顺序,确定没一个活动内容和步骤,定义每个角和职责。
(2)软件工程将软件开发和维护的过程概况为8个大的活动:问题定义、可行性研究、需求分析、总体设计、详细设计、编码、系统测试和运行维护。
1试从软件的特点出发分析软件危机产生的原因。
答案 :1软件是一种逻辑实体,具有抽象性无法看到软件本身的形态,必须通过观察、分析、思考判断才能了解它的功能和性能。2软件对硬件和环境有着不同程度的依赖性
导致了软件升级和移植的问题。计算机硬件和支撑环境不断升级,为了适应运行环境的变化,软件也需要不断维护,并且维护的成本通常比开发成本高许多。3软件生产至今尚未摆脱手工方式,软件开发的手工行为造就了一个致命的问题,就是为应用“量身订做”软件。长期以来,软件给人的感觉是修改几条指令很简单,客户总是强调软件要适应自己的业务需求。因此,软件产品大多是为客户“订做”的,通用性差。4软件涉及人类社会的各行各业,常常涉及一些行业知识,这对软件工程师提出了很高的要求。5软件是与文学艺术作品相似的精神作品与体力劳动相比,精神活动过程的特点是“不可见性”,这大大增加了组织管理上的困难。
2、面向对象的分析通常要建立三个模型,请问三个模型的作用?
1)功能模型:表达系统的详细需求,为软件的进一步分析和设计打下基础。在面向对象方法中,由用例图和场景描述组成。2)对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。3)动态模型:描述系统的动态结构和对象之间的交互,表示瞬时的、行为化的系统的“控制”特性。
5、请说明对象模型的作用是什么?
对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。在面向对象方法中,类图是构建对象模型的核心工具。
6、请说明IPO图的作用,并给出一个IPO图的模板。
数据流程图中的处理本应该放在数据字典中进行定义,但是由于处理与数据是有一定区别的两类事物,它们各自有独立的描述格式,因此在实际项目中通常将处理说明用IPO图标描述。下面是项目中常用的处理说明模板:
系统名称:                                          作者:           
处理编号:                                          日期:           
输入参数说明:
输出参数说明:
处理说明:
局部数据元素:
备注:
6.简述模块独立性,内聚与耦合。
答: 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。一般采用两个准则度量模块独立性。即模块间耦合和模块内聚。耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。
6.衡量模块独立性的两个标准是什么?它们各表示什么含义?
答:(1)两个定性的度量标准:耦合与内聚性。(2)耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。(3)内聚性:也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。
7、什么是耦合?什么是内聚?
在软件设计中应该保持模块的独立性原则。反映模块独立性的有两个标准:内聚和耦合。内聚衡量一个模块内部各个元素彼此结合的紧密程度;耦合衡量模块之间彼此依赖的程度。软件设计时追求高内聚、低耦合。
9、请说明快速原型化模型的基本思想。
在需求分析的同时,以比较小的代价快速建立一个能够反映用户主要需求的原型系统。用户在原型系统上可以进行基本操作,并且提出改进意见,分析人员根据用户的意见完善原型,然后再由用户评价,提出建议,如此往复,直到开发的原型系统满足了用户的需求为止。基于快速原型化模型的开发过程基本上是线性的,从创建系统原型到系统运行,期间没有反馈环。这是由于开发人员是在原型的基础上进行系统分析和设计,而原型已经通过了用户和开发组的审查,在设计阶段由于有原型作设计参考,所以设计的结果正确率比较高。
10、请举例说明用例之间的包含关系和扩展关系的区别?
包含关系用于构造多个用例共同的活动。例如,在ATM系统中,取钱、查询、更改密码等功能都需要验证用户密码。这种情况下应该将密码验证功能独立出来,便于复用、减少冗余。一个用例扩展另一个用例的功能,例如,在图书馆信息管理系统中,读者还书时,系统检查所还图书是否有预订记录,如果有则执行“通知”用例。
9.简述在项目开发时选择程序设计语言的主要考虑的因素。
答:1编程人员的水平和编程经历;2待开发的软件类型;3算法和计算复杂性;4数据结构的复杂性;5软件的开发成本和时间要求;6软件可移植性要求;7可用的软件工具。
11、软件设计中的抽象是什么意思?
所谓抽象就是将事务的相似方面集中和概括起来,暂时忽略它们之间的差异。或者说,抽象就是抽出事务的本质特性而暂时不考虑它们的细节.
9. 活动图与状态图的区别?
答:(1)描述的重点不同:活动图描述的是从活动到活动的控制流;状态图描述的是对象的状态及状态之间的转移。(2)使用的场合不同:在分析用例、理解涉及多个用例的工作流、处理多线程应用等情况下,一般使用活动图;在显示一个对象在其生命周期内的行为时,一般使用状态图。
7.等价分类法的基本思想是什么?
答:根据程序的输入特性,将程序的定义域划分为有限个等价区段——“等价类”,从等价类
中选择出的用例具有“代表性”,即测试某个等价类的代表值就等价于对这一类其他值的测试。如果某个等价类的一个输入数据(代表值)测试中查出了错误,说明该类中其他测试用例也会有错误。
13试分析结构化方法存在的主要问题是什么?\
答1结构化方法分析和设计阶段所应用的模型之间存在鸿沟。分析阶段的主要模型是数据流程图,设计阶段的主要模型是软件模块结构图,数据流程图和软件模块结构图之间需要进行转换。不同的人转换出的模块图可能不同,有很大的随意性。2需求分析的细化程度没有标准,只能凭借分析人员的经验自己把握;需求分析的过程是在一种瀑布形式,当需求变更时,功能变化就会导致软件模块结构发生变化,造成了软件结构不稳定。3结构化程序设计将数据定义与处理数据的过程相分离,不利于软件复用。4结构化方法设计的软件结构不稳定,缺乏灵活性,可维护性差。
14、请说明判定表的作用及其结构。
判定表是结构花设计的工具,用于描述多重条件的处理。分为4各部分:条件列表、条件组合、操作列表、特定条件下的操作组合。
16、结构化程序设计的特征是什么?
结构化程序设计的特征如下:程序模块只有一个入口和一个出口、程序中只包含顺序、条件和循环三种控制结构。
3. 简述结构化分析的主要步骤
答:(1)根据用户的需求画出初始的数据流程图,写出数据字典和初始的加工处理说明(IPO图),实体关系图。
(2)以初始数据流程图为基础,从数据流程图的输出端开始回溯。在对数据流程图进行回溯的过程中可能会发现丢失的处理和数据,应将数据流程图补充完善。
(3)对软件性能指标、接口定义、设计和实现的约束条件等逐一进行分析。
(4)系统分析人员与用户一起对需求分析的结果进行复查。
(5)根据细化的需求修订开发计划。
(6)编写需求规格说明书和初始的用户手册,测试人员开始编写功能测试用的测试数据。
18.什么是软件危机?软件危机表现在哪几个方面?
(1)软件危机是指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。
(2)典型表现:
开发费用和进度难以估算和控制,大大超过预期的资金和规定日期;
软件需求分析不够充分,用户不满意已经完成的软件系统。
软件质量难于保证;
软件维护困难;
通常没有保留适当的文档资料
开发成本逐年上升;
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
2软件需求可以分为业务需求、用户需求、功能需求和非功能需求,请分析功能需求和非功能需求的区别?
答:
1)功能需求定义了软件开发人员必须实现的软件功能。用户从他们完成任务的角度对软件提出了用户需求,这些需求通常是凌乱的、非系统化的、有冗余的,开发人员不能据此编写程序。软件分析人员要充分理解用户需求,将用户需求整理成软件功能需求。开发人员根据功能需求进行软件设计和编码。
  2)非功能需求是对功能需求的补充,可以分两类。一类对用户来说是最重要的属性,包括有效性、高效性、灵活性、完整性、互操作性、可靠性、健壮性、可用性。另一类对开发者来说是很重要的质量属性,包括可维护性、可移植性、可重用性、可测试性。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。