信息工程方法_第1页
信息工程方法_第2页
信息工程方法_第3页
信息工程方法_第4页
信息工程方法_第5页
已阅读5页,还剩25页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.信信 息息 工工 程程 方方 法法软件工程应用实践教程软件工程应用实践教程.第第1章章 软件工程概述软件工程概述n1.1 1.1 软件和软件危机软件和软件危机n1.2 1.2 软件的分类软件的分类n1.3 1.3 软件工程概念软件工程概念n1.4 1.4 软件工程的软件工程的7 7条基本原理条基本原理n1.5 1.5 软件开发过程模型软件开发过程模型n1.6 1.6 软件过程软件过程n1.7 1.7 软件开发方法简述软件开发方法简述n1.8 1.8 软件工程的最新发展动向软件工程的最新发展动向n1.9 1.9 软件工程相关的技术规范和标准软件工程相关的技术规范和标准n1.10 1.10 国外

2、软件开发模式介绍国外软件开发模式介绍n1.111.11 Rational Suite产品简介产品简介.1.1 1.1 软件和软件危机软件和软件危机n软件是程序、支持程序运行的数据以及与程序相关的文档资料的完整集合。n软件的特点n软件是一种逻辑实体,具有抽象性n软件在使用过程中没有磨损、老化问题n软件一旦研制开发成功,其生产过程就变成了复制过程n软件对硬件和环境有不同程度的依赖性n软件开发采用手工方式n为应用“量身订做”n软件涉及人类社会的各行各业,涉及其他领域的专门知识n软件不仅是一种在市场上推销的工业产品,而且是与文学艺术作品相似的精神作品.1.1 1.1 软件和软件危机软件和软件危机n软件

3、危机的具体表现n对软件开发成本的估计不准确,造成开发成本超出预算。n开发进度不能保证,交付时间拖延。n已完成的软件不能满足用户的需求。n软件产品的质量没有保证,运算结果出错、操作死机等现象屡屡出现。n软件通常没有适当的文档资料或文档与最终交付的软件产品不符,软件的可维护程度非常低。n软件开发生产率的提高赶不上硬件的发展和人们需求的增长。n软件的特点是导致软件危机的客观因素,而软件开发和维护过程中使用的不正确方法是主观因素。n软件开发过程不成熟n忽视软件开发前期的调研和分析工作;n没有统一的、规范的方法论指导,文档资料不齐全,忽视人与人的交流;n忽视测试阶段的工作;n轻视软件的维护。.1.2 软

4、件的分类软件的分类1.2.1 按软件功能划分按软件功能划分n系统软件通常是与计算机硬件密切相关的那些比较底层的支持软件。n支撑软件是支持软件开发和运行的工具性软件。 n应用软件是为特定应用目的而开发、提供某些特定服务的软件。 1.2.2 按软件规模划分按软件规模划分表表1-1 软件的规模软件的规模软件规模 投入人数 开发时间 源程序行数 特征微型 1 1-4周 500 不必有严格的设计和测试文档小型 1-2 1-6月 2000 通常没有与其他程序的接口中型 3-5 1-2年 0.55万 需要有严格的文档和设计规范大型 5-20 2-3年 5-10万 需要按照软件工程方法进行管理超大型 100-

5、1000 4-5年 100万 必须按照软件工程开发,有严格的质量管理措施巨型 2000-5000 5-10年 1000万 同上.1.3 软件工程概念软件工程概念n软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和最先进的软件开发技术结合起来,应用到软件开发和维护过程中,来解决软件危机问题。 nIEEE定义:“软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件中的方法的研究。” n软件工程是一种层次化技术 n软件工程的最底层是质量保证层 n过程层与技术层结合在一起,它定义了一组关键过程域框架,目的是保证软

6、件工程技术被有效地应用,使得软件能够被及时地、高质量和合理地开发出来。 n方法层提供了软件开发的各种方法。包括软件需求分析和设计、如何测试和维护等方法 n工具层为软件工程方法和过程提供了 自动或半自动的支撑环境。 .1.3 软件工程概念软件工程概念n软件工程规范化和文档化n规范化的目的是使开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。n文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,便于后人的使用和维护。n开发过程中各类相关的人员借助文档进行交流和沟通。n各类文档使得软件的生产过程由不可见变为可见,便于管理者对生产进度和过程进行管理。n用户最终验收

