1软件工程概论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程
1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
2、软件危机的主要表现:
(1)对软件开发成本和进度的估计经常很不准确;
(2)用户对“已完成的”软件系统不满意的现象经常发生;
(3)软件产品的质量往往靠不住;
(4)软件常常是不可维护的;
(5)软件通常没有适当的文档资料;
(6)软件成本在计算机系统总成本中所占的比例逐年上升;
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3、产生软件危机的原因
(1)从软件特点上看,软件是逻辑部件,不是物理部件;
(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;
(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);
(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)
4、消除软件危机的途径
(1)首先应该对计算机软件有一个正确的认识;
(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;
(4)应该开发和使用更好的软件工具
总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
(2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
6、软件工程的本质特征
(1)软件工程关注于大型程序的构造;
(2)软件工程的中心课题是控制复杂性;
(3)软件经常变化;
(4)开发软件的效率非常重要;
(5)和谐地合作是开发软件的关键;
(6)软件必须有效地支持它的用户;
(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
7、软件工程的基本原理
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的(阶段性)产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性
8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期。包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
(1)软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表。(2)软件开发时期:总体设计;详细设计;编码和单元测试;综合测试。
(3)软件维护时期:主要任务是使软件更持久地满足用户需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。
9、软件生命周期每个阶段的基本任务
(1)问题定义:“要解决的问题是什么?”;
(2)可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗?”
(3)需求分析:“为了解决这个问题,目标系统必须做什么。”
(4)总体设计:“概括地说,应该怎样实现目标系统?”
(5)详细设计:“应该怎样具体地实现这个系统呢?”
(6)编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块。
(7)综合测试:关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
(8)软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
10、什么是软件生命周期模型?有哪些主要模型?
(1)生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
(2)主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素。
12、可行性研究过程的步骤:
(1)复查系统的规模和目标
(2)研究目前正在使用的系统
(3)导出新系统的高层逻辑模型
(4)进一步定义问题
(5)导出和评价供选择的解法
(6)推荐行动方针
(7)草拟开发计划
(8)书写文档提交审查
13、可行性分析报告的主要内容:
项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理。
14、数据流图(DFD):以图形的方式描述数据在系统中流动和处理的过程。只反映系统必须完成的逻辑功能,是一种功能模型。
15、画数据流图应注意的事项:
(1)命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。
(2)画数据流而不是控制流,一般不画物质流。
(3)每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。(4)编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应。
(5)父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致。
(6)局部数据存储。
(7)注意数据流图的易理解性。
16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。