人机界面设计
人机界面设计主要需要遵循 黄金三法则:
- 置于用户控制之下
-
以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
-
提供灵活的交互
-
允许用户交互可以被中断和撤销
-
当技能级别增加时可以使交互流水化并允许定制交互
-
使用户隔离内部技术细节
-
设计应允许用户和出现在屏幕上的对象直接交互
- 减少用户的记忆负担
-
减少对短期记忆的要求
-
建立有意义的缺省
-
定义直觉性的捷径
-
界面的视觉布局应该基于真实世界的隐喻
-
以不断发展的方式揭示信息
- 保持界面的一致性
-
允许用户当前任务放入有意义的语境
-
在应用系列内保持一致性
-
如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它
结构化设计
软件设计的构成
软件设计包括体系结构设计、接口设计、数据设计 和过程设计。
-
结构化设计:定义软件系统各主要部件(系统)之间的关系。
-
数据设计:基于E-R图确定软件涉及的文件系统的结构及数据的表结构。好的数据设计将改善程序结构和模块划分,降低过程复杂度。
-
接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通讯。
-
过程设计:系统结构部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达方式来描述各种算法。
概要设计和详细设计
概要设计(外部设计):功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块结构图。
详细设计(内部设计):为每个具体任务选择适当的技术手段和处理方法。
结构化设计原则
-
模块独立(高内聚、低耦合)
-
保持模块的大小适中
-
多扇入,少扇出
-
深度和宽度均不宜过高
扇入:是指直接调用该模块的上级模块的个数(即被调用)。扇入大表示模块的复用程序高。
扇出:是指该模块直接调用的下级模块的个数(即调用)。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块
高内聚低耦合
模块的四个要素
-
输入和输出:模块的输入来源和输出方向都是同一个调用者,即一个模块从调用者那儿取得输入,进行加工后再把输出返回调用者。
-
处理功能:指模块把输入转换成输出所做的工作。
-
内部数据:指仅供该模块本身应用的数据。
-
程序代码:指用来实现模块功能的程序。
面向对象设计
基本过程
面向对象设计 - 七大原则
-
单一职责原则:设计目的单一的类。
-
开放封闭原则(开闭原则):对扩展开放,对修改封闭。
-
里氏替换原则:子类可以替换父类。
-
依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象(子类应依赖于父类,子类和父类应依赖抽象类,从高到低进行开发,从父类到子类开发)。要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
-
接口隔离原则:使用多个专门的接口比使用单一的总接口要好(每个接口只承担功能,避免多个功能共用一个接口,避免一个功能变动导致多个功能受到影响;与单一职责原则(设计原则)相辅相成,接口隔离原则是实现原则)。
-
组合重用原则:要尽量使用组合,而不是继承关系达到目的(降低耦合,解耦)。
-
迪米特(Demeter)原则(最少知识法则):一个对象应当尽可能少的了解其他对象,类的内部如何实现、如何复杂都与调用者或者依赖者没关系,调用者或者依赖者只需要知道他需要的方法即可,其他的一概不关心。
设计模式
-
架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所做的基本设计决策。
-
设计模式:主要关注库系统的设计,与具体的实现语言无关。
-
惯用法:是最低层的模型,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法。
(以上高,中,低三层;模式就是解决一系列问题的套路)
面向对象设计模式
既可以是类模式,也可以是对象模式的设计模式:
-
Factory Method 工厂方法模式
-
Adapter 适配器模式
-
Interpreter 解释器模式
-
Template Method 模板模式
创建型模式
结构型模式
行为型模式(一)
行为型模式(二)
考察点
1.设计模式三种类型的定位;
2.设计模式分类;
3.设计模式应用场景及特点
2024.5.15 更新
PS: 软件设计模式知识点已经从架构师新版教材中移除,考核几率很低
常见软件开发方法
结构化方法SA
自顶向下,逐步分解求精,严格区分阶段
面向对象方法OO
自底向上,阶段界限不明,符合人们的思维习惯,更好的应变和复用
面向服务的方法SO
粗粒度,松耦合,标准化和构件化,抽象级别从低到高包括:操作->服务->业务流程
原型法UI
偏需求阶段,按功能分包括水平原型(界面)和垂直原型(复杂算法);按最终结果分包括抛弃式原型和演化式原型
基于架构的软件开发方法ABSD
ABSD由体系结构驱动,包括:商业、质量和功能需求的组合
统一过程方法UP
三中心、四步骤、九大过程组
敏捷方法
极限编程XP,SCRUM,水晶法
基于构件的开发方法CBSD
形式化方法
净室软件工程,数学模型化
DDD、FDD、TDD,DSSA,OpenSource等
常见软件开发模型
瀑布模型
演化模型
增量模型
螺旋模型
原型模型
喷泉模型
V模型
迭代模型
快速应用开发RAD
构件组装模型CBSD
综上:一个软件开发方法可能对应多个开发模型,根据适用的场景来区分和选择。
– THE END –