《软设(软件工程)41982.docx》由会员分享,可在线阅读,更多相关《软设(软件工程)41982.docx(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、专题七:软件工程专题1、软件工程知知识1.1概述软件工程是指应应用计算机科科学、数学及及管理科学等等原理,以工工程化的原则则和方法来解解决软件问题题的工程。其其目的是提高高软件生产率率、提高软件件质量、减低低软件成本。软件工程是19968年在德德国的NATTO会议上提提出的,希望望用工程化的的原则和方法法来克服软件件危机;而软软件危机就是是软件开发和和维护过程中中的各种问题题,由于软件件开发阶段缺缺乏好的方法法的指导和好好的工具的辅辅助,而且缺缺少有关的文文档,使得大大量的软件难难以维护。软件生命周期是是指由软件定定义、软件开开发和软件维维护等阶段组组成的全过程程,反映软件件生存期内各各种工作
2、得组组织以及各个个阶段如何衔衔接。下表归归纳了软件生生存周期各个个阶段的任务务、参与人员员和产生文档档。常见的软件开开发模型有瀑瀑布模型、演演化模型、螺螺旋模型和喷喷泉模型等。阶段任务参与人员产生文档软件定义阶段待开发软软件要“做什么”系统分析确定待开发软件件的总体要求求和适用范围围,以及与之之有关的硬件件、支撑软件件的要求用户、项目负责责人、系统分分析员可合并项目计划划书中软件项目计划确定待开发软件件的目标,对对其进行可行行性分析,并并对资源分配配、进度安排排等做出合理理的计划用户、项目负责责人、系统分分析员可行性分析报告告、项目计划划书需求分析确定待开发软件件的功能、性性能、界面等等要求,
3、从而而确定系统的的逻辑模型用户、项目负责责人、系统分分析员需求规格说明书书软件开发阶段待开发软软件“怎么做”软件设计概要设计模块分解,确定定软件的结构构,模块的功功能和模块间间的接口,以以及全局数据据结构的设计计系统分析员、高高级程序员设计说明书、数数据说明书、模模块开发卷宗宗详细设计设计每个模块的的实现细节和和局部数据结结构的设计高级程序员、程程序员编码用某种程序语言言为每个模块块编写程序高级程序员、程程序员程序清单软件测试发现软件中的错错误,并加以以纠正高级程序员或系系统分析员(另另一部门或单单位)软件测试计划、软软件测试用例例说明,软件件测试报告软件维护阶段开发后交付付使用的软件件的维护
4、软件维护使软件适应外界界环境的变化化、实现功能能的扩充和质质量的改善而而修改软件维护人员维护计划、维护护报告软件由计算算机程序、数数据及文档组组成,同时与与硬件、数据据库人、过程程等共同构成成计算机系统统。软件工程程包括三个要要素:方法、工工具和过程。主要的软件件开发方法有有以下几种方方法:生命周期法法:命周期法法认为:每一一个软件系统统都有一定的的生命周期。软软件的生命周周期是指一个个软件系统从从其提出、调调查到分析、设设计和有效使使用,直至被被淘汰或取代代的整个期间间。软件生命命周期法就是是按软件生命命周期的各个个阶段划分任任务,按一定定的规则和步步骤,有效地地进行软件开开发的方法。通常一
5、个软软件系统的生生命周期可分分为五个阶段段:准备阶段段、分析阶段段、设计阶段段、实施阶段段、运行与维维护阶段原型法:原原型法是先根根据用户的最最主要要求,开开发出能实现现系统最基本本功能的一个个原型,再根根据用户对原原型使用与评评价的意见,反反复修改完善善原型,直到到等到用户满满意的最终系系统为止。原型法分44个阶段:确确定用户需求求;设计原型型;使用、评评价原型;修修改、完善原原型。1.2软件分析析 软软件开发模型型:瀑布模型型;演化模型型(原型法);螺旋模型;喷泉模型(迭迭代和无间隙隙);软件成成本模型;可可行性分析的的任务是从技技术上、经济济上、使用上上、法律上分分析需解决的的问题是否存
6、存在可行的解解。 需求分析是是软件生存周周期中相当重重要的一个阶阶段。需求分分析主要是确确定待开发软软件的功能、性性能、数据、界界面等要求。具具体有以下几几点: 确定软软件系统的综综合要求 分析软软件系统的数数据要求 导出系系统的逻辑模模型 修正项项目开发计划划 如有必必要,可开发发一个原型系系统 需求分分析的基本原原则是能够表表达和理解问问题的信息域域和功能域;以层次化的的方式进行分分解和不断细细化;要给出出系统的逻辑辑视图和物理理视图;描述软件需求的的方法:功能层次模型:一般来讲就就是系统的功功能图,模块块分布图等描描述整个系统统的功能的分分布和功能的的层次结构;数据流模型:就就是以数据流
7、流为着眼点的的分析方法得得到的模型,主主要通过数据据在整个系统统的流动情况况来确定系统统的主要功能能主线和流程程;控制流模型:通通过了解和界界定系统中控控制线,通过过控制流的走走向和控制的的对象来确定定系统的功能能分布和控制制与被控制的的关系;结构化分析(SSA)方法是是一种面向数数据流的需求求分析方法,它它适用于分析析大型数据处处理系统。结结构化分析方方法的基本思思想是自顶向向下逐层分解解,这样做可可以把一个大大问题分解成成若干个小问问题,经过多多次逐层分解解,每个最底底层的问题都都是足够简单单、容易解决决的,这个过过程就是分解解的过程。结构化方法的分分析结果由数数据流图DFFD、数据词词典
8、和加工逻逻辑说明几个个部分组成。其其中,DFDD的基本成分分有数据流(ddata fflow)、加加工(proocess)、文文件(fille)和源/宿(souurce/ssink)。n 画数数据流图的基基本步骤:自自外向内、自自顶向下、逐逐层细化、完完善求精;n 数据据流图的父图图与子图要平平衡, 即输输入和输出的的数据流一致致;n 数据据流图中的每每个加工至少少有一个输入入数据流和一一个输出数据据流;n 局部部的数据存储储不画出来,只只有当局部数数据存储作为为某些数据加加工之间的数数据接口才画画出,这有利利于信息隐蔽蔽;n 画数数据流的时候候不画控制流流,两者的区区别就是控制制流中没有数数
9、据;n 一个个加工的数据据流与输出流流不应该同名名;n 允许许一个加工有有多条数据流流流向另一个个加工,也允允许一个加工工有两个相同同的输出流向向两个不同的的加工;n 保持持数据守恒:一个加工的的所有输出数数据必须能从从该加工的所所有的输入流流中获得;n 在整整套数据流图图中,每个文文件都必须既既有读文件的的数据流也有有写文件的数数据流;软件开发过程中中的软件工程程原则(8个个): 抽象; 自顶向向下、逐层细细化; 信息隐隐蔽和数据封封装; 模块化化; 局部化化; 确定性性; 一致性性和标准化; 完备性性和可验证性性;软件工程基本原原理(7个):n 按软软件生存周期期分阶段指定定计划并认真真实
10、施;n 坚持持进行阶段评评审;n 坚持持严格的产品品控制;n 使用用现代程序设设计技术;n 明确确责任,使得得工作结果能能够得到清楚楚的审查;n 用人人少而精;n 不断断改进开发过过程;1.3软件设计计软件设计原则: 软件设计计的原则对提提高软件的设设计质量有很很大的帮助。 抽象抽象是指忽视一一个主题中与与当前目标无无关的那些方方面,以便更更充分地注意意与当前目标标有关的方面面。过程抽象象和数据抽象象是常用的两两种主要抽象象手段。 模块化模块化是指将一一个待开发的的软件分解成成若干个小的的简单的部分分模块,每每个模块可独独立地开发、测测试、最后组组装成完整的的软件。这是是一种复杂问问题的“分而
11、治之”的原则。模块是指执行某某一特定任务务的数据结构构和程序代码码。一个模块块有它的外部部特征和内部部特征。 信息隐蔽信息隐蔽是开发发整体程序结结构时使用的的法则,即将将每个程序的的成分隐蔽或或封装在一个个单一的设计计模块中,定定义每一个模模块时尽可能能少地显露其其内部的处理理。信息隐蔽蔽原则对提高高软件的可修修改性、可测测试性和可移移植性都有重重要的作用。 模块独立模块独立是指每每个模块完成成一个相对独独立的子功能能,并且与其其他模块之间间的联系简单单。衡量模块块独立程度的的度量标准有有两个:耦合合和内聚。耦合是指模块之之间联系的紧紧密程度。耦耦合度越高则则模块的独立立性越差。按按耦合度从低
12、低到高依次有有7种耦合方方式。 非直接接耦合(独立立运行) 数据耦耦合(用参数数表传递简单单数据) 标记耦耦合(传递数数据结构或者者一部分) 控制耦耦合(传递的的信息包括控控制模块的信信息) 外部耦耦合(模块与与软件之外的的环境有关) 公共耦耦合(多个模模块引用同一一全局的数据据区) 内容耦耦合(访问内内部数据,代代码重叠或者者多个入口)内聚是指模块内内部各元素之之间联系的紧紧密程度内聚聚度越低模块块的独立性越越差。按内聚聚度从低到高高依次有7种种内聚种类。 偶然内内聚(模块完完成的多个任任务,任务之之间的关系松松散) 逻辑内内聚(模块完完成逻辑相关关的一组任务务) 瞬时内内聚(模块的的所有任
13、务必必须在同一时时间间隔内执执行) 过程内内聚(模块的的处理元素相相关而且按照照特定的次序序执行) 通信内内聚(模块的的所有元素集集中在一个数数据结构区域域上) 顺序内内聚(模块的的处理元素相相关,必须顺顺序执行) 功能内内聚(模块完完成单一的功功能,各个部部分协调工作作,而且不可可缺少)模块分解原则: 满足信信息隐蔽; 尽量内内聚度高,模模块间偶合度度低; 模块大小小在(50-100语句句); 模块调调用深度不能能过大; 模块的的扇入(直接接调用该模块块)应尽量大大,扇出(直直接调用下级级模块数)不不宜过大; 设计单单入口和单出出口的模块; 模块的的作用域应在在控制域之内内:作用域:受模块块
14、内一个判定定影响的所有有的模块的集集合;控制域:该模块块本身和被该该模块直接或或间接调用的的所有的模块块的集合; 模块的的功能应是可可以预测的,相相同输入得到到相同输出结构化设计方法法结构化设计(SSD)方法是是一种面向数数据流的设计计方法,它可可以与SA方方法衔接。结构化设计采用用结构图(SSC)来描述述程序的结构构。其基本成成分有模块、调调用和输入/输出数据。结构图: 条件调用循环调用用 在需求求分析阶段用用SA方法产产生了数据流流图(DFDD)。面向数数据流的设计计可以方便的的将DFD转转换成程序结结构图。DFFD从系统的的输入数据流流到系统的输输出数据流的的一连串连续续变换形成一一条信
15、息流。DDFD的信息息流大体可分分为两种类型型:变换流和和事务流。与与之对应的也也存在两种分分析,变换分分析和事务分分析。变换分分析是从变换换流型的DFFD导出程序序结构图,而而事务分析则则是从事务流流行型的DFFD导出程序序结构图。SD方法的具体体设计步骤为为: 复查并并精化数据流流图 确定DDFD的信息息流类型 根据信信息流类型分分别将变换流流或事务流转转换成程序结结构图 根据软软件设计的原原则对程序结结构图作改进进结构化程序设计计结构化程序(SSP)设计采采用自顶向下下逐步求精的的设计方法和和单入口单出出口的控制结结构。结构化程序设计计的描述工具具主要有图形形描述工具、语语言描述工具具和
16、表格描述述工具。常用用的图形描述述工具有程序序流程图、盒盒图(NS图图)和问题分分析图(PAAD)。典型型的语言描述述工具是PDDL(proogram desiggn lannguagee)。典型的的表格描述工工具是判定表表和判定树。面向数据结构的的Jacksson方法也也十分常用: Jacckson方方法是以数据据结构为设计计基础,设计计目标是得出出对程序处理理过程的描述述,其设计过过程是从描绘绘数据结构的的Jacksson图推导导出描绘程序序结构的Jaacksonn图。这种方方法最适合于于详细设计阶阶段使用。Jacksonn方法的具体体设计步骤为为: 分析并并确定输入和和输出的数据据的逻辑
17、结构构,并用Jaacksonn图表示 找出输输入数据结构构与输出数据据结构间有对对应关系的数数据单元 从描述述数据结构的的Jacksson图导出出描述程序结结构的Jacckson图图软件编码:根据详细设计说说明书编写程程序,为开发发项目选择程程序设计语言言需要考虑的的因素有应用用领域、算法法和计算的复复杂性、软件件运行环境、用用户需求、数数据结构和开开发人员的水水平。软件的的设计质量与与程序设计语语言的技术性性能无关,但但在程序设计计转向程序代代码时,转化化的质量受语语言性能的影影响。好的程序应该具具有模块化结结构,系统应应该有较高的的模块独立性性。从应用领域看,CCOBOL适适合商业领域域;
18、FORTTRAN适合合科学计算;PROLOOG和LISSP适合人工工智能领域;SMALLLTALK、CC+、JAAVA是面向向对象语言;C是开发系系统的程序设设计语言;例题1:软件设计中划分分模块的一个个准则是A 。两个模块块之间的耦合合方式中,BB耦合的耦合合度最高,CC耦合的耦合合度最低。一一个模块内部部的内聚种类类中D内聚的内聚聚度最高,EE内聚的内聚聚度最低。A: 低内聚聚低耦合 低内聚高耦耦合 高内聚低耦耦合 高内聚高耦耦合B: 数据 非直接 控制 内容C: 数据 非直接 控制 内容D: 偶然 逻辑 功能 过程E: 偶然 逻辑 功能 过A 3 BB 4 C 2 D 3 E 1例题2关
19、于程序模块优优化的启发式式规则有若干干条,以下规规则中不符合合优化原则的的是_B_。如果一一个模块调用用下层模块时时传递一个数数据结构,则则这种耦合属属于_C_。(软软件工程)(30)A通通过模块的合合并和分解,降降低模块的耦耦合度,提高高模块的内聚聚性B提高上层模模块的扇出,减减少模块调用用的层次C将模块的作作用范围限制制在模块的控控制范围之内内D降低模块之之间接口的复复杂性,避免免“病态连接”(31)A简简单耦合B直接耦合C.标记耦合D控制耦合1.4软件测试试对源程序最基本本的质量要求求是正确性和和可靠性,此此外还很注重重软件的易使使用性、易维维护性和易移移植性。软件件测试的工作作量约占软
20、件件开发总工作作量的40%以上,其目目的是尽可能能多的发现软软件产品(主主要是指程序序)中的错误误和缺陷。软件测试是自底底向上,逐步步集成的过程程,低一级测测试为上一级级测试准备条条件;测试的关键是测测试用例的设设计,其方法法可分为两类类。白盒测试:白盒测试是根据据程序的内部部逻辑来设计计测试用例,常常用的技术是是逻辑覆盖,即即考察用例测测试数据运行行被测程序时时对程序逻辑辑的覆盖程度度。主要的覆覆盖标准有66种:I.语句覆盖盖指选择足够的测测试用例,使使被测语句的的每个语句至至少执行一次次。II.判定覆盖盖指选择足够的测测试用例,使使每个判定的的所有可能结结果至少出现现一次。III.条件覆覆
21、盖指选择足够的测测试用例,使使判定中的每每个条件的所所有可能结果果至少出现一一次。IV. 判定/条件覆盖指选择足够的测测试用例,使使判定中的每每个条件的所所有可能结果果至少出现一一次,并且每每个判定中条条件结果的所所有可能组合合也至少出现现一次。V.条件组合合覆盖指选择足够的测测试用例,使使每个判定中中条件结果的的所有可能组组合至少出现现一次。VI. 路径覆覆盖指选择足够的测测试用例,使使流程图中的的每条路径至至少经过一次次。黑盒测试:黑盒测试时根据据规格说明所所规定的功能能来设计测试试用例,它不不考虑程序的的内部结构和和处理过程。常常用的黑盒测测试技术有: 等价类类划分 边值划划分 错误猜猜
22、测软件测试的主要要步骤有单元元测试、集成成测试和确认认测试。单元测试:主要用来发现编编码和详细设设计中产生的的错误,一般般在编码阶段段,采用白盒盒测试。集成测试(也称称组装测试):主要用来发现设设计阶段产生生的错误,是是对各模块组组装而成的程程序进行测试试,主要检查查模块间的接接口和通信,采采用黑盒测试试。集成测试按集成成方式又可分分成非渐增式式集成和渐增增式集成,而而渐增式集成成又可分成自自顶向下集成成和自底向上上集成。确认测试:检查软件的功能能、性能和其其他特征是否否与用户需求求一致,它以以需求规格说说明书作测试试为依据,采采用黑盒测试试Alpha测试试是在开发者者的现场由客客户来实施的的
23、,从用户角角度和环境下下进行;Beta测试是是在开发者不不在现场下测测试,由软件件最终用户实实施;使用各种测试方方法的综合策策略:n 在任任何情况下都都必须使用边边界值分析方方法,用这种种方法设计出出测试用例发发现程序错误误的能力最强强;n 必要要时用等价类类划分方法补补充一些测试试用例;n 用错错误推测法再再追加一些测测试用例n 对照照程序逻辑,检检查已有测试试用例的逻辑辑覆盖程度n 如果果程序的功能能说明中含有有输入条件的的组合情况,则则选用因果图图法例题:软件测试的目的的是A 。通常B是在代码编编写阶段可进进行的测试,它它是整个测试试工作的基础础。逻辑覆盖标准主主要用于C 。它主要包包括
24、条件覆盖盖、条件组合合(多重条件件)覆盖、判判定覆盖、条条件及判定覆覆盖、语句覆覆盖和路径覆覆盖等几种,其其中除路径覆覆盖外最弱的的覆盖标准是是D ,最强的的覆盖标准EE 。A: 表明软件的的正确性 评价软件质质量 尽可能发现现软件中错误误 判定软件是是否合格B: 系统测试 安装测试 验收测试 单元测试C: 黑盒测试方方法 白盒测试方方法 灰盒测试方方法 软件验收方方法D、E: 条件覆盖 条件组合覆覆盖 判定覆盖 条件及判定定覆盖 语句覆盖A: B: C: D: E:1.5软件开发发工具与环境境(CASEE)用来辅助软件开开发、运行、维维护、管理和和支持等过程程中的活动的的软件称为软软件工具,
25、通通常也称为CCASE(计计算机辅助软软件工程)工工具。整个软件开发过过程要使用很很多开发工具具,其中包括括分析工具、设设计工具、编编程工具、测测试工具、维维护工具等等等。软件开发工具是是指支持软件件产品开发的的软件系统,它它由软件工具具集和环境集集成机智构成成。工具集包包括支持软件件开发相关过过程、活动、任任务的软件工工具;环境集集成机智为工工具集成和软软件开发、维维护和管理提提供统一的支支持。软件开发环境是是把一组相关关的工具集成成在环境中,提提供数据集成成、控制集成成和界面集成成等机制。其其中: 数据集集成机制:提提供统一的数数据模式和数数据接口规范范,需要相互互协同的工具具通过这种统统
26、一的规范交交换数据。数数据集成可由由共享文件、共共享数据结构构或共享信息息库等不同的的层次; 控制集集成机制:支支持各工具或或各开发活动动之间的通信信、切换、调调度和协同工工作,并且支支持软件开发发过程的描述述、执行和转转接;通常消消息传送的方方式实现控制制的集成。 界面集集成机制使这这些工具具有有统一的界面面风格,从而而为软件开发发、维护、管管理等过程的的各项活动提提供连续的、一一致的全方位位支持。集成型软件开发发环境由工具具集和环境集集成机制组成成,这种环境境应该具有开开放性和可剪剪裁性;环境集成机制的的核心是环境境数据库。1.6软件维护护和软件管理理软件开发项目管管理基础知识识(时间管理
27、理、成本管理理、质量管理理、人力资源源管理、风险险管理等)及及其常用管理理工具 软件维护阶阶段是指从软软件交付使用用到软件被淘淘汰为止的整整个时期,它它是在软件交交付使用后,为为了改正软件件中隐藏的错错误,或者为为了使软件适适应新的环境境,或者为了了扩充和完善善软件的功能能或性能而修修改软件的过过程。根据引引起软件维护护的原因,软软件维护通常常可分成改正正性维护、适适应性维护、完完善性维护、预预防性维护。软件管理工作涉涉及到软件开开发工作的方方方面面,其其直接对象包包括人、财、物物,简单地说说,人就是指指软件开发人人员,财就是是指项目经费费,物就是指指软件项目。也也许还没有关关于这方面的的专门
28、理论,但但在工商管理理领域已经有有十分成熟的的管理学理论论,他山之石石,可以攻玉玉,所以我们们完全可以引引进到软件项项目方面的管管理。作为软件管理人人员,应该站站在高处来俯俯瞰整个项目目,如果有不不识庐山真面面目的感觉就就不太好了。有有了俯瞰全局局的意识这一一前提,采用用适当的管理理技术,项目目开展就容易易罗。软件项项目的管理工工作可以分位位四个方面:软件项目的的计划、软件件项目的组织织、软件项目目的领导和软软件项目的控控制. 1 软件项目的的计划软件开发项项目的计划包包括定义项目目的目标,以以及达到目标标的方法。他他涉及到项目目实施的各个个环节,带有有全局的性质质,是战略性性的。计划应应力求
29、完备,要要考虑到一些些未知因素和和不确定因素素,考虑到可可能的修改。计计划应力求准准确,尽可能能提高所依据据的数据的可可靠程度。主主要工作集中中在软件项目目的估算、软软件开发成本本的估算和软软件项目进度度安排。软件件项目计划的的目标是提供供一个能使项项目管理人员员对资源、成成本和进度做做出合理估算算的框架。这这些估算应在在软件项目开开始时的一段段有限时间内内作出,并随随着项目的进进展进行更新新。2 软件项目的的估算软件项目管管理过程开始始于项目的计计划,在做项项目计划时,第第一项活动是是估算。现在在已经使用的的使用技术是是时间和工作作量的估算。因因为估算是其其他项目计划划活动的基石石,而且项目
30、目计划又未软软件工程过程程提供了工作作方向,所以以我们不能没没有计划就着着手开发,否否则就会陷入入盲目性。估算本身带带有风险,估估算资源、成成本和项目进进度时需要经经验、有用的的历史信息、足足够的定量数数据和作定量量度量的勇气气。估算的精精确程度受到到多方面的影影响。首先,项项目的复杂性性对于增加软软件计划的不不确定性影响响很大,复杂杂性越高,估估算的风险就就越高。复杂杂性是相对度度量的,他与与项目参加人人员的经验有有关,比如如如果让搞MIIS的项目组组去搞操作系系统设计显然然增加了复杂杂性。其次,项项目的规模对对于估算的精精确性和功效效的影响也比比较大,因为为随着软件规规模的扩大,软软件相同
31、元素素之间的相互互依赖、相互互影响也迅速速增加,因而而估算时进行行问题分解也也会变得更加加困难。还有有项目的结构构化程度也影影响项目估算算的风险,这这里的结构性性是指功能分分解的简便性性和处理信息息的层次性,结结构化程度提提高,进行精精确估算的能能力就提高,相相应风险将减减少。此外,历历史信息的有有效性也影响响估算的风险险,在对过去去的项目进行行这综合的软软件度量之后后,就可以借借用来比较准准确地进行估估算。影响估估算的因素远远不止这些,比比如用户需求求的频繁变更更给估算带来来非常大的影影响。估算的依据据是软件的范范围,包括功功能,性能、限限制、接口和和可靠性。在在估算开始之之前,应对软软件的
32、功能进进行评价,并并对其进行适适当的细化以以便提供更详详细的细节。由由于成本和进进度的估算都都与功能有关关,因此常常常采用功能分分解的办法。性性能的考虑主主要包括处理理和响应时间间的需求。约约束条件则标标识外部硬件件、可用存储储和其他现有有系统对软件件的限制。另外软件项项目计划还要要完成资源估估算,包括人人力资源、硬硬件资源和软软件资源。在在考虑各种软软件开发资源源时最重要的的是人,必须须考虑人员的的技术水平、专专业、人数以以及在开发过过程各阶段对对各种人员的的需要。硬件件资源作为一一种工具投入入。软件资源源包括各种帮帮助开发的软软件工具,比比如编程工具具、管理工具具、测试工具具,还有操作作系
33、统和数据据库等。工作两估算算是最普遍使使用的技术。经经过功能分解解之后,可以以估计出每一一个项目任务务的分解都需需要花费若干干人年,总计计之后就知道道软件项目总总体工作量。下下面就是一个个示意性工作作量估算表。表格 1 某软软件系统工作作量估算表(单单位:人日)任务需求分析设计编码测试小计用户定义2510.58.5系统定义2510.58.5广告预定41020.516.5划版520100.535.5制作和组版353112总计164517381软件开发成本的的估算软件开发成成本主要是指指软件开发过过程所花费的的工作量及其其相应的代价价。它不同于于其他物理产产品的成本,它它主要包括人人的劳动的消消耗
34、,人的劳劳动的消耗所所需的代价就就是软件产品品的开发成本本。开发成本的的估算方法有有很多种,象象简单的代码码行技术,任任务分解技术术,自动估计计成本技术,专专家判定技术术,还有参数数方程法,标标准值法,以以及COCOOMO模型法法。其中COOCOMO (Consstructtive CCost MModel)模型法是一一种精确、易易于使用的成成本估算方法法,该模型按按其详细程度度分为三级:基本COCCOMO模型型、中间COOCOMO模模型和详细CCOCOMOO模型软件项目进度度安排软件项目的的进度安排主主要是考虑软软件交付用户户使用的这一一段开发时间间的安排。进进度安排的准准确程度可能能比成本
35、估计计的准确程度度更重要。软软件产品可以以靠重新定价价或者靠大量量的销售来弥弥补成本的增增加,但进度度安排的落空空会导致市场场机会的丧失失或者用户不不满意,而且且也会导致成成本的增加。因因此在考虑进进度安排时要要把人员的工工作量与花费费的时间联系系起来,合理理分配工作量量,利用进度度安排的有效效分析方法严严密监视软件件开发的进展展情况,以使使得软件开发发的进度不致致被拖延。在进行进度度安排时要考考虑的一个主主要问题是任任务的并行性性问题。当参参加项目的人人数不止一人人是软件开发发工作就会出出现并行情况况。因为并行行任务是同时时发生的所以以进度计划表表必须决定任任务之间的从从属关系,确确定各个任
36、务务的先后次序序和衔接,确确定各个任务务完成的持续续时间。另外外还应注意关关键路径的任任务,这样可可以确定在进进度安排中应应保证的重点点。常用的进进度安排方法法有两种,即即甘特图(GGantt Chartt)法和工程程网络法。3.软件项目的的组织参加软件开开发的人员如如何组织起来来,使他们发发挥最大的工工作效率,对对成功地完成成软件项目极极为重要。组织结构开发组织采采用什么形式式由软件项目目的特点决定定,同时也与与参加人员的的素质有关。通通常有三种组组织结构模式式: 11. 按课题题组划分的模模式:把开发发人员按课题题组成小组,小小组成员自始始至终承担课课题的各项任任务。该模式式适用于规模模不
37、大的项目目,并且要求求小组成员在在各方面有技技术专长。2. 按按职能划分的的模式:把开开发项目的软软件人员按任任务的工作阶阶段划分为若若干工作小组组。要开发的的软件在每个个专业小组完完成阶段加工工后沿工序流流水线向下传传递。这种流流水作业的方方式使用于多多项目并行的的情况。3. 矩阵阵形模型:这这种模式是以以上两种模式式的复合。一一方面按工作作性质成立一一些专门小组组,另一方面面每一个项目目都有它的经经理人员负责责。每一个软软件开发人员员属于某一个个专门小组,有有参加某一个个项目的工作作。该模式的的优点有一方方面参加专门门组的成员可可以在组内交交流在各个项项目中取得的的经验,这更更有利于发挥挥
38、专业人员的的作用;另一一方面,各个个项目有专门门的人员负责责,有利于软软件项目的完完成。这种模模式比较适合合于规模比较较大的项目。组织结构的的最后一层是是程序设计小小组的组织形形式。通常认认为程序设计计工作是按独独立的方式进进行的,程序序人员独立地地完成任务。但但这并不意味味着相互之间间没有联系。一一般在人数比比较少时组员员之间的联系系比较简单,但但随着人数的的增加,相互互之间的联系系变得负责起起来。小组内内部人员的组组织形式对对对生产率有着着十分重要的的影响。常见的小组组组织形式有有三种,这三三种形式可以以灵活使用。 1. 主程序员制制小组:相当当于组长负责责制,小组的的核心由一位位主程序员
39、,另另外配备两到到三位技术员员、一位后援援工程师组成成。这种组织织结构突出主主程序员的领领导,强调主主程序员与其其他技术人员员的联系。2. 民民主制小组:在民主制小小组中,遇到到问题可以在在组员之间平平等地交换换换意见,工作作组目标的制制定以及决定定的作出都由由全体人员参参加。这种组组织形式强调调发挥每个成成员的积极性性,并要求每每个成员发挥挥主动精神和和协作精神。3. 层次式小组:在层次式小组中,组内人员分位三级:组长(项目负责人)一人负责全组工作,他直接领导两到三名高级程序员,每位高级程序员通过基层小组,管理若干位程序员。这种结构比较适合于项目本身就是层次结构的课题。人员配备合理地配备备人
40、员是成功功地完成软件件项目的切实实保证。所谓谓合理地配备备人员应包括括按不同阶段段适时运用人人员,恰当掌掌握用人标准准。一般来说说,软件项目目不同阶段不不同层次技术术人员的参与与情况是不一一样的。下图图是典型的软软件开发人员员参与情况曲曲线。在人力配备备问题上,由由于配置不当当,很容易造造成人力资源源的浪费,并并延误工期。特特别是采用恒恒定人员配备备方案时在项项目的开始和和最后都会出出现人力过剩剩,而在中期期又会出现人人力不足的情情况。4.软件项目的的领导5.软件项目的的控制对后面两个个主题以后再再讨论。其实实本文所讨论论的东西大多多还没有涉及及太多管理学学方面的内容容,但这方面面确实有许多多
41、值得研究的的东西,由于于时间关系不不能深入下去去。姑且作为为一个引子吧吧!1.7面向对象象技术1.7.1面向向对象的基本本概念面向对象(obbject-oriennted,OOO)方法是是以客观世界界中的对象为为中心,其分分析和设计思思想符合人们们的思维方式式,分析和设设计的结果与与客观世界的的实际比较接接近,容易被被人们所接受受。下面列举举几个面向对对象设计方法法中的重要术术语,它们构构成面向对象象的程序设计计语言的核心心。对象(Objject)对象是和有数据据及可对这些些数据施加的的操作结合在在一起所构成成的独立单位位的总称。一一个对象通常常可由对象名名、属性和操操作三部分组组成。对象的划
42、分判定定标准:1、 子对对象之间独立立性要高,即即耦合度尽量量达到最低,(理理想的情况是是达到组件化化的程度);2、 子对对象相对其他他划分方法,更更易于处理。所所以对于复杂杂的大系统,一一般都要经过过多次的尝试试,以尽量能能找到较优的的划分方案。对对于比较简单单的系统,EE-R转换也也能的到较为为满意的划分分。实例(Insstancee)实例是由某个特特定类所描述述的一个对象象。类(Classs)类是一组具有相相同属性和相相同操作的对对象的集合。类类是面向对象象的程序设计计语言提供的的可再用软件件成分。方法(Metthod)对象所能执行的的操作称为方方法。方法是是类中定义的的函数,描述述对象执行操操作的算法。消息(Messsage)消息是要求某个个对象执行类类中定义的某某个操作的规规格说明。一一个消息通常常包括接受对对象名、调用用的操作名和和适当的参数数(如有必要要)。主要特点:封装性封装性是一种信信息隐蔽技术术,它使系统统分析员能够够清晰地标明明他们所提供供的服务界面面,用户和应应用程序员则则只看得见对对象提供的操操作功能(即即封装面上的的信息),看看不到其中的的数据或操作作代码细节。