
唯一官方助理老师微信
扫码了解高分课程
软件设计的目标是根据软件分析的结果,完成软件构建的过程。软件设计是需求的延伸与拓展。需求分析阶段解决“做什么”的问题,而软件设计阶段解决“怎么做”的问题。
从方法上来说,软件设计分为结构化设计与面向对象设计。
一、结构化设计
1.基础概念
(1)结构化设计(SD)是一种面向数据流的方法,其目的在于确定软件结构。是一个自顶向下、逐层分解、逐步求精和模块化的过程。
(2)结构化设计分为概要设计和详细设计两个阶段。概要设计又称为总体结构设计,其主要任务是确定软件系统的结构。
(3)详细设计的主要任务是为每个模块设计实现的细节,根据任务的不同,详细设计又可分为多种,例如,输入/输出设计、处理流程设计、数据存储设计、用户界面设计、安全性和可靠性设计等。
2.模块结构
(1)模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。
(2)耦合表示模块之间联系的程度。紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非直接耦合则表示模块之间无任何直接联系。
(3)内聚表示模块内部各代码成分之间联系的紧密程度,是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做目标单一的一件事情。
3.设计使用的图形工具
(1)业务流程图:是一种描述管理系统内各单位、人员之间的业务关系、作业顺序和管理信息流向的图表。
(2)程序流程图:又称为程序框图,是使用最广泛的一种描述程序逻辑结构的工具。其优点是结构清晰,易于理解,易于修改;缺点是只能描述执行过程而不能描述有关的数据。
(3)NS流程图:也称为盒图或方框图,是一种强制使用结构化构造的图示工具。
(4)PAD图:是一种改进的图形描述方式,可以用来取代程序流程图,比程序流程图更直观,结构更清晰。最大的优点是能够反映和描述自顶向下的历史和过程。
二、面向对象设计
面向对象设(ooD)是ooA(面向对象分析)方法的延续,对于ooD而言,在支持可维护性的同时,提高软件的可复用性是一个至关重要的问题,如何同时提高软件的可维护性和可复用性,是ooD需要解决的核心问题之一。在ooD中,可维护性的复用是以设计原则为基础的。
常用的ooD原则包括:
(1)单职原则:一个类应该有且仅有一个引起它变化的原因,也就个一个类功能应该单一。
(2)开闭原则:对扩展开放,对修改封闭。
(3)里氏替换原则:子类可以替换父类。
(4)依赖倒置原则:要依赖于抽象,而不是具体实现;要针对接口编程,不要针对实现编程。
(5)接口隔离原则:使用多个专门的接口比使用单一的总接口要好。
(6)组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。
(7)迪米特原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。其目的是降低类之间的耦合度,提高模块的相对独立性。
三、统一建模语言
统一建模语言(UML)是一种定义良好、易于表达、功能强大且普遍适用的建模语言,不是编程语言。比较适合用于迭代式的开发过程,是为支持大部分现存的面向对象开发过程而设计的。也适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。
1.UML中的关系
UML用关系把事物结合在一起,主要有下列四种关系:
(1)依赖:依赖是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
(2)关联:关联描述一组对象之间连接的结构关系。
(3)泛化:泛化是一般化和特殊化的关系,描述特殊元素的对象可替换一般元素的对象。
(4)实现:实现是类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。
2.UML2.0中的图
UML2.0包括14种图,分别列举如下:
(1)类图:类图描述一组类、接口、协作和它们之间的关系。
(2)对象图:对象图描述一组对象及它们之间的关系。
(3)构件图:构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。
(4)组合结构图:组合结构图描述结构化类的内部结构,包括结构化类与系统其余部分的交互点。
(5)用例图:用例图描述一组用例、参与者及它们之间的关系。
(6)顺序图(也称序列图):顺序图是一种交互图,交互图展现了一种交互。
(7)通信图:通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。
(8)定时图(也称计时图):定时图也是一种交互图。
(9)状态图:描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。
(10)活动图
(11)部署图
(12)制品图
(13)包图
(14)交互概览图
3.UML视图
(1)逻辑视图:逻辑视图也称为设计视图,它表示了设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
(2)进程视图:进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构。
(3)实现视图:实现视图对组成基于系统的物理代码的文件和构件进行建模。
(4)部署视图:部署视图把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。
(5)用例视图:用例视图是最基本的需求分析模型。
四、设计模式
设计模式是前人经验的总结,它使人们可以方便地复用成功的软件设计。设计模式包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素。
根据处理范围不同,设计模式可分为类模式和对象模式。类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,属于静态关系;对象模式处理对象之间的关系,这些关系在运行时刻变化,更具动态性。
根据目的和用途不同,设计模式可分为创建型模式、结构型模式和行为型模式三种。创建型模式主要用于创建对象;结构型模式主要用于处理类或对象的组合;行为型模式主要用于描述类或对象的交互以及职责的分配。

夜雨聆风