软件设计概念-指导原则|Aspects|设计元素

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NGUever15/article/details/71597610

软件设计概念

思考

为什么需要进行软件设计?
在进行软件设计之前,我们应该确定哪些信息?

数据、界面、算法、加工逻辑 ……

在解决问题的时候,确定哪些关键元素需要通过设计来解决,如何制定软件设计的蓝图。

设计的两个层次

  • 高层次抽象

类似于概要设计。
类似于建筑设计的框架设计。

  • 对框架进行细化

对具体的门、框的设计


设计以需求为先导
设计类以分析类为基础,数据设计与分析设计紧密相关。

软件设计的目标

  • 实现所有的显式的需求,为后面的软件实现打下基础。
  • 提高可读可理解的指南,提供给后续的工作人员。
  • 提供完整的系统蓝图 解决一系列实现过程中需要面对的问题。

排课系统为例
设计解决数据存储的问题(排课信息保存)、界面显示问题(排课及结果显示)、算法逻辑问题(排课算法)等。这三个问题对应着数据设计、接口设计、算法设计三个问题。

设计过程的任务集

分析过程中涉及了7个任务
设计过程中涉及了以下6个任务

  • 数据设计
  • 软件的体系结构设计 (定义框架,缺乏对构件的定义和描述)
  • 类设计(针对面向对象应用系统)

分析类和设计类的区别
设计类比分析类更接近于实现。设计类的定义更加具体。

  • 接口设计(外部接口&人机交互)
  • 组件设计(构件的定义和描述)
  • 部署设计(软件元素分布到物理元素上)

软件设计的指导原则

  • 设计原则
  • 设计优化原则

设计基本理念

设计基本理念——抽象

概要设计的核心:确定应用系统的结构

架构的关键内容:

  • 模块、组件

面向对象基本的组件——类

  • 联系

模块和模块的调用,类和类的协作

  • 数据

软件架构即是便是构件并确定构件的通信和联系

模块化设计原则

通过模块化把庞大的应用系统进行功能的划分,降低开发实现的难度,控制成本。
简单说就是:降低复杂度
模块化是实现软件体系结构的一张方法

信息隐藏原则

每个模块对其他模块隐藏自己的设计决策,已到达内容细节发生变化的时候,外部受到的影响最小。

有助于提供系统内部的独立性。

全局变量共用,导致错误的扩展。

步进式的细化原则

每一步都是对前一步的逐渐细化。

功能独立原则

应对特征:

  • 功能独立
  • 避免和其他模块的过量的交互

具体的衡量指标:

  • 内聚性

模块、组件内部的联系紧密度
只完成一件事儿的时候,内聚性最高。

  • 耦合性

模块和模块之前联系的紧密程度。
耦合性越低越好。

重构原则

不改变外部结构的情况下 对内部进行优化,成为重构。
从使用者的角度看,前后没有变化。

Aspects

面向方面的编程AOP

关键:找到横切关注点

横切关注点:业务处理的主要流程是核心关注点,而将封装的类剖开,找出类中公共的行为,并抽取出来进行封装。封装的这部分就称为横切关注点。

AOP的核心思想

将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。

设计元素

  • 数据元素
  • 架构元素
  • 接口元素
  • 构件元素
  • 部署元素

元素由设计任务产生,可以明显的看出其对应关系。

数据元素

  • 数据结构
  • 数据库架构

设计一种数据结构,便于根据用户提供的搜索词快速检索出含有该词的文档。

倒排索引

将每个单词关联到包含该单词的所有文档列表。

架构元素

面向对象确定的架构VS 结构化方法确定的架构

  • 面向对象: 架构基础为 类 (协作关系)
  • 结构化: 架构基础为 模块 (调用关系)

接口元素

接口存在于构件、模块、子系统等元素外部可见的操作说明

分类:

  • 人机接口 (界面)
  • 外部接口 (与外部应用系统的交互)

    作用
    连接两个系统,对传递的数据进行安全控制、信息转换、检查。
    接口像缓冲器,使得两个系统足够兼容

  • 内部接口 (协作和调用)

构件元素

什么是构件?

构件是具备特定功能,可配置、可替换的程序部件,该部件封装了实现并暴露一系统接口。

构件VS架构元素 :构件和架构元素的关系?

多个架构元素可能组成一个构件。构件的力度可大可小。

构件级设计

破开构件,看构件里面的 数据结构、算法等内容。

程序流程图 (构件级设计中会涉及到)

描述构件内容的算法逻辑,表达程序“怎么做”的问题。

算法的本质: 解决问题的一种方法。

部署元素

目的:表示软件的功能和系统是如何分布到物理环境中的。



本博客内容到此结束,欢迎指正!

猜你喜欢

转载自blog.csdn.net/NGUever15/article/details/71597610
今日推荐