1、软件设计简介web
定义:为软件系统的架构,组件,接口和其它特性的定义过程及该过程的结果,解决“如何作”How的问题。数据库
软件设计方法包括:编程
软件设计包括如下活动:设计模式
软件质量能够用质量属性来描述。FURPS质量属性:浏览器
2、设计技术服务器
抽象:数据结构
侧重于解决特定问题的细节,忽略不相关的底层细节。架构
设计开始时应提升软件的抽象层次,按抽象级别从高到低进行软件设计。框架
细化:数据库设计
与抽象相对的概念,从软件定义到实现,每进展一步均可以当作是对软件设计方案的抽象化过程的一次细化。
自顶向下,逐步细化:
设计模式:
模块化:
如何衡量模块化设计水平?模块化设计标准:
信息隐藏:
模块内的信息不能够被不须要这些信息的其它模块访问。
功能独立:
功能独立的两个定性衡量标准:
独立性强的模块:高内聚,低耦合
耦合的7种类型:
内聚的7种类型:
重构:
不改变组件功能的条件下,简化组件设计。
3、设计模型
体系结构设计:
将模式(即,针对特定问题的解决方案)划分红三类:
架构风格分类:
另外一种分类方法:
两层C/S架构:
三层C/S架构:
增长了应用服务器。
将系统分为:数据层,应用逻辑层,表示层
B/S架构(是三层体系架构):
浏览器——web服务器——数据库服务器
相对灵活,但响应速度和动态交互性不如C/S
接口设计中的重要部分:
用户界面设计:三个准则:
数据设计:
组件级别的数据设计,即设计供软件组件直接访问的数据结构。
低层的数据设计应推迟到后期进行。
注意信息的隐藏和耦合。
组件设计:
是接近代码层次的软件抽象描述。
部署设计:
包含了整个解决方案的逻辑架构和服务质量(QoS)需求。
项目审批发生在部署设计阶段,估计软件部署的成本,提交审批。
是一种高层架构,描述了逻辑环境到物理环境的映射。
4、结构化设计方法SD(Structured Design)
结构化设计中,软件的结构元素是模块,所以也称为模块设计。
接口设计:
SD数据设计的归纳:将ER图转换为数据库表。
软件的结构分为:模块结构+数据结构。通常采用功能划分的方法进行软件结构设计,对整个问题进行分割,每一部分用一个或几个模块来完成。
模块的表示:
模块的分类(实际系统中的模块属于如下任意一种,或某几种的组合):
模块的结构:
用结构图表示模块结构:
菱形表示条件调用,圆弧表示循环调用。
理解深度,宽度(下图宽度为7),扇入,扇出:
数据结构:
基于数据流的设计方法是:过程驱动的设计方法。
数据流的类型:(通常都是以变换型为主,事务型为辅)
变换型系统结构图以下:
事务型系统结果图(简化):
变换型映射方法:将具备变换流特色的数据流图映射成软件结构:
自顶向下,设计下层模块的顺序是任意的。但通常先设计输入模块的下层模块。
一层一层往下分解。
事务型映射方法:将具备事务流特色的数据流图映射成软件结构:
变换型和事务型混合结构的例子:
模块的完善化:
模块彻底类似,可能只是在数据类型上不一致。能够彻底合并。
局部类似时,则不能将二者合并为一。通常的处理方法是将类似的部分分离出去。
模块的做用范围和控制范围:
模块的控制范围是指它自己和全部的从属模块。
模块的做用范围是指收模块内一个断定影响的范围。
模块的做用范围应该在模块的控制范围之内。
扇入和扇出:
适当的扇出数为2~5,最好不要超过9。扇出数太小会使结构图的深度增长,扇出数过大会使结构图的宽度增长。
一个好的软件模块设计,一般是:上层扇出较高,中层扇出较少,底层公用模块的扇入较高。
数据库设计:
数据库分为多种,其中关系数据库最成熟。多对多关系的映射须要引入关联表。
结构化程序设计用到的工具:
5、面向对象的设计方法OOD(Object-Oriented Design)
OOA和OOD,分析和设计联系紧密,没有明显界限。
整个设计阶段的核心任务:建立包含操做的设计类图
从分析类到设计类:导出实体类,增长边界类,控制类
在OOD中,类和接口是程序的基本组成单元。
继承(子类对象继承父类的全部特征,又能够覆盖父类的方法)依赖性:
面向接口编程,而不是面向实现编程:接口依赖性又分为使用依赖性和实现依赖性。
在包之间增长新包,能够消除循环依赖性。
构件:比类更高级,包含一个或一组类,或者其它部署单元,完成一个或多个功能的特定服务。隐藏了具体的实现,只用接口对外提供服务。
从软件复用的角度,构件是指开发过程当中能够复用的软件元素。具备独立性,不可拆分。
构件被实现为大粒度的单元,只能由一个实例。
OOD:系统划分为子系统。
封闭体系结构:每一层只能访问与其相邻的下一层。
开放体系结构:每一层能够访问比其下一层更低的层次。
典型的面向对象系统的分层结构:数据库层,业务逻辑层,用户界面层。
面向对象的设计顺序:业务逻辑层(问题域部分)M——人机交互部分V——C任务管理部分——数据管理部分。
数据管理部分:关联关系的映射: