软件工程学概述可行性分析与需求分析总体设计详细设计实现课件.ppt
《软件工程学概述可行性分析与需求分析总体设计详细设计实现课件.ppt》由会员分享,可在线阅读,更多相关《软件工程学概述可行性分析与需求分析总体设计详细设计实现课件.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程学概述软件工程学概述可行性分析与需求分析可行性分析与需求分析总体设计总体设计详细设计详细设计实现实现维护维护面向对象方法学引论面向对象方法学引论面向对象分析面向对象分析面向对象设计面向对象设计复习复习 5/16/20231上海大学计算机学院软件工程学概述软件工程学概述软件危机软件危机定义:定义:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。典型表现:典型表现:开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意;“闭门造车”;软件质量不可靠;软件常常是不可维护的;软件成本的比例逐年上升;软件产品“供不应求”;产生软件危机的原因产生软件危机的原因软件的规模加大、复
2、杂性提高、性能增强;软件是逻辑产品,尚未完全认识其本质和特点;缺乏系统的开发、维护大型软件项目的技术手段和管理方法;用户和软件开发人员的理解鸿沟;错误的认识和作法5/16/20232上海大学计算机学院软件工程学概述软件工程学概述软件工程软件工程定义定义软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。本质特性本质特性软件工程的中心课题是控制复杂性和谐地合作是开发软件的关键5/16/20233上海大学计算机学院软件工程学概述软件工程
3、学概述软件工程的软件工程的7条条基本原理基本原理1.用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理2.坚持进行阶段评审坚持进行阶段评审3.实行严格的产品控制实行严格的产品控制4.采用现代程序设计技术采用现代程序设计技术5.结果应能清楚地审查结果应能清楚地审查6.开发小组的人员应该少而精开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性5/16/20234上海大学计算机学院软件工程学概述软件工程学概述软件生命周期是软件产品或系统一系列相关活动的全周软件生命周期是软件产品或系统一系列相关活动的全周期。期。软件生命周期的软件生命周期的3个大阶段
4、个大阶段1.软件定义软件定义:确定软件开发总目标;确定工程的可行性;导出实现策略确定软件开发总目标;确定工程的可行性;导出实现策略及系统功能;估计资源和成本,并且制定工程进度表。及系统功能;估计资源和成本,并且制定工程进度表。问题定义、可行性研究、需求分析2.软件开发软件开发:具体设计和实现在前一个时期定义的软件具体设计和实现在前一个时期定义的软件总体设计、详细设计、编码和单元测试、综合测试3.软件维护软件维护:使软件持久地满足用户的需要使软件持久地满足用户的需要5/16/20235上海大学计算机学院软件工程学概述软件工程学概述生命周期中各阶段的任务生命周期中各阶段的任务1.问题定义:问题定义
5、:“要解决的问题是什么要解决的问题是什么?”;确定用户要求解决的性质、工确定用户要求解决的性质、工程的目标和规模。程的目标和规模。2.可行性研究:可行性研究:“对于上一个阶段所确定的问题有行得通的解决办法吗对于上一个阶段所确定的问题有行得通的解决办法吗?”,经济可行性、技术可行性、法律可行性、不同的方案经济可行性、技术可行性、法律可行性、不同的方案3.需求分析:需求分析:“为了解决这个问题,目标系统必须做什么为了解决这个问题,目标系统必须做什么”,确定系统确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景。景。
6、4.总体设计(概要设计)总体设计(概要设计):“概括地说,应该怎样实现目标系统概括地说,应该怎样实现目标系统?”;设设计出实现目标系统的几种可能的方案。推荐一个最佳方案。计出实现目标系统的几种可能的方案。推荐一个最佳方案。5.详细设计:详细设计:“应该怎样具体地实现这个系统呢应该怎样具体地实现这个系统呢?”;设计出程序的详细设计出程序的详细规格说明。规格说明。6.编码和单元测试:编码和单元测试:写出正确的容易理解、容易维护的程序模块;写出正确的容易理解、容易维护的程序模块;仔细仔细测试编写出的每一个模块。测试编写出的每一个模块。7.综合测试:综合测试:集成测试和验收测试,现场测试或平行运行集成
7、测试和验收测试,现场测试或平行运行8.软件维护:软件维护:使系统持久地满足用户的需要。包括:使系统持久地满足用户的需要。包括:改正性维护,适应性改正性维护,适应性维护,完善性维护,预防性维护。维护,完善性维护,预防性维护。5/16/20236上海大学计算机学院软件工程学概述软件工程学概述生命周期模型规定了把生命周期模型规定了把生命周期划分成哪些阶段生命周期划分成哪些阶段及及各个各个阶段的执行顺序阶段的执行顺序,因此,也称为过程模型。,因此,也称为过程模型。u典型的过程模型典型的过程模型1.瀑布模型瀑布模型(Waterfall model)2.快速原型开发模型快速原型开发模型(Rapid Pro
8、totyping model)3.增量模型增量模型(Incremental model)4.螺旋模型螺旋模型(Spiral model)5.喷泉模型喷泉模型6.其它模型其它模型极限编程XP(eXtreme Programming)RUP(Rational Unified Process)建造修补模型(Build-and-fix model)5/16/20237上海大学计算机学院软件工程学概述软件工程学概述瀑布模型瀑布模型特点特点1.阶段间具有顺序性和依赖性2.推迟实现的观点清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。3.质量保证的观点(文档驱动)每个阶段都必须完成规定的文档每个阶段
9、结束前都要对所完成的文档进行评审缺点缺点1.开发过程一般不能逆转,否则代价太大。2.规格说明很难理解:“我知道这是按我的要求做的,但不是我想要的样子。”3.软件的实际情况必须到项目开发的后期客户才能看到。5/16/20238上海大学计算机学院软件工程学概述软件工程学概述增量模型增量模型把软件产品作为一系列增量构件来把软件产品作为一系列增量构件来设计、编码、集成和测试。设计、编码、集成和测试。优点优点每个阶段交付一个可用的产品。减少一个全新产品给客户带来的心理上的影响。分阶段地交付产品不需要大的资金支出。需求经常变化,增量模型的灵活性使其具有更加优越的适用性。缺点缺点需要一个开放的结构,方便构件
10、的加入。5/16/20239上海大学计算机学院软件工程学概述软件工程学概述生命周期模型优点缺点瀑布模型瀑布模型文档驱动的有序方法文档驱动的有序方法交付产品可能不符合客户交付产品可能不符合客户的要求的要求快速原型模型快速原型模型确保交付的产品符合客户的要求确保交付的产品符合客户的要求还没有证明无懈可击还没有证明无懈可击增量模型增量模型增大投资的早期回报增大投资的早期回报要求开放的结构,可能退要求开放的结构,可能退化为建造化为建造-修补模型修补模型螺旋模型螺旋模型结合上述所有模型的特性结合上述所有模型的特性只能用于大型的内部软件只能用于大型的内部软件产品,开发者必须精通风产品,开发者必须精通风险分
11、析和风险排除险分析和风险排除5/16/202310上海大学计算机学院可行性分析与需求分析可行性分析与需求分析需求分析的需求分析的任务任务1.准确地回答准确地回答“系统必须做什么系统必须做什么?”2.“分析软件需求和书写软件需求规格说明书分析软件需求和书写软件需求规格说明书”软件需求软件需求用户解决问题或达到目标所需要的条件或能力;用户解决问题或达到目标所需要的条件或能力;系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力有的条件或能力反映上述两个定义中所描述的条件或能力的文档说明反映上述两个定义中所描述的条件或
12、能力的文档说明需求层次:业务需求需求层次:业务需求用户需求用户需求功能与非功能需求功能与非功能需求具体任务具体任务确定对系统的确定对系统的综合要求综合要求功能需求、性能需求、可靠性和可用性需求功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向、出错处理需求、接口需求、约束、逆向需求、扩展需求需求、扩展需求分析系统的分析系统的数据要求数据要求导出系统的导出系统的逻辑模型逻辑模型书写书写软件需求规格说明书软件需求规格说明书修正系统开发计划修正系统开发计划5/16/202311上海大学计算机学院需求分析需求分析数据流图数据流图数据流图(数据流图(DFD)符号符号数据源点数据源
13、点/数据终点数据终点数据流数据流数据存储数据存储加工加工/处理处理根据描述画数据流图根据描述画数据流图5/16/202312上海大学计算机学院总体设计总体设计总体设计的任务总体设计的任务1.1.“概括地说,系统应该如何实现?概括地说,系统应该如何实现?”2.2.系统划分系统划分:即确定组成系统的即确定组成系统的程序、文件、数据库、人工过程和文程序、文件、数据库、人工过程和文档等档等3.3.设计软件的结构:即确定每个程序是由哪些模块组成,以及这设计软件的结构:即确定每个程序是由哪些模块组成,以及这些模块相互间的关系。些模块相互间的关系。5/16/202313上海大学计算机学院总体设计总体设计设计
14、原理设计原理1.模块化模块化模块化的根据C C(P1P1P2P2)C C(P1P1)C C(P2P2)E E(P1P1P2P2)E E(P1P1)E E(P2P2)2.抽象抽象抽象就是抽出事物的本质特性而暂不考虑它们的细节3.3.逐步求精逐步求精为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。4.信息隐藏和局部化信息隐藏和局部化信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化:把一些关系密切的软件元素物理地放得彼此靠近。5.模块独立模块独立每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。模块独立性
15、的衡量标准模块内聚(Cohension):模块内各元素交互的程度模块耦合(Coupling):模块间交互程度5/16/202314上海大学计算机学院总体设计总体设计各种耦合的含义各种耦合的含义设计时力争做到低耦合。应该采取的设计原则是:尽量设计时力争做到低耦合。应该采取的设计原则是:尽量使用数据耦合,少用控制耦合和特征耦合,限制公用耦使用数据耦合,少用控制耦合和特征耦合,限制公用耦合的范围,完全不用内容耦合。合的范围,完全不用内容耦合。耦耦合合程程度度高高低低耦合耦合1.内容耦合内容耦合2.共用耦合共用耦合3.控制耦合控制耦合4.印记(特征)耦合印记(特征)耦合5.数据耦合数据耦合5/16/2
16、02315上海大学计算机学院总体设计总体设计各种内聚的含义各种内聚的含义设计时力争做到高内聚,并且能够辨认出低内聚设计时力争做到高内聚,并且能够辨认出低内聚的模块,通过修改设计提高模块的内聚程度。的模块,通过修改设计提高模块的内聚程度。内内聚聚程程度度低低高高内聚内聚1.偶然性内聚偶然性内聚2.逻辑性内聚逻辑性内聚3.时间性内聚时间性内聚4.过程性内聚过程性内聚5.通信性内聚通信性内聚6.顺序内聚顺序内聚7.功能性内聚功能性内聚8.信息性内聚信息性内聚5/16/202316上海大学计算机学院总体设计总体设计启发规则启发规则1.改进软件结构提高模块独立性改进软件结构提高模块独立性2.模块规模应该
17、适中模块规模应该适中3.深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内模块的作用域应该在控制域之内模块的作用域:受该模块内一个判定影响的所有模块的集合。模块的控制域:模块本身以及所有直接或间接从属于它的模块的集合。所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块。5.力争降低模块接口的复杂程度力争降低模块接口的复杂程度6.设计单入口单出口的模块设计单入口单出口的模块7.模块功能应该可以预测模块功能应该可以预测5/16/202317上海大学计算机学院总体设计总体设计模块的判定作用范围模块的判定作用
18、范围(a)差的结构图;差的结构图;(b)不理想的结构图;不理想的结构图;(c)理想的结构图理想的结构图TOPABCDEF(b)TOPABCDEF(a)TOPABCDEF(c)5/16/202318上海大学计算机学院总体设计总体设计结构图结构图描述软件系统的模块层次结构,清楚地反映出程序中各模块之间描述软件系统的模块层次结构,清楚地反映出程序中各模块之间的的调用关系调用关系和数据传递。和数据传递。AB输入输入数据数据输出输出数据数据调用模块调用模块被调用模块被调用模块选择调用选择调用循环调用循环调用5/16/202319上海大学计算机学院总体设计总体设计面向数据流的设计方法面向数据流的设计方法基
19、本思想:基本思想:DFD 结构图结构图两种信息流类型两种信息流类型变换流:掌握从变换流到初始结构图的转换变换流:掌握从变换流到初始结构图的转换事务流事务流5/16/202320上海大学计算机学院详细设计详细设计详细设计的任务详细设计的任务不是具体地编写程序,而是设计程序的不是具体地编写程序,而是设计程序的“蓝图蓝图”,确定每个模块,确定每个模块的处理过程。的处理过程。结构程序设计结构程序设计自顶向下逐步求精;自顶向下逐步求精;具有单入、单出的控制结构(取消具有单入、单出的控制结构(取消GOTO语句);语句);结构化定理:任何单入口单出口的程序都可以由结构化定理:任何单入口单出口的程序都可以由“
20、顺序顺序”、“选选择择”和和“循环循环”三种基本结构实现。三种基本结构实现。过程设计的工具(过程设计的工具(重点是画图重点是画图)程序流程图程序流程图盒图盒图PAD图图判定表判定表5/16/202321上海大学计算机学院详细设计详细设计程序流程图的基本符号程序流程图的基本符号(1)1)顺序结构顺序结构AB(2)(2)选择结构选择结构PBAFT(3)(3)先判定型循环结构先判定型循环结构TPSF(4)(4)后判定型循环结构后判定型循环结构FSTP(5)(5)多情况选择多情况选择(case structure)5/16/202322上海大学计算机学院详细设计详细设计PAD图的图的基本符号基本符号5
21、/16/202323上海大学计算机学院详细设计详细设计判定表判定表5/16/202324上海大学计算机学院实现实现编码风格编码风格编码风格编码风格的作用就是使的作用就是使代码容易读代码容易读;风格良好的代码更容易阅读和理解,错误更少;风格良好的代码更容易阅读和理解,错误更少;1.使用一致和有意义的标识符名使用一致和有意义的标识符名2.用缩进显示程序结构用缩进显示程序结构3.用加括号的方式排除二义性用加括号的方式排除二义性4.避免大量使用循环嵌套和条件嵌套避免大量使用循环嵌套和条件嵌套5.当心运算符的副作用当心运算符的副作用6.把数定义称常量把数定义称常量7.利用利用sizeof()计算对象的大
22、小计算对象的大小8.清晰的代码,而非最巧妙的代码清晰的代码,而非最巧妙的代码9.程序的注释程序的注释序言性注释和功能性注释对一段程序注释,而不是每一个语句10.使用数据结束标记(使用数据结束标记(EOF、BOF),),不要指定数据的数目来判断文件不要指定数据的数目来判断文件的结束。的结束。5/16/202325上海大学计算机学院实现实现测试测试测试的目的测试的目的就是在软件投入生产性运行之前,尽可能多地发现软就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。件中的错误。测试是为了发现程序中的错误而执行程序的过程。测试是为了发现程序中的错误而执行程序的过程。调试的目的调试的目的是诊断并改
23、正错误。是诊断并改正错误。对软件规格说明、设计和编码的最后复审。对软件规格说明、设计和编码的最后复审。开发总工作量的开发总工作量的40%40%以上,极端情况下,其他开发步骤总成本的以上,极端情况下,其他开发步骤总成本的3 3倍到倍到5 5倍。倍。好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。成功的测试成功的测试是发现了至今为止尚未发现的错误的测试。是发现了至今为止尚未发现的错误的测试。测试只能查找出程序中的错误,不能证明程序中没有错误。测试只能查找出程序中的错误,不能证明程序中没有错误。Pareto原理:原理:80%的错误很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 工程学 概述 可行性 分析 需求 总体 设计 详细 实现 课件
限制150内