7、时,可以通过对提交的文档进行技术审查和管理审查。 .1.4 软件工程的软件工程的7条基本原理条基本原理n软件工程的7条原理,它们是相互独立、缺一不可的最小集合;同时,它们又是完备的。n原理1:用分阶段的生命周期计划严格管理 n原理2:坚持进行阶段评审 n原理3:实行严格的产品控制n在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。 n原理4:采用现代程序设计技术 n原理5:结果应能清楚地审查 n据软件开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。 n原理6:开发小组的人员应该少而精 n原理7:承认不断改进软件工程实践的必

8、要性 .1.5 软件开发过程模型软件开发过程模型n软件开发过程模型:从软件需求定义到软件交付使用后报废为止,整个生命期中的系统开发、运行、维护所实施的全部策略。 1.5.1 瀑布模型瀑布模型n瀑布模型规定了软件生命周期的各项活动:n问题定义n需求分析n软件设计n编码n测试n运行和维护n各项活动自顶向下、相互衔接如同瀑布一样。n一个活动结束,进入下一个活动,很难再回到前一个活动中去,也就是工作的不可逆转性。应付需求变化的能力非常弱 。.1.5 软件开发过程模型软件开发过程模型1.5.2 1.5.2 原型模型原型模型n原型模型的基本思想:n在与用户进行需求分析的同时,以比较小的代价建立一个能够反映

9、用户主要需求的原型系统。n用户在原型上提出改进意见,分析人员根据用户的意见,补充完善原型,然后再由用户评价,提出建议。n如此往复,直到开发的原型系统满足了用户的需求为止。n原型模型包括抛弃型和演化型两种。n抛弃型:通常是针对系统的某些特殊功能进行实际验证为目的。方法本质上仍然属于瀑布模型,只是以原型作为一种辅助的验证手段。n演化型的实现过程:首先进行需求调研和分析,然后快速开发出一个原型,用户经过试用提出修改建议,开发人员修改原型,再返回到用户进行试用。经过多次反复,直至最终使用户满意为止。 .1.5 软件开发过程模型软件开发过程模型1.5.2 1.5.2 螺旋螺旋模型模型n螺旋模型是一种特殊

10、的原型方法,适用于规模较大的复杂系统。螺旋模型一般被划分为26个框架活动,沿着顺时针旋转 n确定要求 选择方案,设定约束条件。n制定计划 定义资源、进度等其他相关任务。n风险分析 评价方案、识别风险、制定控制风险的措施。n构造原型 有些难以确定的因素,可以通过构造原型最终确定下来。n实施工程 如果风险都能够排除,则可以确定这个过程实际上是一个瀑布模型而实施软件开发。n发布 安装和提供用户支持。n客户评估 评估开发工作、 提出修正建议。 .1.5 软件开发过程模型软件开发过程模型1.5.4 1.5.4 构件组装模型构件组装模型n面向对象:强调将数据与操作该数据的算法封装在一个类中。n构件:一个或

11、多个相关类的组合称为一个构件。 1.5.5 1.5.5 统一过程模型统一过程模型RUPRUP n用例(Use-case)驱动的软件开发过程。n以体系结构(Architecture)为中心的过程。n迭代(Iterative)开发与增量(Incremental)开发相结合的过程。 n软件体系结构如同建筑物的结构对于建筑物的作用一样。在软件开发的初期,软件的体系结构只是一个比较粗糙的、大纲形式的框架。在分析人员建立用例模型之后,再由软件构建师来逐步完善和更新体系结构。n统一软件开发过程将整个软件的开发项目划分为多个可迭代的子项目。在一次迭代过程中只识别和描述相关的用例,根据选定的体系结构进行设计。

12、.1.6 软件过程软件过程n软件过程是生产软件的途径,是为了获得软件产品而需要完成的一系列有关软件工程的活动。 .1.6 软件过程软件过程n主要过程:n获取 由需方定义需求,委托供方或双方一起进行需求分析。需方应该准备招标书、合同以及验收条款。n供应 由供方向需方提供系统、软件产品或软件服务的活动。供方要对需求进行评审,准备投标,中标后签订合同。制定项目计划、实施计划、开展评审、交付产品。n开发 开发者定义并且开发软件产品的活动。n运行 供方协助需方制定运行计划并进行运行测试;最终运行系统。n维护 维护者提供系统维护服务的活动。.1.6 软件过程软件过程n支持过程:n文档编制 制定文档标准;确

13、认文档信息的来源和适宜性;进行文档的评审及编辑;批准文档发布;文档的生产、提交、存储和控制;文档维护。n配置管理 实施配置管理过程,包括配置标识;配置控制;记录配置状态;评价配置;发行管理。n质量保证 为确保软件产品和软件过程符合规定的需求并能按计划工作所需的活动。n验证 为证明一个产品符合要求所进行的工作。包括合同、过程、需求、设计、编码、集成和文档的验证。n确认 为确保最终产品满足预期使用要求的活动。包括对测试结果、软件产品用途的确认,测试软件产品的适用性。n联合评审 实施项目管理评审,包括项目计划、进度、标准、指南等的评价;技术评审,包括评价软件产品的完整性、是否符合标准等。n审核 检验

