软件开发的关键性问题

上传人:宝路 文档编号:47747183 上传时间:2018-07-04 格式:PPT 页数:44 大小:655.96KB
返回 下载 相关 举报
软件开发的关键性问题_第1页
第1页 / 共44页
软件开发的关键性问题_第2页
第2页 / 共44页
软件开发的关键性问题_第3页
第3页 / 共44页
软件开发的关键性问题_第4页
第4页 / 共44页
软件开发的关键性问题_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《软件开发的关键性问题》由会员分享,可在线阅读,更多相关《软件开发的关键性问题(44页珍藏版)》请在金锄头文库上搜索。

1、软件开发过程的关键 因素1、软件的质量要素 2、软件开发的困惑 3、软件开发的方法 4、管理信息系统的特点 5、管理信息系统分析与设计的方法 6、数据库设计方法软件的质量要素n可维护性:软件必须能够不断进化以满足用户的需求 变 化,这是软件产品最根本的要素,因为工作环境 是不断变化的,软件也必然要跟着变化。n可依赖性:包括可靠性、保密性和安全性。可靠的软 件在系统失败的情况下,也不会导致人员伤亡和经济 损失。n有效性:软件不要浪费内存和CPU等系统资源,因而有 效性应包括响应时间、处理时间、内存利用率等。n可用性:软件必须具备可用性。必须是用户不用特殊 地努力就能操作。那么,软件必须提供用户界

2、面和充 分地说明文档。 软件的发展经历了这么久,却依然存在如下问题 : F一个软件的完成为什么总需要这么长的时间?软件开发存在的问题F为什么我们的开发成本总据高不下?F为什么我们不能在把软件交付给用户之前发现 软件中所有的错误?F?Casen美国IBM公司在1963年至1966年开发的IBM360机的操作系 统。这一项目花了5000人一年的工作量,最多时有1000人 投入开发工作,写出了近100万行源程序。.据统计 ,这个操作系统每次发行的新版本都是从前一版本中找出 1000个程序错误而修正的结果。.n这个项目的负责人F. D. Brooks事后总结了他在组织开发 过程中的沉痛教训时说:“.正

3、像一只逃亡的野兽落 到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法 逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭 ,.一批批程序员被迫在泥潭中拼命挣扎,.谁 也没有料到问题竟会陷入这样的困境.”。nIBM360操作系统的历史教训成为软件开发项目的典型事例 为人们所记取。问题出在哪里 ? 项目没有被很好地理解;计划不周,最终导致项目没有被很好地理解;计划不周,最终导致 进度拖延。进度拖延。 没有充分的文档资料没有充分的文档资料(documentation)(documentation) 软件可靠性软件可靠性(reliability)(reliability)缺少度量的标准,缺少度量的标准,

4、 质量无法保证。如何保证软件产品的质量,是质量无法保证。如何保证软件产品的质量,是 非常复杂困难的问题非常复杂困难的问题,特别对于规模庞大的软特别对于规模庞大的软 件件。 软件难以维护软件难以维护(maintainability) (maintainability) 不易升级不易升级(evolvability)(evolvability)问题出在哪里?软件开发的困惑n如何开发软件,怎样满足对软件的日益增 长的需求。n如何维护数量不断膨胀的已有软件n产生困惑的原因软件本身的原因不恰当的软件开发和维护方法软件本身的特点1.软件是一种逻辑实体,具有抽象性。 2.软件的生产与硬件不同,软件一旦研制开发

5、成功, 其生产过程变成简单的复制过程。3.软件对硬件和环境有着不同程度的依赖性。4.软件生产至今尚未摆脱手工方式,多数软件是自定 义的。5.软件本身是复杂的,成本相当昂贵。 6.软件的开发往往涉及到其他领域、各行各业的专门 知识,而且还往往与社会、人的组织和管理因素相 关,这对软件工程师提出了很高的要求。所以其开 发和维护必然困难。不恰当的软件开发和维护方法n忽视软件开发前期的调研和分析工作,仓促上阵,认 为软件开发就是写程序并设法使之运行。这如同不打 好地基就盖高楼一样,最终必垮台.n没有统一的、规范的方法论指导,文档资料不齐全。n忽视人与人的交流n轻视测试和维护。 怎么办呢?软件工程定义n

