软件工程(2)
软件工程第二版答案

里面包含绝大部分的软件工程第二版中的课后习题答案瞿中编第一章仿真试题1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、具体设计、编码、测试和运营、维护。
八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( )。
A、具体计划B、可行性分析C、运营阶段D、测试与排错2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节犯错,对软件的影响最大( )。
A、具体设计阶段B、概要设计阶段C、需求分析阶段D、测试和运营阶段3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目的( )。
A、需求分析阶段B、具体设计阶段C、概要设计阶段D、可行性研究阶段4、软件工程的出现重要是由于( )。
A.程序设计方法学的影响B.其它工程科学的影响C. 软件危机的出现D.计算机的发展5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实行的重要保证是( )A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为( )A、互相排斥B、互相补充C、独立使用D、交替使用7、UML是软件开发中的一个重要工具,它重要应用于哪种软件开发方法( )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发规定最高( )A、结构化方法B、原型化方法C、面向对象的方法D、控制流方法9、结构化分析方法是一种预先严格定义需求的方法,它在实行时强调的是分析对象的( )A、控制流B、数据流C、程序流D、指令流10、软件开发的结构化生命周期方法将软件生命周期划提成( )A、计划阶段、开发阶段、运营阶段B、计划阶段、编程阶段、测试阶段C、总体设计、具体设计、编程调试D、需求分析、功能定义、系统设计11、软件开发中常采用的结构化生命周期方法,由于其特性而一般称其为( )A、瀑布模型B、对象模型C、螺旋模型D、层次模型12、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为也许占用人员最多的阶段是( )A、分析阶段B、设计阶段C、编码阶段D、测试阶段13、软件开发模型是指软件开发的所有过程、活动和任务的结构框架。
软件工程考试习题答案(2)

50.在结构化分析方法(SA)中,与数据流图配合使用的是( )。
A.网络图B.实体联系图C.数据字典D.程序流程图答案:C51.通过( )可以完成数据流图的细化。
A.结构分解B.功能分解C.数据分解D.系统分解答案:B52.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的( )。
A.细节B.输人与输出c.软件的作者D.绘制的时间答案:B53.数据存储和数据流都是( )仅仅所处的状态不同。
A.分析结果B.事件C.动作D.数据答案:D54.数据字典中,一般不包括下列选项中的( )条目。
A.数据流B.数据存储C.加工D.源点与终点答案:D55.在软件需求分析中,开发人员要从用户那里解决的最重要的问题是( )。
A.要让软件做什么B.要给该软件提供哪些信息c.要求软件工作效率怎样D.要让软件具有何种结构答案:A56.需求分析最终结果是产生( )。
A.项目开发计划B.可行性分析报告C.需求规格说明书D.设计说明书答案:C57.SA方法用DFD描述( )。
A.系统的控制流程B.系统的数据结构C.系统的基本加工D.系统的功能答案:D58.SA方法的分析步骤是首先调查了解当前系统的工作流程,然后( )。
A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型C.获得当前系统的逻辑模型,建立当前系统的物理模型,抽象出目标系统的逻辑模型D.获得当前系统的逻辑模型,建立当前系统的物理模型,建立目标系统的物理模型答案:A59.需求分析阶段不适于描述加工逻辑的工具是( )。
A.结构化语言C.判定树B.判定表D.流程图答案:D60.结构化分析方法(SA)最为常见的图形工具是( )。
A.程序流程图B.实体联系图C.数据流图D.结构图答案:C61.sA方法的基本思想是( )。
A.自底向上逐步抽象B.自底向上逐步分解C.自顶向下逐步分解D.自顶向下逐步抽象答案:C62.下面错误的说法是( )。
软件工程 清华 刘强(二)

