软件工程理论与实践.doc

上传人:hw****26 文档编号:3170724 上传时间:2019-05-24 格式:DOC 页数:19 大小:277.50KB
下载 相关 举报
软件工程理论与实践.doc_第1页
第1页 / 共19页
软件工程理论与实践.doc_第2页
第2页 / 共19页
软件工程理论与实践.doc_第3页
第3页 / 共19页
软件工程理论与实践.doc_第4页
第4页 / 共19页
软件工程理论与实践.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、软件工程理论与实践- 1 -目录一. 引言 .2二. 什么是软件工程 .21. 什么是软件 .22. 软件开发中普遍存在的问题 .33. 什么是软件工程 .44. 为什么要实施软件工程 .5三. 软件工程的基本内容 .61. 软件生存期 .62. 软件工程过程 .93. 软件工程方法 .124. 软件工程管理 .14四. 怎样才能开发一个成功的项目 .161. 开发者的困惑 .172. 什么样的软件机构才具有质量保证的可信度 .173. 了解您的项目所属类型 .184. 开发过程中的关键点与人员 .185. 如何实现工程化的软件开发 .19五. 结束语 .19软件工程理论与实践- 2 -一.

2、引言当人类从大规模的机械与电气化生产为特征的工业社会迈入以“3C” (即Communication 通信,Control 控制和 Computer 计算机)为特征的信息社会时,人们怎么也无法预料,信息技术会给人类社会带来如此巨大的变革。当“软件”像“硬件”一样成为人们日常生活与工作不可缺少的部件时,对软件以及开发人员的需求呈爆炸式的增长。但是,一方面是计算机技术人员的紧缺,另一方面是低层次的重复开发而对宝贵人力资源的浪费;一方面是社会对软件需求的巨增,另一方面是软件生产的低效和软件危机的爆发。人们从来也没有像现在这样认识到软件工程的重要。但是,面对浩繁的工程理论,人们感到茫然无措,IT 人员的

3、高流动性使得本就难以维护的软件更是“雪上加霜” 。能否按期、按质、按费用预算开发出一个用户满意的可持久维护的软件系统,是开发者最为关心的问题。个体手工化的开发方式注定要造成项目的失败,而采用工程化的原则方法与管理进行软件生产才是摆脱危机使得软件开发成功的唯一出路。本篇内容从用户需求的角度展开,围绕着什么是软件工程为什么要实施软件工程软件工程可以为用户开发系统提供何种帮助如何应用理论指导实践以及开发一个成功的项目必须注意的关键活动。二. 什么是软件工程1. 什么是软件不能够正确地理解软件的概念,就不可能开发出高质量的软件系统。软件不仅仅是程序,软件=程序+文档+ 数据 +规范(规程) , 规范(

4、规程):是开发组织为某类软件开发制定的标准与规范,越是开发成熟度高的组织,其规范越具体越精确和量化,大多以模板表格或规程等量化的形式表示,是软件工程理论的一种具体应用和实践。 数据:是一个软件系统正常运行所依赖的数据结构和必要的系统数据和用户数据 文档:是开发全过程中,按照组织规范(规程)填写的,与软件开发维护和使用有关的图文材料或文件。它是对程序必要的补充说明,是软件重要的组成部分。 程序:是可执行的程序程序的源代码必要的注释以及必要的程序资源(如动态链接库,控件或 API 函数等) ,可理解和可测试性比程序技巧更为重要。软件产品必须要有一个完整的配置,程序只是软件产品的一个组成部分。尽管人

5、们借助硬件的概念定义了软体为软件,实际上软件具有它自己的特点。 软件是一个逻辑实体,而不是一个具体的物理实体,看不见摸不着,只软件工程理论与实践- 3 -能通过观察分析思考与判断去了解它,因而具有抽象性。 软件生产与硬件不同,没有明显的制造过程,也不像硬件那样,一旦研制成功,可以重复制造,而且硬件质量是在制造过程中进行控制的。软件的生产实际上是高智力的开发过程,它的质量是在开发过程中进行全程控制的,更具有复杂性和难于控制,而一旦研制成功,它的生产仅仅是复制。 软件在运行与使用期间没有硬件那样的机械磨损和老化问题,硬件的维护不频繁,主要在修理和更换部件上;而软件需时时维护,且更具复杂性,软件维护