6、总之,软件工程可以定义为为了解决软件 危机,采用工程化的概念、原理和技术、 方法来开发和维护软件,把经过时间考验 证明是正确的管理技术和当前最好的技术 方法结合起来指导软件开发和维护的工程 学科。工具 方法 过程 质量焦点软件工程的要素软件工程目标n软件工程的目标是从根本上解决软件危机 ,采用工程化的管理和技术最终产生正确 的、可靠的、高效的软件产品。付出较少的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用较高的开发效率软件生存期(开发)模型n 软件开发模型直观地反映了从软件需求定义到软 件交付使用后报废为止,在整个生命期中的系统 开发、运行、维护所实施的全部

7、过程和活动。n正如同任何事物一样,软件也有一个孕育、诞生 、成长、n成熟、衰亡的生存过程。我们称其为软件生存周 期。n一般地,软件生存期六个步骤: (问题定义和可 行性研究、制定计划、需求分析、设计(总体设 计和详细设计)、程序编码、测试及运行维护问题定义n n关键问题是:要解决的问题是什么?关键问题是:要解决的问题是什么?n n系统分析员应该提出关于问题性质、工程系统分析员应该提出关于问题性质、工程 目标和工程规模的书面报告,且需要得到目标和工程规模的书面报告,且需要得到 用户对该报告的认可用户对该报告的认可可行性研究n n关键问题是:上一个阶段所确定的问题是关键问题是:上一个阶段所确定的问

8、题是 否有行得通的解决办法?否有行得通的解决办法?n n在进一步概括了用户的需求后,提出若干在进一步概括了用户的需求后,提出若干 种可能的解决方案,对每种方案都从技术种可能的解决方案,对每种方案都从技术 、经济、社会因素等方面分析可行性、经济、社会因素等方面分析可行性。n n制定出完成开发任务的制定出完成开发任务的实施计划实施计划, ,连同可行连同可行 性研究报告,提交管理部门审查。性研究报告,提交管理部门审查。需求分析n n关键问题:目标系统必须做什么?关键问题:目标系统必须做什么?n n对待开发软件提出的需求进行对待开发软件提出的需求进行分析分析并并 给出详细的给出详细的定义定义。n n编

9、写编写软件需求说明书或系统功能说明软件需求说明书或系统功能说明 书。书。n n提交管理机构提交管理机构评审评审。结构化分析方法 SAn结构化分析(Structured Analysis,SA)是由 Douglas Ross 提出的,由DeMarco进行推广的。n采用自顶向下、逐层进行功能分解的系统分析方 法来定义系统的需求。n适用于分析大型的数据处理系统。n方法的特点:利用数据流图(Data Flow Diagram ,DFD)来帮助理解问题,对问题进行分析。n一般工具:DFD、数据字典、结构化英语、判定 表、判定树等。结构化分析方法n功能分析工具:DFD、DD、结构化英语、判定表 和判定树。

10、n行为分析工具:状态迁移图、Petri网等。n数据分析工具:ER图或者EER(扩展ER)图。nSA主要针对数据处理领域,因此,系统分析的侧 重点在于功能分析和数据分析,而行为分析使用 得较少。设计n n总体设计总体设计 “ “如何解决问题如何解决问题” ”可以列出多种解决方案进行比较可以列出多种解决方案进行比较把各项需求转换成把各项需求转换成软件的体系结构软件的体系结构。结构中每一组成。结构中每一组成 部分都是意义明确的模块,每个模块都和某些需求相部分都是意义明确的模块,每个模块都和某些需求相 对应对应n n详细设计详细设计 “ “如何具体的实现系统如何具体的实现系统” ” 对每个模块要完成的

11、工作进行对每个模块要完成的工作进行具体的描述具体的描述,为源程序,为源程序 编写打下基础编写打下基础n n编写设计说明书,提交评审编写设计说明书,提交评审。结构化分析与结构化设计n nSASA的结果是的结果是SDSD的最基本的输入信息,由数据模型、功能模型和行的最基本的输入信息,由数据模型、功能模型和行 为模型表示的软件需求传送给设计者,设计者使用适当的设计方法为模型表示的软件需求传送给设计者,设计者使用适当的设计方法 完成数据设计、体系结构设计、接口设计和过程设计。完成数据设计、体系结构设计、接口设计和过程设计。n n数据设计数据设计 把分析阶段创建的信息域模型转变成实现软件所需要的数据结把

12、分析阶段创建的信息域模型转变成实现软件所需要的数据结 构构n n体系结构设计体系结构设计 确定程序的主要结构元素确定程序的主要结构元素( (程序构件程序构件) )之间的关系。之间的关系。n n接口设计接口设计 描述软件内部、软件与协作者之间以及软件与使用他的人之间描述软件内部、软件与协作者之间以及软件与使用他的人之间 的通信方式的通信方式n n过程设计过程设计 把程序体系结构中的元素,变换成软件构件的过程性描述把程序体系结构中的元素,变换成软件构件的过程性描述将分析模型转换为软件设计结构化设计SD方法n模块化可分解性可组装性可理解性连续性保护性信息隐蔽和局部化n n由由 parnas parn

13、as 方法提倡的信息隐蔽原理认为:每个模方法提倡的信息隐蔽原理认为:每个模 块的实现细节对于其它模块来说是隐蔽的。也就块的实现细节对于其它模块来说是隐蔽的。也就 是说,模块中所包含的信息(包括数据和过程)是说,模块中所包含的信息(包括数据和过程) 不允许其它不需要这些信息的模块使用。不允许其它不需要这些信息的模块使用。n n信息隐蔽信息隐蔽对于软件的测试与维护都有很大的好处对于软件的测试与维护都有很大的好处 。因为信息隐蔽可以减少把一个模块的错误扩散。因为信息隐蔽可以减少把一个模块的错误扩散 到其他模块中的机会。而且,信息隐蔽简化了软到其他模块中的机会。而且,信息隐蔽简化了软 件结构的复杂性。

14、件结构的复杂性。 信息隐蔽和局部化n通过信息隐藏,可以定义和实施对模块的 过程细节和局部数据结构的存取限制。n实现信息隐藏的模块具有很强的可移植性 和易维护性。n所谓局部化就是把一些关系密切的软件元 素物理地放得比较靠近。严格控制数据对 象可以访问的范围。n局部化有助于信息隐蔽。 模块独立性n模块独立性,是指软件系统中每个模块只涉及软件要 求的具体的子功能,而和软件系统中其它的模块的接 口是简单的。n例如,若一个模块只具有单一的功能且与其它模块没 有太多的联系,则称此模块具有模块独立性。n一般采用两个准则度量模块独立性。即模块间耦合和模块间耦合和 模块内聚模块内聚。 耦合耦合是对模块之间的互相

15、连接的紧密程度的度量。 内聚内聚是对一个模块内部各个成分彼此结合的紧密程度 的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。编码n n把软件设计转换成计算机可以接受的把软件设计转换成计算机可以接受的程序程序 代码代码,即写成以某一种特定程序设计语言,即写成以某一种特定程序设计语言 表示的表示的“ “源程序清单源程序清单” ”。n n写出的程序应当是结构良好、清晰易读的写出的程序应当是结构良好、清晰易读的 ,且与设计相一致的。,且与设计相一致的。测试n n单元测试单元测试:查找各模块在功能和结构上存在的问:查找各模块在功能和结构上存在的问 题并加以纠正。题并加以纠正。n n组装测试组装测

16、试:将已测试过的模块按一定顺序组装起:将已测试过的模块按一定顺序组装起 来。在组装过程对程序进行必要的测试。来。在组装过程对程序进行必要的测试。n n按规定的各项需求,逐项进行按规定的各项需求,逐项进行有效性测试,有效性测试,决定决定 已开发的软件是否合格,能否交付用户使用。已开发的软件是否合格,能否交付用户使用。n应该用正式的文档资料把测试计划、详细测试方 案及实际测试结果保存下来,作为软件配置的一 个部分。软件测试n软件测试是为了发现错误而执行程序的过 程。或者说,软件测试是根据软件开发各 阶段的规格说明和程序的内部结构而精心 设计一批测试用例(即输入数据及其预期 的输出结果),并利用这些测试用例去运 行程序,以发现程序错误的过程。 n黑盒测试n白盒测试n测试用例运行和维护n n改正性维护:改正性维护:运行中发现了软件中的运行中发现了软件中的 错误需要修正。错误需要修正。n n适应性

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号