软件工程清华刘强(二)引言概述:本文将介绍清华大学软件工程专业课程中,由刘强教授讲授的第二部分内容。
该部分主要围绕软件工程的核心概念和方法展开,旨在培养学生的软件开发和项目管理能力。
本文将分为五个大点进行详细阐述,包括需求工程、软件设计、软件测试、软件维护和项目管理。
正文:一、需求工程:1. 确定需求的重要性:引述实际案例,说明需求工程的关键作用。
2. 需求获取方法:介绍面对面访谈、问卷调查、焦点小组讨论等需求获取方法。
3. 需求分析:阐述需求分析的目标和方法,如使用数据流图、用例图等进行需求建模。
4. 需求验证和确认:讲解如何验证和确认需求的正确性和完整性。
5. 需求管理和变更控制:介绍如何管理需求,包括需求跟踪、变更控制和配置管理等方面的知识点。
二、软件设计:1. 结构化设计:讲解结构化设计的基本原则和方法,如模块化、层次化等。
2. 面向对象设计:介绍面向对象设计的核心思想和常用的建模方法,如类图、时序图等。
3. 软件架构设计:阐述如何设计软件系统的整体结构和组织方式。
4. 接口设计:讨论如何设计良好的软件接口,包括接口规范和设计原则。
5. 数据库设计:探讨如何进行数据库设计,包括数据库模式设计和数据表设计等方面的内容。
三、软件测试:1. 测试基本概念:介绍测试的定义、目标和原则等基本概念。
2. 静态测试:讲解静态测试方法,如代码审查、形式化验证等。
3. 动态测试:介绍常用的动态测试方法,如黑盒测试、白盒测试等。
4. 测试策略和计划:阐述如何制定有效的测试策略和计划,包括测试用例设计和测试环境搭建等。
5. 故障管理和缺陷跟踪:讲解如何管理软件故障和缺陷,包括问题跟踪系统的使用和故障修复流程的管理。
四、软件维护:1. 维护类型和活动:介绍软件维护的类型,包括改正性维护、适应性维护等。
2. 维护过程和工具:阐述有效的软件维护过程和常用的维护工具,如版本控制系统。
3. 维护成本和效益:讨论软件维护的成本和效益评估方法,如维护工作量度量和经济性分析等。
软件工程第二章(可行性分析)

(5) 交付的产品清单。
项目开发计划书供软件开发单位使用。
小结:
1、项目的问题定义、可行性分析和项目计划是总体 规划阶段的工作,重点是项目的可行性分析。
2、可行性分析主要从技术可行性、经济可行性和操 作可行性三方面来分析该项目是否值得开发。
3、可行性分析最后形成的成果是可行性分析报告。
项目的筹备、规划与准备是软件项目实施的前
期工作,它由两个重要的工作阶段构成:一是
项目规划及可行性分析;二是项目需求分析。
一、可行性分析的概念
可行性分析就是解决一个项目是否有可行解以及是
否值得去解的问题。该阶段的主要任务就是用最小
的代价在尽可能短的时间内确定问题是否能够得到 解决。
二、可行性分析的目标和内容
等。
(6) 技术可行性(技术风险评价):技术实力分析、已有的 工作及技术基础和设备条件等等。 (7) 法律可行性分析结果描述。 (8) 可用性评价:汇报用户的工作制度和人员的素质,确 定人机交互功能界面需求。
(9) 其他项目相关的问题:如可能会发生的变更等等。
可行性研究报告由系统分析员撰写,交由项目负责人审查, 再上报给上级主管审阅。 在可行性研究报告中,应当明确项目“可行还是不可行”, 如果认为可行,接下来还要制定项目开发计划书。
识别用户要求 评价系统的可行性 进行经济分析和技术分析 把功能分配给硬件、软件、人、数据库和其它系 统元素 建立成本和进度限制 生成系统规格说明,形成所有后续工程的基础
三、 可行性分析的主要任务
具体地说,分析员应从下面三个方面对项目做出可行性分 析: (1)技术可行性:使用现有的技术能实现这个系统吗? (2)经济可行性:这个系统的经济效益能超过它的开发成本 吗?(详细在后面介绍成本/效益分析) (3)操作可行性:系统的操作方式在该用户组织内行得通吗?
软件工程大作业(2)(答案)