6、具有修改的特征,本身就是一个二次开发的过程,往往使得系统的功能加强。 软件开发是一个高智力创造性及高强度的脑力劳动,需各种人才协同工作,管理复杂度高,甚至软件系统开发的成败七分在管理三分在技术,人员的流动不利于开发工作,也不是一个项目组中人员与越多越好,十分强调开发组的组织结构与人员分工与投入比例。 由于软件开发至今尚未完全摆脱手工工艺的开发方式,管理技术开发技术以及相应的工具支持还很欠缺,人们软件工程应用的水平还比较低,使得软件生产率低且质量难于保证。 软件在其开发过程中,错误具有积累和放大的效应总之,软件开发应该加强管理,重视前期的计划分析与设计,坚持阶段评审,充分采用实践中成型的工程开发

7、模式和规范,利用工具提高工程开发效率和应用水平,注重开发全过程的质量控制和过程控制。2. 软件开发中普遍存在的问题问题即是难点,只有认清问题,才能避免错误从而走向成功。由于人们对软件没有清楚的认识,加之软件本身固有的特点和软件技术发展的局限,使得开发一个成功的项目很难。问题主要有以下几个方面: 软件开发无计划性由于缺乏软件开发的经验和有关开发数据的积累,使得开发工作的计划很难制定,即使制定了计划,由于凭主观盲目制定,而使计划脱离实际难于实施。开发者认识到工程化开发的必要性,但缺乏既有理论又有实践经验的人才去实施,软件工程开发中项目经理或系统分析员档次的人才奇缺,从而使一个项目在开发之初就缺少全

8、局性有效的计划,这些计划包括项目开发计划进度计划文档编制计划经费估算与消耗计划安装培训计划,质量保证计划以及过程控制计划等 软件需求分析困难由于用户与开发者之间固有的沟通代沟,使得需求定义困难或不准确或不充分,造成问题积累,而到后期难于挽回和更正。有些系统本身需求就是模糊不清的,而且需求一直处于变动的状态。因此,如何弄清用户的需求,如何确认需求的正确性与完备性,如何精确地表达需求规格是一个难点。需求分析是软件开发整个过程中最关键的阶段,是项目成败的关键,必须采用必要的技术方法和工具来实现。 软件开发过程无规范或缺乏规范开发过程缺乏统一的公认的方法论和规范指导,参加的人员各行其是。加软件工程理论

9、与实践- 4 -之不重视文档工作,使得软件难于维护,配置不完整,开发工作不规范,开发不是一个系统的集体的行为,而是依赖个体能力的大小。将软件工程浩繁的理论变为实践中可具体操作的工程规范或规程,是许多开发组织急需解决而又缺乏能力解决的问题。 缺乏量化管理,没有进行开发全过程的管理和控制开发任务的分解与量化是开发中的一个难点,没有量化的任务就没有精确的管理。作为项目经理首要的任务就是管理,包括:开发规范的选择或制定,选择开发的过程模型,明确开发的阶段及其成果,分解任务并合理地分配任务,明确评审的标准,组织实施全程的过程控制质量控制与配置管理。因此,对项目经理能力与经验的要求是比较高的,同时强调开发

10、组织内部要配有专职的各项管理人员,并建立合理的控制机制,防患于未然。这些都是开发组织软件开发成熟度所要求的。 缺乏合理的人员投入,人员流动大,造成开发困难一个项目的开发在不同阶段有不同的人力投入,并不是投入的人员越多越好,阶段不同投入人员的层次不同,随意增加人员是不利于项目开发的。许多开发组织并未意识到这一点,加之开发工作的个体化与 IT 行业人员流动大等特点,造成开发或维护工作陷入困境。如何在人员流动的情况下保证软件开发和维护工作的正常进行是开发中的一个难点。 缺乏阶段成果的评审和必要的配置管理许多开发组织没有阶段的评审制度,更缺乏评审的标准,使软件错误积累并放大下传到后一个阶段,造成错误的

