软件工程
发布时间:2011-03-22 00:28:29
发布时间:2011-03-22 00:28:29
第一章:
1.1 软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
软件危机的表现:
1、 对软件的开发成本和进度的估计常常很不准确;
2、 用户对“完成”的软件不满意;
3、 软件产品的质量不可靠;
4、 软件的变得不可维护;
5、 通常没有适当的文档资料;
6、 软件成本逐年上升;
7、 软件生产速度跟不上计算机普及的趋势。
软件:是程序、数据及相关文档的完整集合。
1.2 软件工程:
概括的说,是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
包括技术和管理两方面内容,是技术与管理的紧密结合所形成工程学科。
IEEE定义:把系统的、规范的、可度量的途径应用于软件开发维护过程,也就是把工程应用于软件;研究中提到的途径。
(1)本质特性:
1、 软件工程关注于大型程序的构造;
2、 软件工程的中心课题是控制复杂性;
3、 软件经常变化;
4、 开发软件的效率非常重要;
5、 和谐地合作是开发软件的关键;
6、 软件必须有效地支持它的用户;
7、 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
(2)软件工程的7条基本原理:
1、 用分阶段的生命周期计划严格管理;
2、 坚持进行阶段评审;
3、 实行严格的产品控制;
4、 采用现代程序设计技术;
5、 结果就能清楚的审查;
6、 开发小组就该少而精;
7、 承认不断改进工程实践的必要性。
(3)软件工程方法学:
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。
方法学的三要素:方法、工具和过程。方法回答“怎么做”,工具是支撑环境,过程规定工作步骤。
分类:
1、 传统方法学
也称为生命周期方法学或结构化范型,前一个阶段的完成是下一个阶段的开始。
2、 面向对象方法学
对象作为融合数据及在数据上的操作行为的统一构件;对象划分成类;按照父类与子类关系组成一个层次结构系统;对象间仅能通过发送消息互相联系。
优点是促进了软件重用,特有继承性和多态性,进一步提高了对象软件的可重用性。
1.3 软件生命周期(详见11页)
概括的说:软件生命周期由软件定义、软件开发和运行维护(也称软件维护)组成。
软件定义:分为 1、问题定义、2、可行性研究和3、需求分析 三个阶段;总目标 确定工程可行性,实现的功能;估计资源和成本及进度表。由系统分析员负责。
开发时期:具体实现定义的软件,分为 系统设计:4、总体设计,5、详细设计;系统实现:6、编码和单元测试,7、综合测试。
维护时期:主要任务是使软件持久地满足用户的需要。为8、软件维护。
1、 问题定义
解决问题是什么;
2、 可行性研究
探索问题是否值得去解,是否有可行的解决办法。
3、 需求分析
确定目标系统必须具备哪些功能;用正式文档准确的记录对目标系统的需求,文档称规格说明书;
4、 总体设计
也称概要设计,实现目标的方案,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系;
5、 详细设计
也称模块设计,详细设计每个模块,确定实现模块功能所需要的算法和数据结构;
6、 编码和单元测试
选择适当设计语言编码并测试
7、 综合测试
通过各种测试达到预定要求,基本测试是 集成测试和验收测试。
8、 软件维护
通过维护达到用户的要求,4类维护活动:改正性维护、适就性维护、完善性维护、预防性维护。
1.4 软件过程
软件过程描述为了开发出客户需要的软件,什么人、在什么时候、做什么事以及怎样做这些事以实现某一个特定的具体目标。
习题:
1、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?
答:软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但软件开发技术的进步一直未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
主要表现在以下几个方面:
a.经费预算经常突破,完成时间一再拖延。
b.开发的软件不通满足用户要求。
c.开发的软件可维护性差。
d. 开发的软件可靠性差。
软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:
a.软件的规模越来越大,结构越来越复杂。
b.软件开发管理困难而复杂。
c.软件开发费用不断增加。
d.软件开发技术落后。
e.生产方式落后。
f.开发工具落后,生产率提高缓慢。
3、什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?
答: 软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。
本质特性:
1、 软件工程关注于大型程序的构造;
2、 软件工程的中心课题是控制复杂性;
3、 软件经常变化;
4、 开发软件的效率非常重要;
5、 和谐地合作是开发软件的关键;
6、 软件必须有效地支持它的用户;
7、 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
怎么消除软件危机:
软件工程的7条基本原理:
1、 用分阶段的生命周期计划严格管理;
2、 坚持进行阶段评审;
3、 实行严格的产品控制;
4、 采用现代程序设计技术;
5、 结果就能清楚的审查;
6、 开发小组就该少而精;
7、 承认不断改进工程实践的必要性。