张海藩《软件工程导论》(考研用)辅导书(软件工程学概述)【圣才出品】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章软件工程学概述
1.1 复习笔记
一、软件危机
1.软件危机的介绍
(1)概念
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(2)典型表现
①对软件开发成本和进度的估计不准确。
②用户对“已完成的”软件系统不满意的现象经常发生。
③软件产品的质量往往靠不住。
④软件常常是不可维护的。
⑤软件通常没有适当的文档资料。
⑥软件成本在计算机系统总成本中所占的比例逐年上升。
⑦软件开发跟不上计算机应用迅速普及深入的趋势。
【注意】考试中常考查软件的概念,记住公式:软件=程序+数据+文档。
2.产生软件危机的原因
(1)客观原因
①软件是计算机系统中的逻辑部件,缺乏“可见性”,因此管理和控制软件开发过程相
当困难。
②软件维护通常意味着改正或修改原来的设计,因此软件较难维护。
③软件规模庞大,而程序复杂性将随着程序规模的增加而呈指数上升。
(2)主观原因
①存在与软件开发和维护有关的许多错误认识和做法。
②对用户要求没有完整准确的认识就匆忙着手编写程序。
③开发人员只重视程序而忽视软件配置的其余成分(文档和数据等)。
④软件开发人员轻视维护。
3.消除软件危机的途径
(1)应该对计算机软件有一个正确的认识。
(2)应该充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法。
(4)应该开发和使用更好的软件工具。
二、软件工程
1.软件工程的介绍
(1)概念
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效
地维护它,这就是软件工程。
(2)本质特征
①软件工程关注于大型程序的构造;
②软件工程的中心课题是控制复杂性;
③软件经常变化;
④开发软件的效率非常重要;
⑤和谐地合作是开发软件的关键;
⑥软件必须有效地支持它的用户;
⑦软件工程领域由具有一种文化背景的人替具有另一种文化背景的人创造产品。
2.软件工程的基本原理
(1)七条基本原理
①用分阶段的生命周期计划严格管理;
②坚持进行阶段评审;
③实行严格的产品控制;
④采用现代程序设计技术;
⑤结果应能清楚地审查;
⑥开发小组的人员应该少而精;
⑦承认不断改进软件工程实践的必要性。
(2)意义
这七条原理是确保软件产品质量和开发效率的原理的最小集合,它们是互相独立的,而且是缺一不可的最小集合,然而这七条原理又是相当完备的。
3.软件工程方法学
(1)概念
通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
(2)三要素
软件工程方法学包括3个要素:方法、工具和过程。
(3)传统方法学(生命周期方法学或结构化范型)
①定义
采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
②优点
a.把软件生命周期划分成若干相对独立、简单的阶段,便于不同人员分工协作,降低开发的困难程度;
b.开发过程中采用科学的管理技术和良好的技术方法,且在每个阶段结束之前都进行严格的审查,保证了软件的质量,提高了软件的可维护性;
c.大大提高了软件开发的成功率和生产率。
③缺点
a.不适用于软件规模庞大、或者对软件的需求是模糊的或会随时间变化而变化的情况。
b.结构化范型技术把数据和操作人为地分离成两个独立的部分,增加了软件开发与维护的难度。
(4)面向对象方法学
①定义
面向对象方法是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
②要点
a.把对象作为融合了数据及在数据上的操作行为的统一的软件构件;
b.把所有对象都划分成类;
c.继承性;
d.对象彼此间仅能通过发送消息互相联系。
③与传统方法学的对比
a.传统方法学强调自顶向下、逐层分解、顺序开发。
b.面向对象方法学强调主动地多次反复迭代地开发,保证了在各项开发活动之间的平滑过渡。
④优点
a.降低了软件产品的复杂性;
b.提高了软件的可理解性;
c.简化了软件的开发和维护工作;
d.提高了软件的可重用性。
【注意】常考面向对象方法学的基本特征:类、继承、封装、多态。结合第9章掌握其含义和意义。
三、软件生命周期
1.组成
(1)软件定义
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
(2)软件开发
通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
(3)运行和维护(软件维护)
【注意】考题中常设置选项:在详细设计阶段编写代码。这是错误的,在编码和单元测试阶段才编写代码。
2.维护活动的分类
①改正性维护;
②适应性维护;
③完善性维护;
④预防性维护。
四、软件过程
1.概念
(1)定义
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
(2)表示
使用生命周期模型简洁地描述软件过程。