11、集众难返。没有采取必要的配置管理,引起版本的不一致。 开发组织中普遍存在的错误认识 软件开发就是编程,程序员水平的高低决定了系统开发的成败。其实对于编程工作来说 60%以上的工作是写文档, 40%是写程序。需求分析的好坏决定了系统开发的成败。 轻视测试轻视维护,认为这些人员都是无足轻重的。其实在软件开发整个过程中,测试是质量保证最重要的一个环节,也是技术难度最大的工作。应该委派技术水平高的非成果的责任者来完成这项工作。而维护无论在费用消耗上工作量上以及时间上都是整个过程中所占比例最大的阶段 项目经理虽然重要,但可以不懂技术,仅仅是个管理人员而已。其实合格的项目经理必须经历程序员到系统分析员的过

12、程,只有这样背景的项目经理才能合理地划分任务,并实施有效的管理。 测试就是验证程序能正确执行其功能。其实成功的测试是发现错误的测试,发现的错误越多则说明测试用例越好。程序测试软件测试,软件测试还包括文档数据与程序等完整配置的测试,而忽视了这一点往往造成文档或数据与程序的不一致。 测试与编程是同一个人,程序的任何修改没有进行回归测试,测试用例不是软件的配置内容。 软件的修改是随意的,不需要经过审批,开发人员自己就能决定。 当开发任务紧张时,可通过随时追加人员来加快开发进度,保证按期完成软件工程理论与实践- 5 -3. 什么是软件工程解决问题的出路在于工程化的开发,吸收硬件工程已有的经验,从系统角

13、度考虑问题,并采用工程化的定量方法规范和工具组织软件开发工作。软件工程是指导软件开发和维护的工程学科,其核心思想是把软件产品(就像其它工业产品一样)看作是一个工程产品来处理。把需求计划可行性研究工程审核质量监督等工程化的概念引入到软件生产中,以期达到工程项目的三个基本要素:进度经费和质量的目标。软件工程也针对软件的特点研究不同于其他工业产品的一些独有特性,为软件开发提供方法工具和过程的支持。有一点需要说明的是,软件工程理论与软件工程应用是软件工程研究的不同方面,需要根据不同项目的类型,摸索一套易于操作便于管理和验证的开发模式和配套工具,这是用户最为关心的。保证网上项目开发质量的基础有如下几点:

14、 有多个具有实践指导意义的项目开发模式(含模板) ,可以根据用户项目的类型由用户选择使用,保证用户项目按照符合 ISO9001 的标准进行开发,并确保软件开发的质量 提供自行研制的软件工作室工具,按照工程化管理的要求,协助虚拟公司完成网上项目开发的管理工作 提供软件工程应用指导和监督以及必要的 CASE 工具租赁服务 帮助用户找到合适的开发人员和技术资源4. 为什么要实施软件工程由于软件开发中内在的问题,造成了软件危机的局面,唯有工程化的工业生产模式才能从根本上解决危机问题,并满足信息社会对软件需求的急剧增加和高质量的要求。组织实施软件工程项目,从技术上和管理上采取了多项措施以后,最终希望得到

15、项目的成功。成功指的是达到以下几个主要指标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发计划,及时交付使用在实际开发的具体项目中,企图让以上几个目标都达到理想的程度往往是非常困难的,而且这些目标很可能是互相冲突的或互补的,相互关系参见下图:低开发成本易于维护高可靠性 高性能按时交付互斥关系 互补关系软件工程理论与实践- 6 -实际上,实施软件开发项目就是力图在以上目标的冲突中取得一定程度的平衡。三. 软件工程的基本内容软件工程的要素有三个:方法工具与过程。软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,

