软件工程理论与实践
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一. 引言 (2)
二. 什么是软件工程 (2)
1. 什么是软件 (2)
2. 软件开发中普遍存在的问题 (3)
3. 什么是软件工程 (4)
4. 为什么要实施软件工程 (5)
三. 软件工程的基本内容 (6)
1. 软件生存期 (6)
2. 软件工程过程 (9)
3. 软件工程方法 (12)
4. 软件工程管理 (14)
四. 怎样才能开发一个成功的项目 (16)
1. 开发者的困惑 (17)
2. 什么样的软件机构才具有质量保证的可信度 (17)
3. 了解您的项目所属类型 (18)
4. 开发过程中的关键点与人员 (18)
5. 如何实现工程化的软件开发 (19)
五. 结束语 (19)
一.引言
当人类从大规模的机械与电气化生产为特征的工业社会迈入以“3C”(即Communication通信,Control控制和Computer计算机)为特征的信息社会时,人们怎么也无法预料,信息技术会给人类社会带来如此巨大的变革。当“软件”像“硬件”一样成为人们日常生活与工作不可缺少的部件时,对软件以及开发人员的需求呈爆炸式的增长。但是,一方面是计算机技术人员的紧缺,另一方面是低层次的重复开发而对宝贵人力资源的浪费;一方面是社会对软件需求的巨增,另一方面是软件生产的低效和软件危机的爆发。人们从来也没有像现在这样认识到软件工程的重要。但是,面对浩繁的工程理论,人们感到茫然无措,IT人员的高流动性使得本就难以维护的软件更是“雪上加霜”。
能否按期、按质、按费用预算开发出一个用户满意的﹑可持久维护的软件系统,是开发者最为关心的问题。个体手工化的开发方式注定要造成项目的失败,而采用工程化的原则﹑方法与管理进行软件生产才是摆脱危机﹑使得软件开发成功的唯一出路。
本篇内容从用户需求的角度展开,围绕着什么是软件工程﹑为什么要实施软件工程﹑软件工程可以为用户开发系统提供何种帮助﹑如何应用理论指导实践以及开发一个成功的项目必须注意的关键活动。
二.什么是软件工程
1.什么是软件
不能够正确地理解软件的概念,就不可能开发出高质量的软件系统。软件不仅仅是程序,软件=程序+文档+数据+规范(规程),
①规范(规程):是开发组织为某类软件开发制定的标准与规范,越是开发
成熟度高的组织,其规范越具体越精确和量化,大多以模板﹑表格或规程
等量化的形式表示,是软件工程理论的一种具体应用和实践。
②数据:是一个软件系统正常运行所依赖的数据结构和必要的系统数据和用
户数据
③文档:是开发全过程中,按照组织规范(规程)填写的,与软件开发﹑维护
和使用有关的图文材料或文件。它是对程序必要的补充说明,是软件重要
的组成部分。
④程序:是可执行的程序﹑程序的源代码﹑必要的注释以及必要的程序资源
(如动态链接库,控件或API函数等),可理解和可测试性比程序技巧更
为重要。
软件产品必须要有一个完整的配置,程序只是软件产品的一个组成部分。
尽管人们借助硬件的概念定义了软体为软件,实际上软件具有它自己的特点。
①软件是一个逻辑实体,而不是一个具体的物理实体,看不见摸不着,只能
通过观察﹑分析﹑思考与判断去了解它,因而具有抽象性。
②软件生产与硬件不同,没有明显的制造过程,也不像硬件那样,一旦研制
成功,可以重复制造,而且硬件质量是在制造过程中进行控制的。软件的
生产实际上是高智力的开发过程,它的质量是在开发过程中进行全程控制
的,更具有复杂性和难于控制,而一旦研制成功,它的生产仅仅是复制。
③软件在运行与使用期间没有硬件那样的机械磨损和老化问题,硬件的维护
不频繁,主要在修理和更换部件上;而软件需时时维护,且更具复杂性,
软件维护具有修改的特征,本身就是一个二次开发的过程,往往使得系统
的功能加强。
④软件开发是一个高智力﹑创造性及高强度的脑力劳动,需各种人才协同工
作,管理复杂度高,甚至软件系统开发的成败七分在管理三分在技术,人
员的流动不利于开发工作,也不是一个项目组中人员与越多越好,十分强
调开发组的组织结构与人员分工与投入比例。
⑤由于软件开发至今尚未完全摆脱手工工艺的开发方式,管理技术﹑开发技
术以及相应的工具支持还很欠缺,人们软件工程应用的水平还比较低,使
得软件生产率低且质量难于保证。
⑥软件在其开发过程中,错误具有积累和放大的效应
总之,软件开发应该加强管理,重视前期的计划﹑分析与设计,坚持阶段评审,
充分采用实践中成型的工程开发模式和规范,利用工具提高工程开发效率和应
用水平,注重开发全过程的质量控制和过程控制。
2.软件开发中普遍存在的问题
问题即是难点,只有认清问题,才能避免错误从而走向成功。由于人们对软件没有清楚的认识,加之软件本身固有的特点和软件技术发展的局限,使得开发一个成功的项目很难。问题主要有以下几个方面:
●软件开发无计划性
由于缺乏软件开发的经验和有关开发数据的积累,使得开发工作的计划很难制
定,即使制定了计划,由于凭主观盲目制定,而使计划脱离实际难于实施。开
发者认识到工程化开发的必要性,但缺乏既有理论又有实践经验的人才去实
施,软件工程开发中项目经理或系统分析员档次的人才奇缺,从而使一个项目
在开发之初就缺少全局性有效的计划,这些计划包括项目开发计划﹑进度计划
﹑文档编制计划﹑经费估算与消耗计划﹑安装培训计划,质量保证计划以及过
程控制计划等
●软件需求分析困难
由于用户与开发者之间固有的沟通代沟,使得需求定义困难或不准确或不充
分,造成问题积累,而到后期难于挽回和更正。有些系统本身需求就是模糊不
清的,而且需求一直处于变动的状态。因此,如何弄清用户的需求,如何确认
需求的正确性与完备性,如何精确地表达需求规格是一个难点。需求分析是软
件开发整个过程中最关键的阶段,是项目成败的关键,必须采用必要的技术﹑
方法和工具来实现。
●软件开发过程无规范或缺乏规范
开发过程缺乏统一的﹑公认的方法论和规范指导,参加的人员各行其是。加之
不重视文档工作,使得软件难于维护,配置不完整,开发工作不规范,开发不