软件设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 课件
- 资源描述:
-
1、软件设计内容概要内容概要软件设计的基本概念面向对象设计及UML软件体系结构设计Usecase设计用户界面设计基本概念基本概念软件设计的定义软件设计的重要性软件设计的目标软件设计的基本原则Design for ChangeDesign for Reuse软件设计的定义软件设计的定义1.The process of defining the architecture, components, interfaces, and other characteristics of a system or component.2.The results of that process.IEEE Standa
2、rd Glossary of Software Engineering Terminology, IEEE std 1990.软件设计的重要性软件设计的重要性“怎么做”需求分析:“做什么”软件实现的基础和依据影响软件测试及维护的难易提供了软件的表示,使软件质量评价成为可能软件设计的目标软件设计的目标设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。 “There are two ways of constructing a software des
3、ign: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. ” C. A. R. CoareKISS:Keep It Simple, Student简单化是一种美德软件设计的基本原则软件设计的基本原则软件设计的基本原则软件设计的基本原则Design
4、 for Change信息隐蔽抽象化自顶向下,逐步细化模块化Design for Reuse复用的基本概念基于构件的软件开发Design for changeWhy?变化是不可避免的,变化是可以预期的How?识别并隔离可能变化的区域设计可以隔离变化的接口信息隐蔽信息隐蔽每个模块的实现细节对于其他模块来说是隐藏的,即模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。public void foo () Vector vt = new Vector (); vt.add (“Hello”); vt.add (0, new Integer (1); System.out.pri
5、ntln (“The size is: ” +vt.capacity (); vt.remove (0); vt.clear ();抽象化抽象化过程抽象层次I:用问题所处环境的术语来描述软件层次II:任务需求的描述层次III:程序过程表示数据抽象在不同层次上描述数据的细节控制抽象包含程序控制机制而无须规定其内部细节自顶向下,逐步细化自顶向下,逐步细化对软件系统体系结构中,各个层次的过程描述和数据描述逐步细化,直到可以用程序设计语言实现为止“顶”:概念性的描述“底”:实现的细节与“抽象”的过程相对应模块化模块化将整个软件分成若干可单独命名和编址的部分,称之为模块好处降低复杂度提高软件的可维护性和
6、对于变化的灵活性有助于各个功能并行地开发、测试,提高生产率提高软件的可理解性有利于软件的复用(设计复用、代码复用)Trade-offs将大而复杂的问题分解成容易处理的小问题,可降低复杂性,减少工作量E (P) E (P1) + E (P2) 小问题不独立,则相互作用可能增加工作量E (P1+I1*P1) + E (P2+I2*P2) E (P1) + E (P2)“分解问题”增加工作量E (P1+I1*P1) + E (P2+I2*P2) + E (D)结论:粒度,数量模块粒度减小 模块内结构简单单个模块的工作量减小模块数量增多 模块间联系复杂模块分解及集成的工作量增大存在一个模块数M,使总代
7、价最小软件总成本集成成本成本/模块模块数量成本或工作量最小成本区域M模块化模块化-模块独立性(模块独立性( Independence)软件系统中每个模块只涉及软件要求的具体的子功能,而和其他的模块的接口简单度量准则耦合性(Coupling)内聚性(Cohesion)模块耦合性( Coupling)程序结构中各个模块之间相互关联地度量接口的复杂程度、调用方式、交互的信息1. 非直接耦合:模块之间没有直接关系,它们之间的联系是通过主模块的控制和调用来实现的。public class mainClass () public static void main (String s) Frame fr1
8、= new Frame (); Frame fr2 = new Frame (); 非直接耦合实例非直接耦合实例public class mainClass () public static void main (String s) Frame fr1 = new Frame (); fr1.setTitle (“Vending Machine”); 数据耦合实例数据耦合实例2. 数据耦合: 模块之间通过传递简单数据变量(不是控制参数、公共数据结构或外部变量)交换信息优点:松散耦合,独立性强。public class mainClass () public static void main (
9、String s) MenuBar mb = new MenuBar (); Frame fr1 = new Frame (); fr1.setMenuBar (mb); 标记耦合实例标记耦合实例3. 标记耦合:模块之间通过传递数据结构交换信息。问题:参与模块需清楚数据结构,数据结构的改变导致所有相关模块的更改。4. 控制耦合:一个模块通过传送控制信息,可选择另一模块的功能。 问题:主控模块需了解被控模块的内部逻辑关系,对被控模块的修改会影响主控模块。public class msgBoard extends Panel () public showMsg (String msg, boole
10、an isAdm) StringBuffer bmsg = new StringBuffer ();if (isAdm) bmsg.append (“Hello Administrator: ”);else bmsg.append (“Hello customer: ”);bmsg.append (msg); 控制耦合实例控制耦合实例5. 外部耦合:模块之间共享全局简单变量。问题:容易引起“涟漪效应”缺乏对数据访问的控制模块与全局数据绑定实例:C语言程序中的extern对外界环境的依赖,如I/O设备,数据库,操作系统,网络协议等NOTE:逻辑关系,无物理依赖public static void
11、 main(String args) String url = jdbc:odbc:myDB; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); try con = DriverManager.getConnection(url, Admin, duke1); 外部耦合实例外部耦合实例6. 公共耦合:模块之间共享公共数据环境。(全局数据结构、共享通信区。物理结构)问题:模块之间及模块与数据之间的依赖性强。D1D2DnM1M2Mm公共耦合的复杂程度随耦合模块个数的增加而显著增加例如:假设有M个模块,N个数据,任意模块可以访问任意数据,则共有关联关系
12、: M * (M-1) * N7. 内容耦合:一个模块可以直接改变另一模块的数据流或控制流。1)一个模块直接访问另一个模块的内部数据;2)一个模块不通过正常入口转到另一模块内部;3)两个模块有一部分程序代码重叠;4)一个模块有多个入口。模块内聚性( Cohesion)模块功能强度模块内部各个元素彼此结合的紧密程度的度量1. 功能内聚:模块中的各部分都是完成某一具体功能必不可少的组成部分所有部分都为了完成一个具体功能而协同工作,紧密联系,不可分割各部分若分开则导致模块间很强的耦合性2. 信息内聚:模块完成多种功能各个功能在同一数据结构上操作每一项功能有一个唯一的入口点多个功能内聚模块的组合信息隐
13、蔽:将某个数据结构、资源或设备隐藏在一个模块内3. 通信内聚:模块内各功能都使用了相同的输入数据,或产生了相同的输出数据通过数据流图定义4. 过程内聚:模块内的处理是相关的,且必须以特定次序执行例如:错误判定及错误处理5. 时间内聚:模块的各个功能的执行与时间有关,所有功能必须在同一时间段内执行例如:模块初始化、终止6. 逻辑内聚:把相关功能组合在一起,每次调用时,由传送给模块的判定参数来确定模块应执行哪一种功能7. 巧合内聚:模块内个部分之间没有联系,或者即使有联系,联系也很松散。逻辑内聚巧合内聚软件设计的目标:高内聚,低耦合增强模块内的关联性,降低模块间的关联性增强模块的独立性Design
14、 For Reuse软件应作为一种可复用的资产,软件复用可带来较高的投资回报率降低开发和维护成本提高交付效率提高质量可复用的软件资产需求、设计、编码、测试解决方案,设计方案工具过程经验和最佳实践软件复用颗粒度软件复用颗粒度应用系统复用COTS (Commercial-Off-The-Shelf)Family applications构件复用复用部分应用系统,从子系统到单一对象功能复用作为单一的功能复用,如标准图形/数学库Some Reuse FactsHitachi: reduced number of late projects from 72% to 7% in 4 yearsToshib
15、a: improved productivity 3 times in 9 years, 50% code reuse; reduced error rate from 7-20 per 1 KLOC to 2-3Fijitsu: improved productivity by 2/3, reduced error rate by factor of 10NEC: increased productivity by 26% to 91%HP: shortened time-to-market by factor of 4, reduced error rate by factor of 10
16、“CBSE is changing the way large software systems are developed. CBSE embodies the buy, dont build philosophy shifts the emphasis from programming software to composing software systems. Implementation has given way to integration as the focus. As its foundation is the assumption that there is suffic
17、ient commonality in many large software systems to justify developing reusable components to exploit and satisfy that commonality.”“From Subroutine to Subsystems: Component Based Software Development,” P.C. Clements, American Programmer, 1995基于构件的软件工程基于构件的软件工程(Component Based Software Engineering)构件
18、定义构件定义Software componentA nontrivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of a well-defined architectureComponent provide/require services through its published interfacesRun-time software componentA dynamic bindable package of one or mo
19、re programs managed as a unit and accessed through documented interfaces that can be discovered in run time构件实例构件实例White-box source level componentsData structure: array, structProcedures or functions: sine(x), sort(x)Class, objectGroup of classesIncomplete, generic class: abstract classes, template
20、sBlack-box binary componentsCompiled libraryGUI-generated user interface, DBMSTools: Excel, WordSUN JAVA Beans, MS ActiveX control, OMG CORBA componentsComponent InterfacesProvides interfaceDefines the services that are provided by the component to other componentsRequires interfaceDefines the servi
21、ces that specifies what services must be made available for the component to execute as specifiedProvides interfaceRequires interfacePrintPrintServiceGetQueueRemoveTransferRegisterUnregisterGetPDfilePrinterIntExample: Printing ServicesPotential BenefitsSpeed up system production by reusing component
22、s as both development and validation time should be reduced.Accelerated developmentStandard components such as user interface components like menus and buttons. Standards complianceInstead of application specialists doing the same work on different projects, these specialists can develop reusable co
23、mponents which encapsulates their knowledge.Effective use of specialistsReduce the uncertainty of project cost estimation, particularly true when large components reuse.Reduced process riskReused components that have been exercised in the working system should be more reliable than new components. T
24、hey have been tried and tested, and faults discovered, eliminated and reduced. Increase reliabilityExplanationBenefitsPotential ProblemsSoftware components have to be discovered in a library, understood and adapted to work in a new environment. Finding and adapting reusable componentsCurrent techniq
25、ues for classifying, cataloguing and retrieving software components are immature.Maintaining a component libraryEngineers prefer to rewrite components. Two reasons exist: trust and looking for challenges. Not-invented-here syndromeCASE toolsets may not support development with reuse. It may be diffi
展开阅读全文