16、如项目计划与估算需求分析数据结构总体设计,详细设计,编码测试以及维护等。软件工程方法常采用特殊的语言图形表达方法及一套质量保证标准。软件工具为软件开发方法提供了自动化或半自动化的软件支撑环境(即 CASE 工具) ,这些工具支持从分析设计编码测试到管理的方方面面的工作,提高开发的效率与质量。软件工程过程则是将软件工程的方法与工具综合起来以达到合理及时地进行计算机软件开发的目的。过程定义了方法使用的顺序要求交付的文档为保证质量和协调变化需要的管理及软件开发各个阶段完成的里程碑。1. 软件生存期如同其它任何事物一样,软件也具有从孕育诞生成长成熟衰亡的生存过程,称之为软件生存期。生存期将软件开发过程

17、划分为任务相对独立的阶段,这些阶段可以因项目类型不同而有不同的划分,它们有重复,执行时也可以有迭代,开发时可由过程模型来确定,一般划分为六个阶段: 软件计划确定软件系统的总目标开发范围开发过程的阶段划分与过程模型的选择;分解任务,明确人员的角色与任务分工;确定阶段里程碑;进行资源与成本的估算;制定项目管理所需的规范与计划,包括项目开发计划进度计划文档编制计划质量保证计划,过程追踪与控制计划。这一阶段是形成管理标准与任务的主要阶段,所制定的文档是下一步项目开发实施管理的依据和指南 需求分析与定义需求分析主要解决用户要“做什么”的问题。开发人员与用户碰头协商,分析其需求,然后采用无二义性的规范形式

18、(往往套用组织内部规定的规格说明书模板)精确定义用户的需求,从而形成重要的里程碑文档软件规格说明书。软件规格说明书需提交管理机构评审,并纳入配置管理的范围。这个阶段是软件开发成功的最关键阶段,需要富有经验的系统分析员领导完成,同时要采用一定的工程方法工具和模型辅助分析工作,分析的好坏直接影响软件产品的质量。这一时期的任何错误都会给后期的工作带来巨大的影响,而且更改错误的代价将越高。分析并精确定义用户的需求是困难与复杂的事情,一般要确定以下几个内容:软件工程理论与实践- 7 - 软件系统在整个系统中的边界与接口 系统业务流程,划分出相对独立的子系统,并确定其相互关系和接口 用户的功能需求 性能需

19、求(包括相应时间存储容量等) 环境需求 可靠性需求 安全保密需求 用户界面与操作需求 资源需求。它包括两个方面: 数据需求人力设备与支撑软件的需求 成本消耗与开发进度需求 将来可能提出的需求。该需求为系统将来可能的扩充与修改做准备。图形模型与文档的结合是很好的需求定义的形式,分析的技术提供了多种分析途径和表达方式,这是软件工程技术与方法研究的内容。 软件设计软件设计主要解决针对用户需求该“如何做”的问题,分为概要设计与详细设计。该阶段工作的基础是需求规格说明书,按照设计方法,可将需求规格一步一步转换为更详细的实现描述,包括:系统物理实现方案,软件结构以及各个模块内部算法的具体实现流程。该阶段产

20、生重要的里程碑文档有:概要设计说明书,数据库设计说明书,详细设计说明书,测试计划等,这些阶段产品都应该提交管理部门评审,并纳入软件配置管理的范围。 软件实现该阶段工作的基础是详细设计说明书。程序员根据说明书中的算法过程描述,进行编程和单元测试。这些工作是开发组织比较容易做到的。但需要提醒用户的是:程序员良好的编程习惯,程序内部文档化程度以及开发组织的编程规范将直接影响程序的可理解性可阅读性,最终影响软件的可维护性。因此,编程的质量标准不应该是技巧的高低,而是易于理解和维护。 测试该阶段工作的基础是软件测试计划,并将形成测试结果报告,供管理部门对软件质量进行评价,并纳入配置管理。测试是软件质量保

