[关闭]
@ChuckIsReady 2016-06-23T05:43:09.000000Z 字数 4265 阅读 858

软件工程复习吧 ··········

未分类


第一章

软件危机

定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。它包括两方面:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

表现

1. 对于软件开发的成本和进度的估计很不准确。
2. 开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发
3. 开发的软件可靠性差
4. 软件通常没有适当的文档资料
5. 软件的可维护性差。
6. 软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。

原因

1. 软件的规模愈发庞大;
2. 软件开发的管理困难。 成功的软件开发经验没被很好地应用
3. 软件开发和维护中许多错误认识和方法的形成可以归结与计算机发展早期软件开发的个体化特点。
4. 软件开发技术落后。生产方式落后。开发工具落后,生产率提高缓慢

消除途径

1. 对计算机软件有一个正确的认识(软件≠程序
2. 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
3. 推广使用在实践中总结出来的开发软件的成功技术和方法
4. 开发和使用更好的软件工具

软件工程

定义
软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。

目的
是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。

本质特征

1. 软件工程关注于大型程序(软件系统)的构造
2. 软件工程的中心课题是分解问题,控制复杂性
3. 软件是经常变化的,开发过程中必须考虑软件将来可能的变化
4. 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具
5. 和谐地合作是开发软件的关键
6. 软件必须有效地支持它的用户
7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)

原理

1. 用分阶段的生命周期计划严格管理
2. 坚持进行阶段评审
3. 实行严格的产品控制
4. 采用现代程序设计技术
5. 结果应能清楚地审查
6. 开发小组的人员应该少而精
7. 承认不断改进软件工程实践的必要性

软件生命周期

组成时期:

软件生命周期模型
软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
瀑布模型 (重点)

优点:

它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。

缺点:

(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
(2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
(3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
(4) 会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。称之为“堵塞状态”。
它是软件工程中应用最广泛的过程模型,在软件工程中占有肯定和重要的位置
快速原型模型

在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原型,同客户沟通、交流,更好地了解客户需求,不断修改这个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户满意的产品。

第三章

需求分析

通过需求分析,明确用户对目标软件系统在功能、性能、行为、设计约束等方面的期望,回答软件系统“必须做什么”。
类型
`(1) 功能需求;
(2) 性能需求;
(3) 可靠性和可用性需求;
(4) 出错处理需求;
(5) 接口需求;
(6) 约束;
(7) 逆向需求;
(8) 将来可能提出的要求。

`
需求分析的任务:

  1. 确定对系统的综合要求
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正系统开发计划

获取方法
(1) 访谈
(2) 面向数据流,自顶向下求精
(3) 简易的应用规格说明
(4) 快速建立软件原型

需求获取困难原因(可能不考)

解决需求获取困难的方法(可能不考)

第五章

模块独立

耦合 对一个软件结构不同模块之间互连程度的度量

原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。

内聚 标志着一个模块内各个元素彼此结合的紧密程度

第七章(未写)

第八章(可能不考)

软件维护

所谓软件维护,就是在软件产品安装、实施并交付给用户使用后,在新版本产品升级之前,这段时间里软件厂商向客户提供的服务工作,称为该软件产品的软件维护。
特点

  1. 结构化维护与非结构化维护差别巨大
  2. 维护的代价高昂
  3. 维护的问题很多

类别

软件维护过程:

  1. 维护组织
  2. 维护报告
  3. 维护的事件流
  4. 保存维护记录
  5. 评价维护活动

可维护性因素
1. 可理解性
2. 可测试性
3. 可修改性
4. 可移植性
5. 可重用性

软件维护的分类
1.改正性维护
在使用过程中发现了隐藏的错误后,为了诊断和改正这些隐藏错误而修改软件的活动。
2.适应性维护
为了适应变化了的环境而修改软件的活动。
3.完善性维护
为了扩充或完善原有软件的功能或性能而修改软件的活动。
4.预防性维护
为了提高软件的可维护性和可*性,为未来的进一步改进打下基础而修改软件的活动。

第十一章

面对对象

准则
1. 模块化
面对对象软件开发模式,支持把系统分解成模块的设计原理:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块
2. 抽象
面对对象方法不仅支持过程抽象,而且支持数据抽象,此外某些语言还支持参数化抽象
3. 信息隐藏
在面对对象方法中,信息隐藏通过对象的封装性实现。
4. 弱耦合
耦合是指一个软件结构内不同模块之间互连的紧密程度,在面向对象方法总,对象是最基本的模块,因此耦合主要指的是不同对象之间相互关联的紧密程度,弱耦合有助于使得系统某一部分的变化对于其他部分的影响降到最低程度。
5. 强内聚
内聚衡量一个模块内各个元素彼此结合的紧密程度。在设计时力求做到高内聚
6. 可重用
软件重用是提高软件开发生产率和目标系统质量的重要途径,重用基本从设计阶段开始。

基本概念
面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。

核心概念
(1)对象(2)类(3)继承(4)聚集(5)消息。

软件重用的效益

  1. 质量
    随着每次重用都会有一些错误被发现并被清除,构建的质量也会随之改善。
  2. 生产率
    当把可重用的软件成分应用于软件开发的全过程时,创建计划、模型、文档、代码和数据所花费的时间将减少,从而能使用较少的投入给予相同级别的产品,提高了生产率。
  3. 成本
    软件重用带来净成本节省。

十三章

软件项目管理

特点: 软件产品与其他任何产品不同,它是无形的,完全没有物理属性。
表现为

1. 智力密集,可见性差;
2. 单件生产:在特定机型上,利用特定硬件配置,由特定的系统软件或支撑软件的支持,形成了特定的开发环境;
3. 劳动密集,自动化程度低:
4. 使用方法繁琐,维护困难;
5. 软件工作渗透了人的因素。软件管理的功能:软件工程管理是对软件项目的开发管理,是对整个软件生存期的所有活动进行管理。

主要功能

1. 制定计划:规定待完成的任务、要求、资源、人力和进度等;
2. 建立组织项目:为实施计划,保证任务的完成,需要建立分工明确的责任机构;
3. 配备人员:任用各种层次的技术人员和管理人员;
4. 指导:鼓励和动员软件人员完成所分配的情况。

软件估算模型

软件成本估算模型可分为两大类:理论模型和统计模型,具体如下:模块性成本模型、静态单变量模型(IBM 估算模型)、动态多变量模型(Putnam 估算模型)、结构性成本模型(COCOMO模型)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注