网站迭代,品牌网站建设有哪些功能,长沙小程序app开发,金阊公司网站建设电话一.软件系统设计
1.体系结构设计就是架构设计#xff0c;软件设计包含4个方面#xff1a;
接口#xff08;人机界面设计#xff09;设计#xff1a;软件与操作系统、软件与人之间如何交互#xff1b;
架构#xff08;结构#xff09;设计#xff1a;定义软件系统各…
一.软件系统设计
1.体系结构设计就是架构设计软件设计包含4个方面
接口人机界面设计设计软件与操作系统、软件与人之间如何交互
架构结构设计定义软件系统各主要部件之间的关系。主要目标是开发一个模块化的程序结构并表示出模块间的控制关系
过程设计将系统结构部件转换成软件的过程描述
数据设计将模块转化为数据结构的定义。高质量的数据设计将改善程序结构和模块的划分降低过程复杂性。 2.界面设计
1.界面设计的三个原则:
置于用户控制之下
减少用户的记忆负担
保持界面的一致性 2置于用户控制之下
以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
提供灵活的交互
允许用户交互可以被中断和撤消
当技能级别增加时可以使交互流水化并允许定制交互
使用户隔离内部技术细节
设计应允许用户和出现在屏幕上的对象直接交互 3减少用户的记忆负担
减少对短期记忆的要求
建立有意义的缺省
定义直觉性的捷径
界面的视觉布局应该基于真实世界的隐喻
以不断进展的方式揭示信息 4保持界面的一致性
允许用户将当前任务放入有意义的语境在应用系列内保持一致性
如过去的交互模型已建立起了用户期望除非有迫不得已的理由下要改变它 5其他
系统输入设计应该属于界面设计的一种。
人的因素在系统输入设计中扮演了很重要的角色。
输入应该尽可能地简单以降低错误发生的可能性如对于范围可控的数据使用选择的方式替代用户输入只输入变化的数据等。
输入应该尽可能使用已有含义明确的设计需要采用模仿的方式而非创新。
为了避免用户理解的二义性应该对表格中输入的数据给出提示信息。
数据类型检查确保输入了正确的数据类型自检位用于对主关键字进行基于校验位的检查域检查用于验证数据是否位于合法的取值范围格式检查按照已知的数据格式对照检查输入数据的格式。 3.结构化设计 SD
1系统设计的主要内容包括概要设计和详细设计。
设计要点
抽象化
自顶而下、逐步求精
信息隐蔽
模块独立高内聚、低耦合 2外部和内部、高内聚和低耦合的角度都是模块(模块是指执行某一特定任务的数据结构和程序代码每个模块完成相对独立的特定子功能与其他模块之间的关系最简单)符合自顶向下的原则。扇入别人调自己扇出自己调别人。 概要设计(外部设计):
外部设计(高层设计/总体设计)处于软件设计的开始阶段主要是将软件需求转化为数据结构和软件的系统结构设计出各个功能部分的功能和接口确定系统功能模块及其相互关系主要采用模块结构图、层次图、HIPO图描述程序的结构。
其主要任务是将系统的功能需求分配给软件模块确定每个模块的功能和调用关系形成软件的模块结构图即系统结构图。
在概要设计中将系统开发的总任务分解成许多个基本的、具体的任务为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。 详细设计(内部设计)
内部设计(底层设计)处于软件工程中的详细设计阶段按照外部设计中确立的系统软件结构来细化此系统各个功能部件以及各个部件接口的设计并且详细给出各个功能部件详细的数据结构与算法。 3内聚与耦合
内聚
功能内聚完成一个单一功能各个部分协同工作缺一不可
顺序内聚处理元素相关而且必须顺序执行
通信内聚所有处理元素集中在一个数据结构的区域上
过程内聚处理元素相关而且必须按特定的次序执行
瞬时内聚时间内聚所包含的任务必须在同一时间间隔内执行
逻辑内聚完成逻辑上相关的一组任务
偶然内聚巧合内聚完成一组没有关系或松散关系的任务 耦合
非直接耦合两个模块之间没有直接关系它们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合一组模块借助参数表传递简单数据
标记耦合一组模块通过参数表传递记录信息数据结构
控制耦合模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合一组模块都访问同一全局简单变量而且不是通过参数表传递该全局变量的信息
公共耦合多个模块都访问同一个公共数据环境
内容耦合一个模块真接访问另一个模块的内部数据一个模块不通过正常入口转到另一个模块的 需要知道内聚和耦合的两个极端。
最高内聚为功能内聚最低内聚为偶然内聚。
最高耦合内容/内部耦合最低耦合非直接耦合和数据耦合。 4.面向对象设计 OOD
1面向对象设计OOD的基本任务是把面向对象分析模型(顶层架构图、用例与用例图、领域概念模型构成)
转换为面向对象设计模型(以包图表示的软件体系结构图、以交互图表示的用例实现图完整精确的类图针对复杂对象的状态图和用以描述流程化处理的活动图等)。 2面向对象的设计原则如下
单一职责原则设计目的单一的类
开放-封闭原则对扩展开放对修改封闭
李氏Liskov替换原则子类可以替换父类依赖倒置原则要依赖于抽象而不是具体实现针对接口编程不要针对实现编程
接口隔离原则使用多个专门的接口比使用单一的总接口要好
组合重用原则要尽量使用组合而不是继承关系达到重用目的
迪米特Demeter原则最少知识法则一个对象应当对其他对象有尽可能少的了解
323种设计模式 二.软件开发方法
1.常见的软件开发方法有4种结构化法、面向对象方法、面向服务方法、原型法。
软件开发方法(方法论)比软件开发模型大一号一个开发方法下面可以挂载多个开发模型。 2.结构化法
用户至上
严格区分工作阶段每个阶段有任务和结果
强调系统开发过程的整体性和全局性
系统开发过程工程化文档资料标准化
自顶向下逐步分解(求精先对最高层次中的问题进行定义、设计、编程和测试而将其中未解决的问题作为一个子任务放到下一层次中去解决)。
相对于自底向上方法自顶向下方法可以更快地得到系统的演示原型。 3.面向对象方法
拥有更好的复用性更符合人们的思维习惯
自底向上(根据系统功能要求从具体的器件、逻辑部件或者相似系统开始通过对其进行相互连接、修改和扩大构成所要求的系统)
分析、设计、实现三个阶段界限不明确。 4.面向服务方法
基于服务的架构SOA方法有三个主要的抽象级别
操作(级别低如数据库的读写操作)
服务(级别中代表操作的逻辑分组粒度太小增加通信开销粒度太大影响服务对需求变化的敏捷性)
业务流程(级别高为实现特定业务目标而执行的一组长期的动作通常包含多个服务的调用) 在软件架构风格中会详细说明“基于服务的架构SOA” 5.原型法
适用于需求不明确的开发一般主要用于需求分析阶段对用户需求做出快速相应可以和另外3中开发方法打配合。
按结果分包括抛弃型原型和进化型原型。
按功能分分为水平原型(界面)和垂直原型(算法)。 5 其他重要的软件开发方法
1形式化方法所有东西均可证明/验证而不是代码测试
形式化方法是一种具有坚实数学基础的方法从而允许对系统和开发过程做严格处理和论证适用于那些系统安全级别要求极高的软件的开发。
形式化方法的主要优越性在于它能够数学地表述和研究应用问题及软件实现。但是它要求开发人员具备良好的数学基础。
用形式化语言书写的大型应用问题的软件规格说明往往过于细节化并且难于为用户和软件设计人员所理解。由于这些缺陷形式化方法在目前的软件开发实践中并未得到普遍应用。 2统一过程方法UP在软件开发模型-统一过程模型UP/RUP 3敏捷开发方法在软件开发模型-敏捷开发模型 4基于架构的开发方法ABSD在软件架构设计-基于架构的软件开发。 三.系统建模
1.逆向工程
分析目标系统认定系统的构件及其交互关系并且通过高层抽象或其他形式来展现目标系统的过程。
软件逆向工程就是分析已有的程序寻求比源代码更高级的抽象表现形式。
在逆向工程导出信息的四个抽象层次中:
实现级包括程序的抽象语法树、符号表、过程的设计表示。
结构级包括反映程序各部分之间相互依赖关系的信息如调用图、结构图、程序和数据结构
功能级包括反映程序段功能及程序段之间关系的信息。例如数据和控制流模型
领域级包括反应程序分量和程序诸实体与应用领域概念之间的对应关系的信息如实体关系模型 2.正向工程 从高层抽象和独立于实现的逻辑设计到一个系统的物理实现的传统开发过程。 3.再工程Reengineering 结合逆向工程、重构和正向工程对现有系统进行审查和改造将其重组为一种新形式。