21、证的最后一道关口,但绝不是唯一的质量把关措施。测试的目的也绝不是证明程序能正确执行,而是以发现错误为其根本目的。除单元测试在实现阶段完成外,测试阶段主要完成集成测试(大系统还包括子系统测试)验收测试。测试中发现的问题往往是前期各阶段评审中没有发现的错误。它们之间的关系如下:需求分析说明书概要设计说明书详细说明说明书源程序代码单元测试集成测试验收测试错误潜伏期错误发现期软件工程理论与实践- 8 -软件的错误不单单是编码错误,还包括数据和文档不一致引起的错误,据统计设计错误占软件错误的 63%,编码错误仅占 37%。因此,坚持阶段评审是及早发现前期错误的有效办法。 运行/维护已交付的软件投入正式使

22、用,便进入运行/维护阶段。维护是软件整个生存期中最漫长花费最大的阶段。由于软件自身的特点,维护实际上是二次开发的过程,软件开发过程中可维护性质量指标将直接影响维护的代价高低。这一时期维护工作以及所占工作量比例如下:各 种 维 护 占 总 维 护 工 作 量 比 例 图50%20%25%5%完 善 性 维 护改 正 性 维 护适 应 性 维 护其 它软件工程理论与实践- 9 -软 件 生 存 期 各 个 阶 段 费 用 占 总 开 发 费 用的 比 例 图1%6%6%12% 12%65%软 件 计 划需 求 分 析 与 定 义设 计实 现测 试维 护软 件 开 发 各 阶 段 工 作 量 比 例

23、 图2%18%20%20%40%软 件 计 划需 求 分 析 与 定 义设 计实 现测 试 与 调 试2. 软件工程过程把用户的需求转变成软件产品的过程叫做软件工程过程。它是将软件生存期各个阶段或活动组织成一定的工序,以获得高效的软件开发效率。软件工程过程与用户选择的开发方法及项目类型紧密相关,决定了软件开发的模式。每个开发组织都可以针对不同类型的软件项目,选取不同的工程过程,而且过程选取得是否合适直接影响软件开发的效率与质量。过程模型的选择与组织实施是需要开发经验做为基础的,是软件工程实践的难点之一。这里不详细介绍各种过程模型的特点,主要介绍有那些主要过程模型,以及如何为项目选择合适的过程。

24、 编码修正模型这是个体手工做坊式生产采用的过程模型。该模型中,开发只有两个阶段,即编写程序和修改程序。当项目拿到,几个程序员简单一商量就开始编程,然后就是调试,当调试一通过就算完成任务,并拿给用户使用。这种过程是目前许多中小型公司的开发模式,对于较小的软件尚能应付,当软件开发规模不断扩大,这种模型就会引起严重软件工程理论与实践- 10 -的后果,必须加以改进 瀑布模型这是传统的开发过程模型,将生存周期的各个阶段组成自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落呈线性图式。该模型采用了严格而又僵化的过程工序,比较适合需求相对稳定而又便于定义、开发有较大把握的系统。而实际情况是,大部分项目的

25、需求是易变和不确定的,各个阶段的工作要有上下几个反复才能逐步确定。因此,将僵化的过程变为灵活的过程,才能符合实际项目开发的需要。 演化模型这是工程实践中大量使用,且最为有效的过程模型之一,又称快速原型法。这种方法的核心思想是原型演进,即在获得用户的初步需求基础上,快速开发出一个试验性的“原型产品” (如界面原型) ,用户试用原型,并反馈意见,然后开发人员修改原型,经过多次反复直到获得用户满意的产品。演化模型吸收了硬件工程中“样机”的概念,比较适合需求易变且不确定的项目,它克服了瀑布模型僵化的缺点,但带来的负面效应是增大了项目开发的风险,进度难以估计。由于大量 4GL 语言的出现,使得构造原型快速而又方便,是建议用户选择的一种开发模式。 螺旋模型对于一个复杂的大型项目,开发一个原型往往达不到要求,要开发若干版本的原型并不断进行风险分析和评价才能获得最终可运行的满足用户需求的原型,再在此基础上进行系统开发,螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略的风险分析,成为大型高风险且复杂的系统常用的开发过程模型。这种模型虽具有优势,但用户掌握它较为困难,对于中小型项目来说一般不采用这样的方法。计划需求分析设计实现测试运行维护定义时期开发时期维护时期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。