软件工程大作业(2)(答案)软件工程作业第二部分一、填空1.结构化分析方法的分析策略是___自顶向下逐步求精_______。
2.衡量模块独立性的两个定性标准是_耦合性与内聚性________。
3.软件集成测试的方法主要有两种,它们是___渐增式与非渐增式测试_______。
4.继承性是子类自动共享其父类的__数据结构和方法____________机制。
5.在面向对象方法中,人们常用状态图描述类中对象的___动态行为________。
6.规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称该软件为____容错_____软件。
7.可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目_是否值得开发_。
8.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是__功能需求_。
9.软件生存周期中时间最长、花费的精力和费用最多的一个阶段是__维护_____阶段。
10.对象之间进行通信叫做__消息_____。
11.计算机辅助软件工程这一术语的英文缩写为_CASE_______。
12.McCall提出的软件质量模型包括______11________个软件质量特性。
13.为了便于对照检查,测试用例应由输入数据和预期的___输出结果____两部分组成。
14.软件结构是以____模块__________为基础而组成的一种控制层次结构。
15.结构化语言(PDL)是介于自然语言和____形式语言____之间的一种半形式语言。
16.软件概要设计的主要任务就是__软件结构的设计______。
17.结构化程序设计方法是使用___三种基本控制结构____构造程序。
18.软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个__自底向上或相反顺序 _____集成的过程。
19.在建立对象的功能模型时,使用的数据流图中包含有处理、数据流、动作对象和__数据存储对象_____。
二、选择1.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法2.面向对象的开发方法中,(B)将是面向对象技术领域内占主导地位的标准建模语言。
软件工程是指导计算机软件开发和维护的工程学科(2)

