第一章 软件工程学概论
1、软件危机产生的原因
软件本身的特点:难于维护、逻辑复杂
软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护 课本表述:
1、 软件不同于硬件,它是计算机中的逻辑部件而不是物理部件 2、 软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的
增加而呈现指数上升。
3、 软件本身特有的特点确实给开发和维护带了一些客观困难
4、 软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护) 5、 对用户要求没有完整准确的认识就匆忙开始着手编写程序 6、 在软件不同阶段进行修改需要付出的代价是很不相同的
2、软件危机的表现(什么是软件危机)
(1)、成本高:
(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多 (3)、进度难以控制: ●项目延期比比皆是
●由于进度问题而取消的软件项目较常见 ●只有一小部分的项目能够按期完成 (4)、维护十分困难:
▼软件维护的多样性 ▼软件维护的复杂性 ▼软件维护的副作用
3、克服软件危机
(1)、管理的角度: 软件开发过程的研究、文档的标准化以及人员的交流方式等 (2)、软件开发方法的研究 结构化软件开发方法, 面向对象的开发
4、软件工程的定义
概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得
到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 (1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。 (2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径 总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。他借鉴传统工程的原理、方法,以提高质量,降低成本为目的。
5、软件工程的本质特性
品
1、 关注与大型程序的构造 2、 中心课题是控制复杂度 3、 软件经常变化
4、 开发软件的效率非常重要 5、 和谐的合作是开发软件的关键 6、 软件必须有效地支持它的用户
7、 在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产
6、软件工程的基本原理
1、用分阶段的生命周期计划严格管理 2、坚持进行阶段评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚地审查 6、开发小组应该少而精
7、承认不断改进软件工程实践的必要性
软件工程学包含3个要素:方法、工具和过程
7、软件生命周期
(1)、概念: 软件生命周期由软件定义、软件开发和运行维护(也成软件维护)3个时期组成。 (2)、内容:
1、 问题定义
回答“要解决的问题是什么?“,写出关于问题性质、工程目标和工程规模的书面报告
2、 可行性分析
回答”对于问题是否有行得通的解决办法?“,即探索问题是否值得去解,是否有可行的办法
3、 需求分析
确定”为了解决这个问题,目标系统必须做什么“,确定目标系统必须具备哪些功能,得到需求规格说明书。
4、 总体设计
回答”概括地说,应该怎样实现目标系统?“,确定程序由哪些模块组成以及模间的关系
5、 详细设计
回答”应该怎样具体地实现这个系统呢?”,确定实现模块功能所需要的算法与数据结构
6、 编码和单元测试
写出正确的容易理解、容易维护的程序模块,然后仔细测试每个模块
7、 综合测试
通过各种类型的测试(及相应的调试)是软件达到预定要求
8、 软件维护
通过各种必要活动是系统持久地满足用户需求
8、生命周期模型
(1)、瀑布模型 传统瀑布模型特点:
1、 阶段间具有顺序性与依赖性
2、 推迟实现的观点 3、 质量保证的观点 瀑布模型
优点:
1、 可强迫开发人员使用规范的方法(例如:结构化技术); 2、 严格规定每个阶段必须提交的文档;
3、 要求每个阶段交出的所有产品都必须通过验证。 缺点:
1、“瀑布模型是由文档驱动的”成为主要缺点 适用范围: 适合于用户需求明确、完整、无重大变化的软件项目开发。
(2)、快速原型模型
适用范围:
用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等情况。
(3)、增量模型 特点:
1、反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程
产生一个“增量”的发布或提交,该增量均是一个可运行的产品。
2、 早期的版本实现用户的基本需求,并提供给用户评估的平台。 优点:
1、 在较短时间内向用户提交可完成部分工作的产品;
2、 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减
少一个全新的软件可能给客户组织带来的冲击;
缺点:
1、 软件体系结构必须是开放的;
2、 开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾; 3、 多个构件并行开发,具有无法集成的风险。
(4)、螺旋模型 基本思想: 使用原型或其他方法来降低风险。 适用范围: 适用于内部开发大规模软件项目。 优点:
1、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质
量作为软件发的一个重要目标 2、减少了过多测试或测试不足 3、维护和开发之间并没有本质区别
缺点:
1、 风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大 2、 随着迭代次数的增加,工作量加大,软件开发成本增加
(5)、喷泉模型 特点:
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象
技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。
(6)、Rational统一过程
RUP重复一系列周期,每个周期由一个交付给用户的产品结束。每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流(需求、分析、设计、实现、测试)分别迭代。
第二章 可行性研究
1、 概念(目的)
用最小的代价在尽可能短的时间内确定问题是否能够解决,不是解决问题,而是确
定问题是否值得去解决。
2、 可行性研究任务
了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件
项目的可行性,编写可行性研究报告,制定初步项目开发计划。
即对软件开发以后的行动方针提出建议。
3、 研究内容
(1)
(2) (3) (4)
技术可行性 使用现有的技术能实现这个系统吗?
经济可行性 这个系统的经济效益能超过它的开发成本吗? 操作可行性 系统的操作方式在这个用户组织内行得通吗? 法律可行性 新系统开发是否会侵犯法藤、集体或国家利益?
4、 数据字典
(1)、内容
1、数据流
2、数据流分量(即数据元素) 3、数据存储 4、处理 (2)、作用
对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素都有一个确切的定义。
软件工程期末复习要点归纳总结