14、项目是否符合需求、计划、合同、规格说明和标准。n问题解决 分析和解决开发、运行、维护或其他过程中出现的问题。.1.6 软件过程软件过程n组织过程:n管理 制定计划、监控计划的实施,评价计划实施情况;包括产品管理、项目管理和任务管理等内容。n基础设施 开发、运行和维护等过程所需的硬件、软件、工具、技术、标准,建立基础设施,并提供维护服务。n改进 对整个软件生存期过程进行评估、度量、控制和改进。n培训 对人员进行相关培训所需的活动,包括制订培训计划、编写培训资料、培训计划的实施。 .1.7 软件开发方法简述软件开发方法简述1.7.1 Parnas方法方法n1972年:信息隐蔽技术和错误预防措施。

15、n信息隐蔽技术的主要内容是:在概要设计时列出可能会发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。n一旦由于这些因素变化需要修改软件时,只需修改相应的个别模块,其他模块不受影响。n错误预防的主要内容:在每个可能产生的错误之前,增加一些判断,防止软件出现不可预料的结果。n例如,在分配和使用设备前,应该查看设备状态,检查设备是否可用,如果可用再进行分配。n模块之间加强错误隔离措施,防止错误蔓延。.1.7 软件开发方法简述软件开发方法简述1.7.2 1.7.2 YourdonYourdon方法方法n1978年提出,即SA/SD方法,也可称为结构化方法n或面向功能的软件开发方法,或面向数据

16、流的方法。n1979年,Tom DeMarco对此方法作了进一步的完善。nYourdon方法n首先用结构化分析技术对软件进行需求分析,然后用结构化设计技术进行总体设计和详细设计,最后是结构化编程。n自顶向下、逐步求精,将功能逐步分解。n主要问题n以功能分解的软件系统不够稳定,用户的功能经常变换,导致系统的框架结构不稳定。n从数据流程图到软件结构图之间的过渡有明显的断层,导致设计回溯到需求有困难。.1.7 软件开发方法简述软件开发方法简述1.7.3 1.7.3 面向数据结构的方法面向数据结构的方法n开发方法有两种,一种是Warnier方法;另一种是Jackson方法。n基本思想:n从目标系统的输

17、入/输出数据结构入手,导出程序框架结构,再补充其他细节,得到完整的程序结构图。n两种方法的差别:n使用的图形工具不同,分别使用Warnier图和Jackson图;n使用的伪码不同;n构造程序框架时,Wamier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,还考虑输出数据结构。n特点nJackson方法适合对中小型软件进行详细设计。因为Jackson方法无法构架软件系统的整体框架结构,所以不适合进行概要设计。n面向数据结构的方法可以看成是结构化方法与面向对象方法之间的一种方法。它是以数据结构为研究的起始点,针对不同的数据结构分配相应的处理,只是处理上没有将数据结构与处理算法封

18、装在一起。 .1.7 软件开发方法简述软件开发方法简述1.7.4 1.7.4 问题分析法问题分析法nPAM基本思想n由输入、输出数据结构指导系统的分解,然后站在整个系统的角度再逐步综合。n步骤:n从输入、输出数据结构导出基本处理框;n分析这些处理框之间的先后关系;n按先后关系逐步综合处理框,直到画出整个系统的PAD图。nPAD图是一种二维树形结构图。 .1.7 软件开发方法简述软件开发方法简述1.7.5 1.7.5 面向对象的方法面向对象的方法n用对象模拟实际问题域中的实体,以对象间的关系刻画实体间的联系。n面向对象的方法从问题模型开始,然后是识别对象、不断细化的过程。它从本质上讲是迭代和渐增

19、的,整个开发过程就是一次次的迭代反复过程,随着迭代的范围扩大,系统不断完善。 n面向对象方法的本质是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,即系统中的对象以及对象之间的关系能够如实地反映问题域中的固有事物及其关系。n在面向对象方法中,子类不仅可以继承父类的属性和行为,而且也可以重载父类的某个行为。利用这一特点,我们可以方便地进行功能修改:继承某父类,对要修改的一些行为进行重载,也就是对它们重新定义。由于不再在原来的程序模块中引入修改,所以阻止了错误蔓延,大大提高了软件的可靠性和健壮性。 .1.7

