张海藩《软件工程导论》第6版笔记和课后习题详解
1.整理名校笔记,浓缩内容精华。在参考了国内外名校名师讲授张海藩《软件工程导论》的课堂笔记基础上,本书每章的复习笔记部分对该章的重难点进行了整理,同时对重要知识点进行点拨,因此,本书的内容几乎浓缩了配套教材的知识精华。
2.解析课后习题,提供详尽答案。本书参考大量软件工程导论相关资料对该教材的重难点课(章)后习题进行了详细的分析和解答,并对相关重要知识点进行了延伸和归纳。
要深深牢记:考研不同一般考试,概念题(名词解释)要当作简答题来回答,简答题要当作论述题来解答,而论述题的答案要像是论文,多答不扣分。有的论述题的答案简直就是一份优秀的论文(其实很多考研真题就是选自一篇专题论文),完全需要当作论文来回答!
第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.把对象作为融合了数据及在数据上的操作行为的统一的软件构件;