- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第四章软件设计
软件设计实际上是一个两部分的迭代过程。01总体设计(或系统设计):告诉用户系统具体将要做什么。一旦用户同意了这个总体设计,我们会将这个总体设计转换为更加详细的文档。02技术设计:让系统建设者了解要解决用户的问题所需要的硬件和软件。确定设计的过程是一个迭代的过程,这是因为设计者对于需求的理解、提出解决办法、测试办法的可行性和为程序员提供设计文档始终处于一个反复的过程中。03软件设计概论
软件设计概论一个优秀的总体设计应该包含以下特征:它是由用户语言书写的 不包括用户不熟悉的专业词汇它描述系统功能独立于实现过程与需求分析文档相关联技术设计主要描述系统的硬件配置、软件需要、人机界面、输入和输出,和网络体系结构等。也就是说,技术设计是系统说明的一个技术层面上的描述,它至少应该包括以下方面:主要的硬件组成的描述和它们的功能软件组成的层次和功能数据结构和数据流
软件设计的重要性
4.1软件设计的目标和任务软件需求:解决“做什么”软件设计:解决“怎么做”软件设计的任务问题结构(软件需求)软件结构从软件需求规格说明书出发,形成软件的具体设计方案。映射12第四章软件设计
将分析模型转换为软件设计数据字典数据流图E-R图状态变迁图加工规约控制规约数据对描述象数据设计体系结构设计接口设计过程设计分析模型设计模型
将分析模型转换为软件设计上图中通过数据、功能和行为模型展示的软件需求被传送给设计阶段,选择其中的设计方法,设计阶段产生出:数据设计:将分析时创建的信息域模型变换成实现软件所需的数据结构。体系结构设计:定义程序的主要结构元素之间的关系。接口设计:描述了软件内部、软件和协作系统之间的以及软件同人之间如何通信。过程设计:将程序体系结构元素变换为对软件构件的过程描述。
2.软件的总体结构主要回答的问题软件设计的问题软件的组成部分软件的层次关系模块的内部处理逻辑模块之间的界面工具—如何描述软件的总体结构方法—用什么方法由问题结构导出软件结构评估准则—什么样的软件结构是“最优的”
5.软件设计分为两个阶段(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。4.软件设计方法结构化设计方法(SD)面向数据结构的设计方法(JSD方法)面向对象的设计方法(OOD)
01020304050607080910概要设计的过程:设想可能的方案选取合理的方案推荐最佳方案数据库设计功能分解设计软件结构制定测试计划编写文档审查与复审6概要设计的任务与步骤
软件过程抽象信息局部化软件结构模块化信息隐蔽4.2软件设计基础
模块:定义输入、输出和特性的程序实体构件:可重复使用的软件组件模块(module)与构件(component)抽象:分层次考虑和处理问题(数据和过程)细化:从高到低的逐步分解过程抽象(abstract)与细化(refinement)对其它模块隐藏模块内部的数据和过程信息隐藏Designwithreuse,designforreuse软件复用软件设计的基本概念
01过程构件(模块)的层次结构02构件间交互的方式03构件的数据结构软件体系结构包括:4.2.1软件体系结构
深度01宽度02扇出03扇入04(模块的层数)05(同一层最大模块数)06(一个模块直接调用的模块数)07(调用一个给定模块的模块个数)08控制结构(程序结构)
例子:扇出计算实发工资取得工资数据编外人员扣款编外人员工资编外人员税收薪金制工资额计时制工资额常规扣款税收扣款煎饼形结构不可取!
例子:扇出常规扣款编外人员实发工资计算实发工资取得工资数据计时工人实发工资计薪工人实发工资编外人员扣款编外人员税收编外人员工资税收扣款计时制工资额薪金制工资额塔型结构
只有一个顶层(0层)模块邻层存在一模块与它有关同层模块间不发生联系0层外任一模块都会在它的上下控制结构的层次规则:
01软件过程用以描述各模02块的处理细节(算法的详03细描述),包括对下层模04块控制的操作细节。4.2.2软件过程
4.2.3模块化(Modularity)模块化是好的软件设计的一个基本准则高层模块从整体上把握问题,隐蔽细节复杂问题较小问题分解可减小解题所需的总的工作分解12
例:将问题(P1+P2)分解为P1,P2设函数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
文档评论(0)