三亿体育新闻资讯

三亿体育新闻资讯

软件设计

2021-08-27

  三亿体育登录声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。详情

  软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案

  软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况

  软件设计是从软件需求规格说明出发,形成软件的具体设计方案的过程,也就是说在需求分析阶段明确软件是“做什么”的基础上,解决软件“怎么做”的问题。结构化设计方将把软件设计分为概要设计和详细设计两个阶段。概要设计的主要任务是,通过分析需求规格说明对软件进行功能分解,确定软件的总体结构;详细设计阶段确定每个模块功能所需要的算法和数据结构,设计出每个模块的逻辑结构。软件设计阶段结束时的工作成果是软件设计说明书,它描述软件系统的组成模块结、模块间的调用关系,以及每个模块的输入、输出和详细的过程描述

  软件设计的基本目标是用比较抽象、概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径

  软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从概要设计到详细设计逐步降低

  模块是指把一个待开发的软件分解成若干小的简单的部分。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程

  信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的

  模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐蔽和局部化概念的自然扩展。一个模块的内聚性越强,则该模块的独立性越强。一个模块与其他模块的耦合性越强则该模块的独立性越弱

  内聚性是度量一个模块功能强度的一个相对指标。内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。它们之间的内聚度由弱到强排列

  耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于各个模块之间接口的复杂度、调用方式及哪些信息通过接口。耦合可以分为下列几种:内容耦合、公共耦合、外部耦合,控制耦合、标记耦合、数据耦合、非直接耦合。它们之间的耦合度由高到低排列

  在程序结构中,各模块的内聚性越强,则合性越弱。一股较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性

  一是系统的总体设计或概要设计,采用结构化的设计方法来确定软件的系统结构,主要任务是把需求分析阶段得到的系统扩展用例图转换为软件结构和数据结构

  二是系统的详细设计,即进行各模块内部的具体设计,它的任务是为软件结构图中的每一个模块确定实现的算法和局部数据结构,并用某种工具描述出来

  7、设计应该模块化,将软件逻辑地划分为元素或子系统,并包含数据体系结构、接口和构件的清晰表示

  软件开发过程是随着开发技术的演化而随之改进的。从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以后来开始兴起的敏捷开发方法(Agile),他们展示出了在不同的时代软件产业对于开发过程的不同的认识,以及对于不同类型项目的理解方法

  注意区分软件开发过程和软件过程改进之间的重要区别。诸如像ISO15504,ISO9000,CMM,CMMI这样的名词阐述的是一些软件过程改进框架,他们提供了一系列的标准策略来指导软件组织如何提升软件开发过程的质量、软件组织的能力,而不是给出具体的开发过程的定义

  “敏捷开发”(AgileDevelopment)是的一个重要的发展。它强调软件开发应当是能够对未来可能出现的变化和不确定性作出全面反应的

  敏捷开发被认为是一种“轻量级”的方法。在轻量级方法中最负盛名的应该是“极限编程”(ExtremeProgramming),简称为XP)。而与轻量级方法相对应的是“重量级方法”的存在。重量级方法强调以开发过程为中心,而不是以人为中心。重量级方法的例子比如CMM、PSP、TSP

  面向侧面的程序设计(AspectOrientedProgramming),简称(AOP)被认为是的另外一个重要发展。这里的方面指的是完成一个功能的对象和函数集合

  面向服务体系架构的程序设计SOA,就是通过定义SOA编程模型来提高AI的抽象级别,解决当前API集合问题,以此降低应用程序开发者直接处理中间件或Web服务特定API时面临的复杂度。通过从业务代码中移除大部分的通信支持,并将它们隐藏在编程模型抽象/实现之后,简化业务服务的开发,简化作为服务网络构建的业务解决方案的装配和部署。保护业务逻辑资产,使其不受底层技术改变的影响,增加灵活性

  谢职安,何芳,IT服务外包英语阅读教程 学生用书,知识产权出版社,2017.02,第114页

返回