软件设计概念-指导原则|Aspects|设计元素
来源:互联网 发布:数据库置疑修复工具 编辑:程序博客网 时间:2024/06/05 12:06
软件设计概念
- 软件设计概念
- 设计过程的任务集
- 软件设计的指导原则
- 设计基本理念
- 模块化设计原则
- 信息隐藏原则
- 步进式的细化原则
- 功能独立原则
- 重构原则
- Aspects
- 设计元素
- 数据元素
- 架构元素
- 接口元素
- 构件元素
- 部署元素
思考
为什么需要进行软件设计?
在进行软件设计之前,我们应该确定哪些信息?
数据、界面、算法、加工逻辑 ……
在解决问题的时候,确定哪些关键元素需要通过设计来解决,如何制定软件设计的蓝图。
设计的两个层次
- 高层次抽象
类似于概要设计。
类似于建筑设计的框架设计。
- 对框架进行细化
对具体的门、框的设计
设计以需求为先导
设计类以分析类为基础,数据设计与分析设计紧密相关。
软件设计的目标
- 实现所有的显式的需求,为后面的软件实现打下基础。
- 提高可读可理解的指南,提供给后续的工作人员。
- 提供完整的系统蓝图 解决一系列实现过程中需要面对的问题。
排课系统为例
设计解决数据存储的问题(排课信息保存)、界面显示问题(排课及结果显示)、算法逻辑问题(排课算法)等。这三个问题对应着数据设计、接口设计、算法设计三个问题。
设计过程的任务集
分析过程中涉及了7个任务
设计过程中涉及了以下6个任务
- 数据设计
- 软件的体系结构设计 (定义框架,缺乏对构件的定义和描述)
- 类设计(针对面向对象应用系统)
分析类和设计类的区别
设计类比分析类更接近于实现。设计类的定义更加具体。
- 接口设计(外部接口&人机交互)
- 组件设计(构件的定义和描述)
- 部署设计(软件元素分布到物理元素上)
软件设计的指导原则
- 设计原则
- 设计优化原则
设计基本理念
设计基本理念——抽象
概要设计的核心:确定应用系统的结构
架构的关键内容:
- 模块、组件
面向对象基本的组件——类
- 联系
模块和模块的调用,类和类的协作
- 数据
软件架构即是便是构件并确定构件的通信和联系
模块化设计原则
通过模块化把庞大的应用系统进行功能的划分,降低开发实现的难度,控制成本。
简单说就是:降低复杂度
模块化是实现软件体系结构的一张方法
信息隐藏原则
每个模块对其他模块隐藏自己的设计决策,已到达内容细节发生变化的时候,外部受到的影响最小。
有助于提供系统内部的独立性。
全局变量共用,导致错误的扩展。
步进式的细化原则
每一步都是对前一步的逐渐细化。
功能独立原则
应对特征:
- 功能独立
- 避免和其他模块的过量的交互
具体的衡量指标:
- 内聚性
模块、组件内部的联系紧密度
只完成一件事儿的时候,内聚性最高。
- 耦合性
模块和模块之前联系的紧密程度。
耦合性越低越好。
重构原则
不改变外部结构的情况下 对内部进行优化,成为重构。
从使用者的角度看,前后没有变化。
Aspects
面向方面的编程AOP
关键:找到横切关注点
横切关注点:业务处理的主要流程是核心关注点,而将封装的类剖开,找出类中公共的行为,并抽取出来进行封装。封装的这部分就称为横切关注点。
AOP的核心思想
将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。
设计元素
- 数据元素
- 架构元素
- 接口元素
- 构件元素
- 部署元素
元素由设计任务产生,可以明显的看出其对应关系。
数据元素
- 数据结构
- 数据库架构
设计一种数据结构,便于根据用户提供的搜索词快速检索出含有该词的文档。
倒排索引
将每个单词关联到包含该单词的所有文档列表。
架构元素
面向对象确定的架构VS 结构化方法确定的架构
- 面向对象: 架构基础为 类 (协作关系)
- 结构化: 架构基础为 模块 (调用关系)
接口元素
接口存在于构件、模块、子系统等元素外部可见的操作说明
分类:
- 人机接口 (界面)
外部接口 (与外部应用系统的交互)
作用:
连接两个系统,对传递的数据进行安全控制、信息转换、检查。
接口像缓冲器,使得两个系统足够兼容内部接口 (协作和调用)
构件元素
什么是构件?
构件是具备特定功能,可配置、可替换的程序部件,该部件封装了实现并暴露一系统接口。
构件VS架构元素 :构件和架构元素的关系?
多个架构元素可能组成一个构件。构件的力度可大可小。
构件级设计
破开构件,看构件里面的 数据结构、算法等内容。
程序流程图 (构件级设计中会涉及到)
描述构件内容的算法逻辑,表达程序“怎么做”的问题。
算法的本质: 解决问题的一种方法。
部署元素
目的:表示软件的功能和系统是如何分布到物理环境中的。
本博客内容到此结束,欢迎指正!
- 软件设计概念-指导原则|Aspects|设计元素
- [设计]软件设计原则
- 软件设计的概念与原则
- 数据库设计指导原则
- 类设计指导原则
- 【软件设计】六大设计原则讲解
- 【软件设计模式】设计原则小结
- 软件设计 - 面向对象设计原则
- 软件设计之六大设计原则
- 最重要的设计指导原则
- C++类设计指导原则
- 设计原则概念总结
- [设计模式]设计模式中的指导原则
- 软件设计方案(数据库设计原则)
- 软件设计原则和设计模式的理解
- 设计可综合状态机的指导原则
- 设计可综合状态机指导原则
- 原型设计第一波:八大指导原则
- python基础
- Spark创建WordCount并统计词频
- CPU检测工具CPU-Z
- Spring框架 boolean类型命名is开头会引起序列化错误
- remount of /system failed: Read-only file system原因及解决
- 软件设计概念-指导原则|Aspects|设计元素
- Oil Deposits——个人c++解
- 龙芯相关
- JVM(十二) 创建用户自定义的类加载器
- Qt设置horizontal line 和vertical line 的颜色
- caffe 视觉层
- shell架构,环境变量
- P1307数字反转
- iOS集成友盟第三方登录