软件工程 设计基础

软件设计是将用户需求转化为某种合适形式的过程,有助于程序员进行软件编码和实现。

为评估用户需求,创建了 SRS(软件需求规范)文档,而对于编码和实施,需要在软件方面有更具体和详细地需求。这个过程的输出可以直接用于编程语言的实现。

软件设计是 SDLC(软件设计生命周期)的第一步,它将注意力从问题域转移到解决方案域。它视图指定如何满足 SRS 中提到的要求。

软件设计水平

软件设计产生三个层面的结果:

架构设计:是系统的最高抽象版本。它将软件标识为具有许多相互交互的组件的系统。在这个层次上,设计者获得了提议的解决方案域的想法。
高层设计:将架构设计的“单实体-多组件”概念分解为子系统和模块的抽象视图,并描绘了它们之间的相互作用。高层设计侧重于如何以模块的形式实现系统及其所有组件。它识别每个子系统的模块化结构以及它们之间的关系和相互作用。
详细设计:处理在前两种设计中被视为系统及其子系统的实现部分。它更详细地介绍了模块及其实现。它定义了每个模块的逻辑结构及其与其他模块通信的接口。

模块化

模块化是一种将软件系统划分为多个离散且独立的模块的技术,这些模块有望独立执行任务。这些模块可以作为整个软件的基本结构。设计人员倾向于设计模块,以便它们可以单独和独立地执行或者编译。

模块化设计无意中遵循了“分而治之”的问题解决策略的规则,这是因为软件的模块化设计还有许多其他好处。

模块化的优势:

更小的元件更易于维护
程序可以根据功能方面进行划分
可以在程序中引入所需的抽象级别
高内聚的组件可以重复使用
可以实现并发执行
从安全方面期望

并发

回到过去,所有软件都应该按顺序执行。通过顺序执行,我们的意思是编码指令将一个接一个地执行,这意味着在任何给定时间只有一部分程序被激活。比如说,一个软件有多个模块,那么在任何时候执行时只能发现所有模块中的一个是活动的。

在软件设计中,并发是通过将软件拆分为多个独立地执行单元(如模块)并并行执行来实现的。换句话说,并发为软件提供了并行执行多个代码部分的能力。

程序员和设计师有必要识别那些可以并行执行的模块。

例如

文字处理器中的拼写检查功能是一个软件模块,它与文字处理器本身一起运行。

耦合和内聚

当一个软件程序被模块化时,它的任务根据一些特性被分成几个模块。众所周知,模块是为了完成某些任务而组合在一起的指令集。不过,它们被视为单个实体,但可以相互引用以协同工作。有一些方法可以用衡量模块设计的质量以及它们之间的交互。这些措施称为耦合和内聚。

内聚

内聚力是一种度量,用于定义模块元素内的内部依赖性程度。内距离越大,程序设计就越好。

有七种类型的内聚:

巧合内聚:它是无计划的和随机的内聚,这可能是为了模块化而将程序分解成更小的模块的结果。因为它是计划外的,它可能会给程序员带来混乱并且通常不被接受。
逻辑内聚:当逻辑上分类的元素被放在一个模块中时,它被称为逻辑内聚。
时间内聚:当模块的元素被组织成在相似的时间点进行处理时,它被称为时间内聚。
过程内聚:当模块的元素组合在一起时,它们按顺序执行以执行任务,称为过程内聚。
通信内聚:当模块的元素组合在一起,按顺序执行并处理相同的数据(信息)时,称为通信内聚。
顺序内聚:当模块的元素因为一个元素的输出作为另一个元素的输入而被分组时,它被称为顺序内聚。
功能内聚:被认为是最高的内聚力,值得期待。功能内聚中的模块元素被分组,因为它们都有助于单个定义良好的功能。它也可以重复使用。

耦合

耦合是一种定义程序模块之间相互依赖程度的度量。它告诉模块在什么级别相互干扰和交互。耦合度越低,程序越好。

有五个级别的耦合:

内容耦合:当一个模块可以直接访问或修改或引用另一个模块的内容时,称为内容耦合。
公共耦合:当多个模块对某些全局数据具有读写访问权限时,称为公共或者全局耦合。
控制耦合:如果其中一个模块决定另一个模块的功能或改变其执行流程,则两个模块称为控制耦合。
戳耦合:当多个模块共享公共数据结构并在其中的不同部分工作时,称为戳耦合。
数据耦合:是指两个模块通过传递数据(作为参数)进行交互。如果模块将数据结构作为参数传递,则接收模块应使用其所有组件。

理想情况下,没有耦合被认为是最好的。

设计验证

软件设计过程的输出是设计文档、伪代码、详细地逻辑图、流程图以及所有功能或非功能需求的详细描述。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马里亚纳海沟网

你的打赏是我最大鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值