软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。
它们是在七十年代为了对付应用软件日益增长的复杂程度、漫长的开发周期以及用户对软件产品经常不满意的状况而发展起来的。
人类解决复杂问题时普遍采用的一个策略就是“各个击破”,也就是对问题进行分解然后再分别解决各个子问题的策略。
软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。
采用软件工程方法论开发软件的时候,从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。
前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的物理细节。
每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。
在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;如果检查通不过,则必须进行必要的返工,并且返工后还要再经过审查。
审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。
文档是通信的工具,它们清楚准确地说明了到这个时候为止,关于该项工程已经知道了什么,同时确立了下一步工作的基础。
软件工程基础知识(二)模拟题
[模拟] 软件工程基础知识(二)单选题第1题:在面向对象系统中,对象是基本的运行时实体,它______。
A.只能包括数据(属性)B.只能包括操作(行为)C.把属性和行为封装为一个整体D.必须具有显式定义的对象名参考答案:C在面向对象的系统中,对象是基本的运行时实体,它既包括数据(属性),也包括作用于数据的操作(行为)。
所以,一个对象把属性和行为封装为一个整体。
一个对象通常可由对象名、属性和操作3部分组成。
属性可以是一些数据,也可以是另一个对象。
每个对象都有它自己的属性值,表示该对象的状态。
对象中的属性只能通过该对象所提供的操作来存取或修改。
操作也称为方法或服务,它规定了对象的行为,表示对象所能提供的服务。
在统一建模语言(UML)中,______用于描述一组对象类、接口、协作和它们之间的关系。
其中关联的多重度是指______。
第2题:A.对象图B.类图C.用例图D.通信图参考答案:B第3题:A.一个类中能被另一个类调用的方法个数B.一个类的某个方法被另一个类调用的次数C.一个类的实例能够与另一个类的多少个实例相关联D.两个类所具有的相同的方法数和属性数参考答案:CUML提供了多类视图。
其中,类图展现了一组对象、接口、协作和它们之间的关系,在面向对象系统的建模中所建立的最常见的图就是类图,类图给出了系统的静态设计视图。
关联的多重度是指一个类的实例能够与另一个类的多少个实例相关联。
第4题:在有些程序设计语言中,一个给定的过程调用和响应调用需执行的代码的结合是在编译时进行的,这种绑定称为______。
A.静态绑定B.动态绑定C.过载绑定D.强制绑定参考答案:A绑定是一个把过程调用和响应调用需要执行的代码加以结合的过程。
在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。
动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时菜进行。
第5题:以下关于类继承的说法中,错误的是______。
软件工程实验报告(总)(二)
软件工程实验报告(总)(二)引言概述:本文为软件工程实验报告的第二部分,旨在对实验中的相关内容和结果进行详细阐述。
在本报告中,将从以下五个大点展开讨论:需求分析、系统设计、编码和测试、性能优化以及结果总结。
正文内容:一、需求分析1. 定义需求分析的目标和方法2. 收集用户需求并进行整理3. 确定功能性和非功能性需求4. 确定系统的用例和场景5. 制定需求规格说明文档二、系统设计1. 选择合适的架构和设计模式2. 制定系统的结构设计和模块划分3. 定义数据库的设计和表结构4. 设计用户界面和交互流程5. 制定详细的系统设计说明文档三、编码和测试1. 使用选定的编程语言和开发工具进行编码2. 编写单元测试用例并进行测试3. 进行集成测试和系统测试4. 进行用户界面测试和用户验收测试5. 进行代码的静态分析和质量评估四、性能优化1. 分析系统的瓶颈和性能问题2. 进行性能测试并收集性能数据3. 优化代码和算法以提高系统的响应速度4. 使用缓存和并发控制来提高系统的并发处理能力5. 进行系统负载测试和稳定性测试五、结果总结1. 对实验过程和结果进行总结和评价2. 分析实验中遇到的问题和解决方案3. 归纳实验中的经验教训和启示4. 提出改进和优化的建议5. 结尾陈述实验的意义和价值,展望未来的研究方向总结:通过本次实验,我们深入理解了软件工程的实践过程,并对需求分析、系统设计、编码和测试、性能优化等方面进行了全面的探索和实践。
我们成功完成了实验并取得了一系列有意义的结果。
然而,我们也面临了一些挑战和困难,但这些经历使我们更加成熟和富有经验。
在未来的研究中,我们将继续探索和改进软件工程的各个方面,以构建更加优质和高效的软件系统。
《软件工程》第2章_软件可行性研究
2.3 可行性研究报告
2.3 可行性研究报告
2.3 可行性研究报告
2.3 可行性研究报告
2.3 可行性研究报告
2.4 小结
可行性研究是抽象和简化了的系统分析和设计的全 过程,它的目标是用最小代价尽快确定问题是否能够解 决,以避免盲目投资带来的巨大浪费。可行性研究是从 技术上、经济上、使用上、法律上分析应解决的问题是 否有可行的解,从而确定该软件是否有可行的解。
上述可行性研究的步骤只是一个经过长期实践总结出来的 框架,在实际的使用过程中,它不是固定的,根据项目的性质、 特点以及开发团队对业务领域的熟悉程度会有些变化。
2.3 可行性研究报告
可行性研究可以归档为一个单独的报告,提供给上级管理 部门,又可以包括在“系统规格说明”的附录中,虽然可行性 报告的形式可以有多种,但最重要的内容应当有:
第二章 软件可行性研究
【本章引言】
在计算机的软件项目开发过程中,只要资源和时间 不加以限制,所有的项目都是可行的。然而,由于资源 缺乏和交付时间限制的困扰,使得基于计算机系统的开 发变得比较困难。因此,尽早对软件项目的可行性做出 细致而谨慎的评估是十分必要的。如果在定义阶段及早 发现将来可能在开发过程中遇到的问题及早做出决定, 可以避免大量的人力、财力、时间上的浪费。
本章简要的介绍了有关可行性研究的任务、步骤, 以及在撰写可行性研究报告时有哪些要求。
2.5 习题
1. 为什么要对计算机软件项目进行可行性研
究?
2. 可行性研究主要研究哪些问题?试说明之。 3. 可行性研究的任务是什么? 4. 可行性研究的步骤? 5. 撰写可行性研究报告的方法?
大学_软件工程第二部分(软件项目管理)复习试题及答案
软件工程第二部分(软件项目管理)复习试题及答案软件工程第二部分(软件项目管理)复习试题及答案(一)一单项选择1、软件生命周期一般包括:软件开发期和软件运行期,下述(D )不是软件开发期所应包含的内容。
A需求分析 B 结构设计 C程序编制 D软件维护2、软件是一种逻辑产品,它的开发主要是(A )。
A研制 B拷贝 C再生产 D复制3、以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( C )。
A喷泉模型 B 增量模型 C瀑布模型 D螺旋模型4、在软件生存周期中,( B )阶段必须要回答的问题是“要解决的问题是做什么?”。
A详细设计 B 可行性分析和项目开发计划 C概要设计 D软件测试5、软件产品与物质产品有很大区别,软件产品是一种(C )产品A有形 B 消耗 C逻辑 D文档6、 ( C )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。
A 原型模型B 螺旋模型C 基于知识的智能模型D 喷泉模型7、 ( B )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
A概要设计 B 详细设计 C 编码 D 测试8、下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是( A )。
A 原型模型B 瀑布模型C 基于知识的智能模型D 变换模型9、下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( C )。
A 原型模型B 瀑布模型C 喷泉模型D 螺旋模型10、下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( D )。
A 原型模型B 瀑布模型C 喷泉模型D 螺旋模型11、软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为( C )。
A可修改性 B可靠性 C可适应性 D 可重用性12、软件特性中,一个软件能再次用于其他相关应用的程度称为( B )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 对于一些规模较小的项目(1个人 年或者更少),只要向专家做些咨 询,也许一个人就可以完成所有的 软件工程步骤。 • 对一些规模较大的项目,在整个软 件生存期中,各种人员的参与情况 是不一样的。下面是各类不同的人 员随开发工作的进展在软件工程各 个阶段的参与情况的典型曲线。
2. 硬件资源
• 硬件是作为软件开发项目的一种工 具而投入的。 (1)宿主机(Host)─ 软件开发时 使用的计算机及外围设备; (2)目标机(Target)─ 运行已开 发成功软件的计算机及外围设备; (3)其它硬件设备 ─ 专用软件开发 时需要的特殊硬件资源;
3. 软件资源
• 软件工程人员在软件开发期间使用 了许多软件工具来帮助开发。这种 软件工具集叫做计算机辅助软件工 程(CASE)。 (1)业务系统计划工具集 (2)项目管理工具集 (3)支援工具──文档生成工具、 网络系统软件、数据库、电子邮件、 通报板,以及配置管理工具。
(4)分析和设计工具 (5)编程工具 (6)组装和测试工具 (7)原型化和模拟工具 (8)维护工具 (9)框架工具──这些工具能够提 供建立集成项目支撑环境(IPSE) 的框架。
软件项目计划的目标
• 软件项目管理人员在开发工作一开 始需要进行定量估算。 • 软件项目计划的目标是提供一个能 使项目管理人员对资源、成本和进 度做出合理估算的框架。 • 这些估算应当在软件项目开始时的 一个有限的时间段内做出,并且随 着项目的进展定期进行更新。
软件的范围
软件项目计划的第一项活动是确定软 件的范围。 • 软件范围包括功能、性能、限制、 接口和可靠性。 • 估算开始时,应对软件的功能进行 评价,对其进行适当的细化以便提 供更详细的细节。由于成本和进度 的估算都与功能有关,因此常常采 用某种程度的功能分解。
软件 库存情况更新 开发者 W.Ward 日期 2 / 8 / 82 阶 段 项目任务 工作量分布(1/53) 小计(1/53) 5 计划和需求 软件需求定义 1 6 开发计划 6 产品设计 3 产品设计 初步的用户手册 1 10 测试计划 4 详细PDL描述 4 详细设计 数据定义 2 过程设计 2 12 正式的用户手册 6 编码与 程序编码 10 16 单元测试 单元测试结果 4 组装与 编写文档 5 9 联合测试 组装与测试 53 总 计
经过分解, 识别出下列主要软件功能:
– – – – – – – 用户界面和控制功能 二维几何分析 三维几何分析 数据库管理 计算机图形显示功能 外设控制PC 设计分析模块
• 通过分解,可得到如下估算表
估算表
软件开发成本估算
• 软件开发成本主要是指软件开发过 程中所花费的工作量及相应的代价。 它不包括原材料和能源的消耗,主 要是人的劳动的消耗。 • 人的劳动消耗所需代价就是软件产 品的开发成本。 • 软件产品开发成本的计算方法不同 于其它物理产品成本的计算。
• 这种方法的优点是估算工作量 小,速度快。 • 缺点是对项目中的特殊困难估 计不足,估算出来的成本盲目 性大,有时会遗漏被开发软件 的某些部分。
自底向上的估计法
• 这种方法的主要思想是把待开发的 软件细分,直到每一个子任务都已 经明确所需要的开发工作量,然后 把它们加起来,得到软件开发的总 工作量。 • 它的优点是估算各个部分的准确性 高。缺点是缺少各项子任务之间相 互联系所需要的工作量,还缺少许 多与软件开发有关的系统级工作量.
软件开发中的资源
• 通常,对每一种资源,应说明以下 四个特性: (1)资源的描述; (2)资源的有效性说明; (3)资源在何时开始需要; (4)使用资源的持续时间。 • 最后两个特性统称为时间窗口。对 每一个特定的时间窗口,在开始使 用它之前就应说明它的有效性。
1. 人力资源
• 在考虑各种软件开发资源时,人是 最重要的资源。在安排开发活动时 必须考虑人员的技术水平、专业、 人数、以及在开发过程各阶段中对 各种人员的需要。 • 计划人员首先估算范围并选择为完 成开发工作所需要的技能。还要在 组织状况(如管理人员、高级软件 工程师等)和专业(如通信、数据 库、微机等)两方面做出安排。
• LOC和FP是两个不同的估算技术。 两者的共性在于: 项目计划人员
– 给出一个有界的软件范围的叙述 – 由此叙述尝试把软件分解成一些小的 可分别独立进行估算的子功能 – 对每一个子功能估算其LOC或FP – 把基线生产率度量(如LOC/PM (人月)或FP/PM)用做特定的估 算变量,导出子功能的成本或工作量 – 将子功能的估算进行综合后就能得 到整个项目的总估算。
–必须与新软件链接的现有的软 件(如数据库存取例程、子程序 包、操作系统); –通过终端或其它输入/输出设 备使用该软件的人; –该软件运行前后的一系列操作 过程。
• 对于每一种情况,都必须清楚 地了解通过接口的信息转换。
软件开发中的资源
• 软件项目计划的第二个任务是对完 成该软件项目所需的资源进行估算。 • 软件开发所需的资源有 • 现成的用以支持软件开发的工具 ──硬件工具及软件工具 • 最基本的资源 ──人
4. 软件复用性及软件部件库 • 为了促成软件的复用,以提高 软件的生产率和软件产品的质 量,可建立可复用的软件部件 库。
软件项目估算
• 软件成本和工作量的估算中变化的 东西太多,人、技术、环境、政治, 都会影响软件的最终成本和开发的 工作量。 • 软件项目的估算还是能够通过一系 列系统化的步骤,在可接受的风险 范围内提供估算结果。 • 成本估算必须“事前”给出。时间 越久,我们了解得越多,估算中出 现的严重误差就越少。
差别估计法
• 这种方法综合了上述两种方法的优 点,其主要思想是把待开发的软件 项目与过去已完成的软件项目进行 类比,从其开发的各个子任务中区 分出类似的部分和不同的部分。 • 类似的部分按实际量进行计算,不 同的部分则采用相应方法进行估算。 • 这种方法的优点是可以提高估算的 准确程度,缺点是不容易明确“类 似”的界限。
⑤ 上述过程可重复多次。最终可获 得一个得到多数专家共识的软件规 模(源代码行数)。在此过程中不 得进行小组讨论。 • 最后,通过与历史资料进行类比, 根据过去完成软件项目的规模和成 本等信息,推算出该软件每行源代 码所需要的成本。然后再乘以该软 件源代码行数的估算值,就可得到 该软件的成本估算值。
质量保证计划 将软件开发的质量要求具体规定为 每个开发阶段可以检查的质量保证。 软件测试计划 规定测试活动的任务、方法、进度、 资源、人员职责。 文件编制计划 规定软件开发项目应编写文件种 类、内容、进度、人员职责。
用户培训计划 对用户进行技术培训的目标、要 求、进度、人员职责。 综合支持计划 项目开发过程中所需支持条件 软件分发计划 确定软件项目如何提供给用户
• 项目计划人员可对每一个分解的功 能提出一个有代表性的估算值范围。 • 利用历史数据或凭实际经验(当其 它的方法失效时),对每个功能分 别按最佳的、可能的、悲观的三种 情况给出LOC或FP估计值。记作a、 m、b。 • 接着计算LOC或FP的期望值 E。
E = (a+4m+b)/6
• 所有子功能的总估算变量值除以相 应于该估算变量的平均生产率度量 得到项目的总工作量。 • 例如,若假定总的FP估算值是310, 基于过去项目的平均FP生产率是 5.5FP/PM,则项目的总工作量是: 工作量 = 310/5.5 = 56 PM 作为LOC和FP估算技术的实例, 考察一个为计算机辅助设计(CAD) 应用而开发的软件包。
第二部分 软件计划
软件的范围 软件开发中的资源 软件项目估算 进度安排 软件计划文件与复审
软件计划内容
针对不同的目标,软件工程项目需 要对各阶段制定相应的工作计划 软件开发计划 是软件开发的综合性计划,包括任 务、进度、人力、环境、资源和组 织。其目的是提供一个框架,项目 管理人员对资源、成本以及进度进 行合理的估算。在项目开始时完成。
专家判定技术
• 由多位专家进行成本估算 • 单独一位专家可能会有种种偏见, 譬如有乐观的、悲观的、要求在竞 争中取胜的、让大家都高兴的种种 愿望及政治因素等。 • 最好由多位专家进行估算,取得多 个估算值。 • 有多种方法把这些估算值合成一个 估算值。
• 一种方法是简单地求各估算值的中 值或平均值。其优点是简便。缺点 是可能会由于受一、二个极端估算 值的影响而产生严重的偏差。 • 一种方法是召开小组会,使各位专 家们统一于或至少同意某一个估算 值。优点是可以摈弃蒙昧无知的估 算值,缺点是一些组员可能会受权 威或政治因素的影响。
• 性能的考虑包括处理和响应时 间的需求。 • 约束条件则标识产品成本、外 部硬件、可用存储或其它现有 系统对软件的限制。 • 功能、性能和约束必须在一起 进行评价。当性能限制不同时, 为实现同样的功能,开发工作 量可能相差一个数量级。
软件与其它系统元素是相互作用的。 要考虑每个接口的性质和复杂性, 以确定对开发资源、成本和进度的 影响。接口的概念可解释为: –运行软件的硬件(如处理机与外 设)及间接受软件控制的设备 (如机器、显示器);
分解技术
• 当一个待解决的问题过于复杂时, 我们可以把它进一步分解,直到分 解后的子问题变得容易解决为止。 然后,分别解决每一个子问题,并 将这些子问题的解答综合起来,从 而得到原问题的解答。
LOC和FP(功能点)估算
• 在软件项目估算中,在两个方面 使用了LOC和FP数据:
– 把LOC和FP数据当做一个估算变 量,用于量度软件每一个元素的规 模。 – LOC和FP数据作为从过去项目中 收集到的基线数据,与其它估算变 量联合使用, 进行成本和工作量的 估算。
• 软件的开发成本是以一次性开 发过程所花费的代价来计算的。 • 软件开发成本的估算,应是从 软件计划、需求分析、设计、 编码、单元测试、组装测试到 确认测试,整个软件开发全过 程所花费的代价作为依据的。
软件开发成本估算方法
• 对于一个大型的软件项目,由于项 目的复杂性,开发成本的估算不是 一件简单的事,要进行一系列的估 算处理。主要靠分解和类推。 • 基本估算方法分为三类。