软件工程第15章(4-02)
- 格式:ppt
- 大小:220.00 KB
- 文档页数:21
第一部分软件需求的基本概念*好需求的特征:无歧义、完整、一致、可检验、确定、可跟踪的,正确的,可行的和必要的。
软件开发的目标,简单而言,就是满足用户的需要。
三种最经常使项目“遇到困难"的因素是:⏹缺乏用户介入:占所有项目的13%⏹不完整的需求和规格说明:占所有项目的12%⏹不断改变的需求和规格说明:占所有项目的12%三种项目最主要的“成功因素"是:⏹用户介入:占所有成功项目的16%⏹高层管理的支持:占所有成功项目的14%⏹需求陈述清晰:占所有成功项目的12%高质量的需求过程带来的好处:在开发后期和整个维护阶段的重做的工作大大减少了。
IEEE软件工程标准词汇表定义需求为:1.用户解决问题或达到目标所需的条件或能力。
2.系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力.3.一种反映上面(1)或(2)所描述的条件或能力的文档说明.第二章需求的层次*需求是多层次的,包括业务需求、用户需求、功能需求和非功能需求。
业务需求反映了组织机构或客户对系统、产品高层次的目标要求,位于需求链中的最顶层,在项目视图和范围文档中予以说明。
用户需求描述了用户使用产品必须要完成的任务,这在实例文档或方案脚本予以说明。
功能需求定义了开发人员必须实现的软件功能,使得用户完成他们的任务,从而满足了业务需求。
和非功能需求在SRS中说明。
非功能性的需求描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。
需求路线图:涉众需要-〉系统的特性—〉建立软件需求软件的6个质量特征(非功能性需求):可靠性,可用性,有效性,可维护性,可移植性,约束。
有效性(Efficiency)是在规定的条件下,软件性能水平与所使用资源量之间关系有关的一组属性.可靠性(Reliability)是与在规定的一段时间和条件下,软件维持其性能水平的能力有关的一组属性可维护性(Maintainability)是与进行指定的修改所需的努力有关的一组属性约束定义为:对开发人员在软件产品设计和构造上的限制。
软件工程各章作业习题的名词解释和问答题参考答案第一章:1:什么是软件危机开发软件由于管理混乱,加入软件规模越来越大,越来越复杂,造成软件开发失败。
2:软件工程过程指获取、供应、开发、操作和维护软件时要实施的过程、活动和任务。
3:软件生成周期可行性研究与计划、需求分析、总体设计、详细设计、实现、测试、使用与维护4:有哪些软件周期模型瀑布模型、原型模型、增量模型、螺旋模型。
5:软件计算机程序及说明程序的各种文档6:个体手工劳动个人编写程序7:小生产合作方式多人编写程序8:软件的特点是一种逻辑产品,软件的生产主要是研制,软件产品不会用坏,软件生产主要是脑力劳动,软件的成本高。
9:软件文档有关程序的功能、设计、图形资料等等。
第二章:三. 名词解释1.可行性研究以最小代价, 在尽可能短的时间内, 确定该软件项目是否能够开发, 是否值得开发.2.技术可行性主要研究开发的软件技术风险有多大3.经济可行性主要研究开发成功后能否得到应有的效益4.社会可行性主要研究开发的软件是否存在责任和侵权, 以及与当前管理制度, 人员素质, 操作方式的矛盾能否解决.四.问答题1. 可行性研究的任务是什么首先初步确定项目的规模, 目标, 约束和限制条件, 决定系统的主要功能, 进行简要压缩, 提出几种解决方案.对每种方案提出意见.2.可行性研究有那些步骤确定任务;分析技术可行性;分析经济可行性;分析社会可行性;作出系统流程图;作出开发计划。
3.可行性研究的目的.减少开发大型软件的风险,缩短开发周期, 减小投资, 减少使用资源, 在尽可能短的时间内, 确定该软件项目是否能够开发, 是否值得开发.第三章三. 名词解释1. 需求分析指开发人员为了准确地理解, 表达用户的要求, 通过调查, 分析, 把系统的功能, 性能等方面准确地表达出来2. DFD数据流图四. 简答题1.什么是需求分析该阶段的基本任务是什么指开发人员为了准确地理解, 表达用户的要求, 通过调查, 分析, 把系统的功能, 性能等方面准确地表达出来基本任务:(1) 能够表达和理解问题的功能和性能;(2) 可以把一个复杂问题按某种方式进行划分, 并能逐步细化, 从而使复杂问题简化,软件的功能域,数据域都可以划分;(3) 建立模型.2. 简述结构化分析的步骤这一方法的基本思想是采用自顶向下,逐层分解的方法分析整个系统,有效的控制系统的复杂性.对于复杂, 规模大的应用系统,采用先抽象后具体, 先全局后局部的思想,有利于把握系统的总体目标, 结构和功能.第四章:三. 名词解释1. 软件设计确定软件结构,选择好的数据库,进行数据结构设计2.模块化把复杂问题划分为模块的过程3.信息隐蔽指模块内部处理细节和内部数据用某种手段隐蔽起来,外部模块不能随便访问4.模块独立性希望一个模块越独立越好,每个模块完成独立的功能,与其他模块联系越少越好5.耦合性指软件结构中模块之间相互依赖的程度6.内聚性模块内部各部分执行功能组合在一起的相关程度7.模块的控制范围一个模块对下属模块的控制8.模块的作用范围指模块之间的作用,但两个模块间是平级的9. 软件结构以需求分析文档为依据,解决实现软件体系结构四. 简答题1.什么是软件概要设计, 该阶段的基本任务是什么以需求分析文档为依据,解决实现软件体系结构。
《软件工程》教学大纲一、教学目的及任务本课程是计算机科学与技术专业的主要专业基础课,本课程为理论与实践并重的信息学科的专业基础课。
本课程的主要目的是使学生理解在软件开发过程中应用软件工程方法的必要性和迫切性,要求学生掌握软件工程的基本概念、原理与技术方法。
在让学生了解有关知识与方法的同时,采用实践相配合的方式提高学生对专业知识的综合应用能力与技能,使学生在接收理论知识的基础上提高并加强工程化知识与实践知识的教育,为学生在今后从事计算机大规模软件开发与维护打下扎实的基础。
教学任务是使学生熟练掌握和在实践中运用软件工程基本概念、原理和方法,常用的软件过程模型,软件项目管理与质量保证的基本方法与工具。
使学生能针对具体应用,进行需求分析建模、软件设计及测试,以规范的方法开发软件系统。
使学生具备分析解决软件工程问题的能力,以及团队协作、谈判沟通等能力。
二、教学方法(一)授课方式与要求授课方式:a.教师讲授(讲授核心内容、总结、按顺序提示今后内容、答疑);b.课后作业(每周作业在教学日历中列出);c.课堂测验(就已经学过的内容不定时进行课堂测验);d.案例研讨(就某个典型的应用案例进行课前调研和课堂研讨)e.课堂报告(针对某个知识点,提前布置,让学生在课堂上分享自己的理解)f.实验项目(根据实验要求分组进行软件系统开发,其间编写实验报告,如需求分析报告、总体设计报告、测试报告等,提交可运行的软件系统);g.期末考试(闭卷考试)。
课程要求:熟悉软件工程基本知识,掌握从软件计划、需求分析、设计、测试等过程的一系列软件开发方法和工具,提高软件开发能力。
说明:本课程注重实践能力的培养。
课后需要有足够的时间进行课程案例调研以及实验项目的设计和实现。
(二)考试评分与建议a.期末考试占40%b.实验项目占40%c.课堂讨论(含课堂测验和课堂报告)占20%。
三、教学安排(一)教学内容第一次:软件工程概述(模块-1-软件工程概述)主要内容:软件已经成为以计算机为基础的系统和产品中的关键部分,并且成为世界舞台上最为重要的技术之一,软件工程的目的是高效率的开发高质量的软件产品。
软件工程导论(第六版)课后习题答案软件工程导论(第六版)课后习题答案1. 简答题1.1 软件是如何演变而来的?软件起源于计算机的发展。
最初,计算机只能执行硬件内置的指令,而随着计算机的发展,人们开始意识到可以编写程序来控制计算机的行为。
因此,软件就诞生了。
从最初的汇编语言、机器语言编写程序,到高级编程语言的出现,软件也逐渐从简单的指令集合演变为复杂的程序系统。
同时,计算机应用领域的拓展也催生了更多类型的软件,如操作系统、数据库管理系统、图形界面等。
软件工程导论旨在帮助人们理解和应对软件开发过程中的种种问题和挑战。
1.2 简述软件危机的原因以及软件工程的解决途径。
软件危机指的是在软件开发过程中出现的一系列问题和挑战。
其原因主要包括:(1)软件开发过程中需求不明确或者需求频繁变更;(2)软件项目规模庞大,组织和管理困难;(3)软件开发中缺乏标准化的工程方法和规范;(4)软件开发中技术不成熟、人员培训和素质不足等。
为了应对软件危机,软件工程提出了一系列解决途径:(1)引入系统化的软件开发过程,如瀑布模型、迭代模型、敏捷开发等;(2)规范化软件开发活动,如需求分析、软件设计、编码、测试、维护等;(3)建立软件开发的标准和规范,如ISO 9000、CMMI等;(4)提高软件开发人员的专业水平,加强软件工程教育和培训。
1.3 软件工程活动的核心内容是什么?软件工程活动的核心内容包括需求分析、软件设计、编码、测试和维护等。
(1)需求分析:确定用户需求,定义软件的功能和性能要求。
(2)软件设计:制定软件的体系结构,并将需求转化为具体的设计方案。
(3)编码:根据设计方案,使用编程语言实现软件的功能。
(4)测试:验证软件是否符合需求和设计的要求,发现并修复潜在的问题。
(5)维护:对软件进行改进、优化和修复,确保软件长期稳定运行。
2. 应用题2.1 简述软件生命周期模型,并列举至少两种常见的软件生命周期模型。
软件生命周期模型指的是软件开发过程中各个阶段的组织和安排方式,常见的软件生命周期模型包括:(1)瀑布模型:按照固定的顺序依次进行需求分析、设计、编码、测试和维护等活动。
软件工程的6个阶段1-需求收集和分析阶段:在这个阶段,团队收集并分析用户需求,确定系统的功能和性能要求。
其中包括以下子阶段:1-1 需求收集:与项目利益相关方(包括客户、用户)进行访谈和交流,以了解他们对系统的期望和需求。
1-2 需求分析:对收集到的需求进行整理、梳理,并进行详细的需求分析,确定系统功能和性能的具体要求。
1-3 需求验证:与项目利益相关方确认需求,确保需求的准确性和完整性。
2-系统设计阶段:在这个阶段,团队根据需求分析的结果,进行系统的设计。
其中包括以下子阶段:2-1 总体设计:确定系统的整体架构和模块划分,并绘制相应的系统设计图。
2-2 详细设计:对每个模块进行详细设计,包括数据结构设计、算法设计等。
3-编码阶段:在这个阶段,团队根据设计阶段完成的设计文档,进行具体的编码实现。
其中包括以下子阶段:3-1 编码环境搭建:配置开发环境,包括开发工具、开发语言等。
3-2 编码实现:根据设计文档进行编码实现,注意编码规范和代码质量。
4-测试阶段:在这个阶段,团队对编码实现进行系统测试和验证。
其中包括以下子阶段:4-1 单元测试:对每个模块进行单元测试,验证其功能的正确性。
4-2 集成测试:将各个模块整合在一起进行测试,验证模块间的协作是否正常。
4-3 系统测试:对整个系统进行功能和性能的综合测试,确保系统的质量和可靠性。
5-部署和维护阶段:在这个阶段,团队将系统部署到目标环境,并进行系统的运维和维护工作。
其中包括以下子阶段:5-1 环境部署:部署系统所需的硬件和软件环境。
5-2 系统部署:将开发好的系统部署到目标环境,并进行系统配置和安装。
5-3 系统维护:对系统进行定期的巡检、维护和升级,确保系统的稳定运行。
6-项目收尾阶段:在这个阶段,团队完成项目的交付和收尾工作。
其中包括以下子阶段:6-1 项目验收:与项目利益相关方进行项目验收,确保项目达到要求的交付标准。
6-2 文档总结:总结和整理项目文档和经验,为后续项目的开展提供参考。
本书习题参考答案第1章软件测试概述1. 软件具有几个特点,请详细说明。
软件具有8个特点:(1) 软件是一种逻辑实体,而不是具体的物理实体。
因而它具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制造过程。
对软件的质量控制,必须着重在软件开发方面下功夫。
(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
然而它存在退化问题,必须要对其进行多次的修改与维护。
(4) 软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。
为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5) 软件的开发至今尚未完全摆脱人工艺的开发方式。
(6) 软件本身是复杂的。
软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7) 软件成本相当昂贵。
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8) 相当多的软件工作涉及到社会因素。
许多软件的开发和运行涉及机构、体制及管理方式等问题,它直接影响到项目的成败。
2.软件的分类方法都有哪些?软件的分类方法有如下 4种:(1)按软件的功能分类(系统软件,支撑软件,应用软件)(2)按软件服务对象的范围分类(项目软件,市场软件)(3)按开发软件所需要的人力、时间以及完成的源程序行数分类。
(大型,小型,中型,微型)(4)按软件工作方式分类按软件的工作方式分为:实时处理软件、分时软件、交互式软件、批处理软件。
3. 软件测试的概念软件测试是软件工程中的一个环节,是开发项目整体的一部分。
软件测试是有计划有组织的,是保证软件质量的一种手段,它是软件工程中一个非常重要的环节。
因此,可以认为它是伴随软件工程的诞生而诞生的,伴随着软件复杂程度的增加、规模的增大,软件测试作为一种能够保证软件质量的有效手段,越来越受到人们的重视,软件测试最终目的是使产品达到完美。
4. 软件测试的方法有哪些?软件的测试方法有3种,即用试题测试、用新旧两个系统作平行处理测试和软件测试自动化工具测试。