20、软件开发方法简述软件开发方法简述1.7.6 1.7.6 可视化开发可视化开发 n图形用户界面的开发工作n微软公司的Windows操作系统提供了应用程序编程接口(Application Programming Interface,API),它包含了600多个函数。但是这批函数中包含了大量的参数,使得基于Windows API的开发变得相当困难。nBorland C+推出了Object Windows编程,它将API的各部分用对象类进行封装,提供了大量预定义的类,并为这些类定义了许多成员函数。开发人员利用子类对父类的继承性,以及实例对类的方法的引用,可以省却或减少对这些类和成员函数的定义。但是这些

21、预定义的类数量很多,对非专业人员来说仍然是一个沉重的负担,n可视化开发方法就是在可视化开发工具提供的图形用户界面上,直接使用界面元素,诸如菜单、按钮、对话框、编辑框、单选框、复选框、列表框和滚动条等。nSYBASE的PowerDesigner,以图形化的方式建立数据库模式,并可以将结果导入到不同的数据库中去。nRational公司推出的系列产品。 .1.7.7 ICASEnICASE(Integrated Computer Aided Software Engineering)集成化的计算机辅助软件工程 n提供数据集成 n控制集成(实现工具间的调用) n供了一组用户界面管理设施和一大批工具,如

22、垂直工具集(支持软件生存期各阶段,保证生成信息的完备性和一致性)、水平工具集(用于不同的软件开发方法)以及开放工具槽。nICASE的进一步发展是与其他软件开发方法和技术的结合,如与面向对象技术、软件复用技术结合。 n数据库领域,MSE公司的Magic系统。只要求软件开发人员填写一系列表格(相当于要求软件实现的各种功能),系统就会自动生成应用软件。 .1.8 软件工程的最新发展动向软件工程的最新发展动向软件工程研究的最新方向:n软件形式语言的研究软件形式语言的研究 n研究“形式化描述语言的应用,以及不同形式化语言之间的转换”。n构件技术构件技术 nCORBA,DCOM,JavaBean等标准的出

23、现给软件危机的缓和带来了希望。由于构件的使用可以渗透到符合构件标准规范的所有系统中,不必耗费巨资从头开发自己的系统。n质量管理质量管理 n软件开发过程中的“不可见性”大大增加了过程管理的难度。因此软件工程管理的指导思想就是使这些过程变为“可见的”,以及事后可以检查的记录。n从一开始就在软件开发过程中严格贯彻质量管理,软件产品的质量才有保证。否则,开发工作一旦进行到后期,无论怎样测试和补漏洞都无济于事。.1.9 软件工程相关的技术规范和标准软件工程相关的技术规范和标准n1.CMM规范规范nSW-CMM(软件能力成熟度模型,Software Capability Maturity Model),描

24、述了不断改进软件过程的科学方法。SW-CMM是帮助软件开发组织自我分析,找出提高软件过程能力的方法 n2. ISO 9000-3n国际标准化组织ISO已经颁布了IS09000-3,它是在软件产业贯彻ISO 9000族标准的指南。全称是质量管理和质量保证标准第三部分:在软件开发、供应和维护中的使用指南 n3.ISO/IEC 12207标准标准nISO提出的软件生命周期过程标准,被广泛应用于美国国防部的软件开发中。 n4.PSP规范规范nPSP(个体软件过程,Personal Software Process)给出了一种可用于控制、管理和改进个人软件开发工作方式的自我改善过程。包括软件开发表格、指

25、南和规程,这些内容为个体和小型群体软件开发过程的优化提供了具体的方法。 .1.9 软件工程相关的技术规范和标准软件工程相关的技术规范和标准n5. TSP规范规范nTSP(小组软件过程,Team Software Process)是小组软件开发过程的控制、管理和改进方法,包括以小组为开发单位的软件开发表格、指南和规程,这些内容为以小组为单位的中型和大型软件开发过程的优化提供了具体的途径。n6.IEEE软件工程系列标准软件工程系列标准n国际电气和电子工程师协会(IEEE)制定的软件工程系列标准,详细规定了软件工程的用语、过程和实施细节。n7.软件配置管理系列标准软件配置管理系列标准n软件开发过程中的变更是不可避免的,控制变更对软件开发、软件质量的影响至关重要,为此,许多机构都规定了控制变更的措施和标准。 n8.Java规范规范 n9.C+规范规范 n10.Unicode标准标准n全球统一字符编码标准,Java支持的首选编码标准。 .1.10 国外软件开发模式介绍国外软件开发模式介绍n微软开发管理方法 n原则1:将大项目分成若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论