软件工程作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章概述
1.什么叫软件危机?软件危机主要有哪几种表现?
答:软件危机指的是软件开发和维护过程中遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机主要有下列表现:①产品不符合用户的实际需要。②软件开发生产率提高的速度远远不能满足客观需要。③软件产品的质量差。④对软件开发成本和进度的估计常常不准确。⑤软件的可维护性差。⑥软件文档资料通常既不完整,也不合格。⑦软件的价格昂贵。2.什么叫软件工程?软件工程是如何克服软件危机的?
答:软件工程是指导计算机软件开发和维护的一门学科。它采用工程的概念、原理、技术和方法,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于开发与维护软件。
软件工程是这样克服软件危机的:①用分阶段的生存周期计划严格管理。②坚持进行阶段评审。③实行严格的产品控制。④采用现代程序设计技术。⑤应能清楚地审查结果。⑥合理安排软件开发小组的人员。
3.软件工程的目标、原则和主要研究内容是什么?
答:软件工程的目标是:①定义良好的方法学,面向计划、开发维护整个软件生存周期的方法学。②确定软件成分,记录软件生存周期每一步的软件文件资料,按步显示其轨迹。③可预测结果,在生存周期
中,每隔一定时间可以进行复审。软件工程学的最终目的,是以较少的投资获得易维护、易理解、可靠、高效率的软件产品。
软件工程的原则是:①分解。②抽象和信息隐蔽。③一致性。④确定性。
软件工程的主要研究内容是:软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范、软件开发技术与管理技术的相关理论。
第2章可行性研究
1.可行性研究的任务是什么?简述可行性研究的步骤。
答:可行性研究的任务是:①经济可行性。②技术可行性。③运行可行性。④法律可行性。⑤开发方案可行性。
可行性研究的步骤是:①复查系统规模和目标。②研究目前正在使用的系统。③导出新系统的高层逻辑模型。④重新定义问题。⑤导出和评价供选择的方案。⑥推荐一个方案并说明理由。⑦推荐行动方针。⑧书写计划任务书。⑨提交审查。
第3章需求工程
1.需求分析的任务是什么?怎样理解分析阶段的任务是决定“做什么”,而不是“怎样做”?
答:需求分析的基本任务是分析与综合已收集到的需求信息,通过分析找出需求信息内在联系和可能的矛盾,通过综合找出解决问题的方法并建立系统的逻辑模型。具体地说,需求分析是提炼、分析和审查已收集到的需求信息,找出真正的和具体的需求,并确保所有相关人
员都理解其含义。此外,通过建立软件系统的逻辑模型,发现和找出需求信息中存在的冲突、遗漏、错误或含糊的问题。①绘制系统关联图。②创建用户接口原型。③分析需求可行性。④确定需求的优先级。
⑤为需求建立模型。⑥创建数据字典。⑦质量功能调配。
我是这样理解分析阶段的任务是决定“做什么”,而不是“怎样做”:分析阶段主要是指用户对软件的功能与性能需求,也就是用户希望软件能够做什么事情,完成哪些功能,达到哪些性能等,而不是如何去实现软件的这些功能。
2.需求规格说明书由哪些部分组成?各部分的关系是什么?
答:需求规格说明书由下列部分组成:①引言。②任务概述。③数据描述。④功能要求。⑤性能需求。⑥运行需求。⑦其他要求。⑧附录。
各部分的关系是:首先用户必须对软件功能和性能提出初步要求,并澄清一些模糊概念;然后软件分析人员认真了解用户的要求,细致地进行调查分析,把用户要求做什么的问题转换成一个完全的、精细的软件逻辑模型并写出软件的需求规格说明,准确地表达用户的要求。
第4章概要设计
1.结构化设计方法的基本思想是什么?它如何与SA方法相衔接?答:结构化设计方法的基本思想是:①系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推荐方案以及系统流程图、组成系统物理元素清单、成本效益分析和系统的进度计划供专家审定,审定后进入设计。②确定模块结构,划分功能模块,将软件功能
需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。③编写概要设计说明书、用户手册、测试计划,选用相关的软件工具来描述软件结构,选择分解功能与划分模块的设计原则。
它是这样与SA方法相衔接的:①设计系统方案。②选取一组合理的方案。③推荐最佳实施方案。④功能分解。⑤软件结构设计。⑥数据库设计与文件结构设计。⑦制订测试计划。⑧编写概要设计文档。
⑨审查与复审概要设计文档。
2.什么是模块独立性?用什么来度量?
答:模块独立性是指软件系统中每个模块只涉及软件要求的具体子功能,而且与其他模块接口简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
模块的独立程度可以由两个定性标准度量,这两个标准分别称为耦合和内聚。耦合衡量不同模块彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
3.什么是自顶向下设计?为什么说它尤其适用于大型软件的开发?答:自顶向下设计:设计人员要对系统有一个全面的了解,然后从顶层开始,连续地逐层向下分解,直至系统的所有模块都小到便于掌握为止。
对于大型软件的开发,如若采用自顶向下的方法进行设计,可以很好的把握整体系统,使得系统整体结构合理。
第5章详细设计
1.简述详细说明书的主要内容。怎样对它进行复审?
答:详细说明书的主要内容是:①表示软件结构的图表。②对逐个模块的程序描述,包括算法和逻辑流程,输入/输出项与外部接口等。
这样对它进行复审:详细设计复审的重点应该放在各个模块的具体设计上。例如,设计的模块能否满足其功能与性能要求,选择的算法与数据结构是否合理,是否符合编码语言的特点,设计描述是否简单而清晰等。
2.说明详细设计的基本原则和任务。
答:详细设计的基本原则是:①由于详细设计的蓝图是给人阅读的,是编码的基础,所以模块的逻辑描述要清晰易读、正确可靠。②采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。③选择恰当的描述工具来描述各模块算法。
详细设计的任务是:为每一个模块确定使用的算法和相关的数据结构,并用选定的表达工具清晰地描述。这一阶段的主要任务如下:①为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述。②确定每一模块使用的数据结构。
③确定模块接口的细节。④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试。
第6章面向对象设计
1.什么是面向对象方法学?试阐述这种方法学的主要优点。