欢迎来到天天文库
浏览记录
ID:6167151
大小:1.03 MB
页数:211页
时间:2017-11-14
《《软件工程》各章节重点》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、--软件设计软件工程内容提要软件设计基础原理概要设计详细设计软件设计软件设计是软件开发的最重要阶段;是保证软件质量的重要步骤;软件设计是把用户需求准确转化为软件系统的唯一途径。软件设计软件设计是把软件需求转换为软件表示的过程。它包含两个阶段:概要设计将软件需求转化为数据结构和软件的系统结构。详细设计通过对结构表示进行细化,得到软件详细的数据结构和算法。软件设计的基础概念软件结构软件结构包括两部分,一是软件模块的层次结构;二是数据的结构。通常软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统模型
2、出发,对整个问题进行分解,使其每一部分用一个或几个软件成分加以解决,从而解决整个问题。该过程可用下图形象表示:P1P2P3S1S2S3软件设计的基本原理抽象模块化逐步求精信息隐藏与局部化模块的独立性抽象抽象,即析取出事物的本质特征而不考虑他们的细节。抽象是人类认识复杂问题的重要思维工具之一。抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象。下层概念是上层概念的精化和细化。模块化模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问的。例如,过程。函数、子程序、宏等等都可作为模块。
3、模块具有三个基本属性:功能—模块实现的功能逻辑—描述模块内部怎么做状态—模块使用时的环境和条件模块化模块的特征:内部特征—模块的名字、参数等;外部特征—完成模块功能的程序代码和模块内部数据。模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。模块化实际上是系统分解和抽象的过程。模块化理想的模块每个模块只解决一个问题;每个模块的功能应该明确,使人容易理解;模块之间的联结关系简单,具有独立性;用理想模块构建的系统,容易使人理解,易于编程,易于测试,易于修改和维护。对用户来说,其感兴趣的是模块
4、的功能,而不必理解模块内部的结构和原理。模块化的理论依据设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。对于两个问题P1和P2,如果有:C(P1)>C(P2),则显然有:E(P1)>E(P2);根据人类解决一般问题的经验,有:C(P1+P2)>C(P1)+C(P2);进而获得:E(P1+P2)>E(P1)+E(P2)。模块化的理论依据此不等式表明:单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决所需要的工作量要少。这种“分而治之”的思想提供了模块化的理论依据
5、:把复杂问题分解成许多容易解决的小问题,则原来复杂的问题也就容易解决了。模块化与软件成本成本或工作量模块数目模块成本接口成本最小成本区软件总成本αM模块化采用模块化原理使软件结构清晰,不仅容易设计也容易阅读和理解:因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易调试和测试,有助于提高软件的可靠性;因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性;模块化也有助于软件项目的组织管理,一个复杂的大型软件可以有许多程序员分工编写,进而提高了开发效率。逐步求精逐步求精是人类解决复杂问题
6、的基本技术之一,它是把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法。为了能集中精力解决主要问题而尽量推迟问题细节的考虑。它可以看作是一项把一个时期必须解决的种种问题按优先级别排序的技术。逐步求精和抽象是一对互补的概念。信息隐藏和局部化应用模块化原则,自然会产生一个问题“为了得到一组模块,应该怎样分解软件呢?”信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息对不需要这些信息的模块来说是不能访问的。局部化指把一些关系密切的软件元素放得彼此靠近。显然,局部化有助于信息隐藏。信
7、息隐藏和局部化实际上应该隐藏的不是模块的一切信息,而是模块的实现细节。因此这条原理也被称作“细节隐藏”。隐藏,意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。信息隐藏和局部化有助于软件测试和维护!模块独立性模块独立性是模块化、信息隐藏和局部化等概念的直接结果。为什么模块独立性很重要?有效模块化的软件比较容易开发出来;独立的模块比较容易测试和维护。总之,模块独立是设计好坏的关键!模块独立的含义:模块完成独立的功能,与其他模块的接口简单;符合信息隐蔽
8、和信息局部化原则;模块间关连和依赖程度尽可能小。模块独立的度量模块的独立程度可由两个定性标准来衡量:耦合耦合衡量不同模块彼此间相互依赖的紧密程度;内聚内聚衡量同一模块内部各元素彼此组合的紧密程度;耦合性耦合是程序结构内不同模块之间相互关联的度量,是影响软件复杂程度和设计质量的重要因素。耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模
此文档下载收益归作者所有