软件设计的基础知识


Advertisements

软件设计是一个过程转换用户需求变成一些合适的形式,这助于程序设计者软件编码与实现.

为评估用户的需求,软件需求规格说明文档被创建,可是需要更具体的术语为编码与实施软件. 这个过程的输出可直接用来为实施编程语言.

在设计软件生命周期软件设计是第一步把会转道从问题域到解决方案域. 它指定如何满足软件规格需求.

软件设计水平

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

  • 建筑设计 - 建筑设计是系统最高抽象的版本。它确定了软件与许多组件相互交互的系统。在这个层面上,设计师得到建议的解决方案领域的想法.

  • 高层次的设计 - 高层次的设计打破了建筑设计的“单一实体的多个组件的概念融入子系统和模块的不太抽象视图表示彼此间的互动。高层次设计的重点是如何在系统连同其所有的零部件都可以在模块的形式实现。它识别每个子系统的模块化结构和它们之间的相互关系和相互作用.

  • 详细设计 - 详细设计是前两个设计的子系统而且实施过程的一部分. 它是更详细关于软件模块和实施过程. 它描述了每个模块的逻辑结构并接口通信与其他的模块.

模块化

软件模块化是一种技术为软件系统分成多个离散和独立的模块,其预期能够执行任务的)独立地. 这些模块可以工作好像整个软件的基本结构. 设计者倾向于设计模块以这样的方式,它可以单独地执行或独立地编制.

模块化设计遵循的规则分治的解决问题的策略,这是因为软件模块化设计有许多其他好处.

模块化的利用:

  • 较小的元件更易于维护
  • 程序可以分开按照功能性方面
  • 所需的抽象水平可以带来在程序
  • 具有高内聚的组件可以再次重复使用
  • 并发执行是可能的
  • 从安全性方面的期望

并发

所有的软件的目的是按顺序执行的. 在任何特定时间的编码指令将被执行了一个又一个使用程序只有一个部分. 软件有多个模块但只有一个模块可以发现活跃在执行任何时间.

在软件设计过程中并发进程通过把软件分成多个独立的执行单元来实现, 像模块和并行执行. 换句话说,并发性提供能力软件同时执行的代码的多个部分.

程序员和设计师必须认识那些模块需要平行执行.

比如

在文字处理器拼写检查功能 是一种软件模块,它本身运行在旁边的文字处理器.

耦合和内聚

当一个软件程序模块化,其任务是根据某些特征划分为若干模块。正如我们知道模块的设置放在一起实现一些任务的说明。有许多方法来测量模块设计质量和模块之间的接口. 这些措施被称为耦合和内聚.

凝聚

凝聚是定义帧内可靠性的模块的程度的量度. 更大的凝聚力是程序设计更好.

有七种类型的凝聚力–

  • 巧合凝聚力 - 这是意外的和随机的凝聚,这可能是破程序分成较小的模块,为了模块化的结果。 因为是计划外的,它可能会成为混乱的程序员,一般不接受的.

  • 逻辑内聚 - 当把逻辑上划分的元素组合成一个模块,它被称为逻辑内聚.

  • 颞凝聚力 - 当模块的元素组成,使得它们在差不多同一时刻处理的,它被称为颞凝聚力.

  • 程序上的凝聚力 - 当模块的元素分组在一起,这依次以执行一个任务执行时,它被称为程序性凝聚.

  • 交际凝聚力 - 当模块的元素分组在一起,这依次与工作于相同的数据(信息)执行时,它被称为交际凝聚力.

  • 顺序内聚 - 当模块的元素进行分组,因为一个元件的输出作为输入到另一个等等,它被称为连续的凝聚力.

  • 凝聚功能 - 它被认为是最高程度的凝聚力,并且被高度期望。在功能内聚模块的元素进行分组,因为它们都以一个良好定义的函数贡献。它也可以被重复使用.

耦合

耦合是定义的跨可靠性的程序模块之间的电平的测量。它告诉在什么水平的模块干扰和相互影响。如果耦合是低,该程序是更好.

有五个级别的耦合 -

  • 内容耦合 - 当一个模块可以直接访问或修改,或参考其他模块的内容,它被称为含量水平耦合.

  • 公共耦合 - 当多个模块具有读取和写入访问一些全局数据,它被称为通用或全局耦合.

  • 控制耦合 - 两个模块被称为控制耦合,如果其中的一个判定其他模块的功能,或改变其执行流程.

  • 邮票耦合 - 当多个模块共享公共数据结构,并在它的不同部分工作,它被称为时间戳耦合.

  • 数据耦合 - 数据耦合是当两个模块通过传递数据(作为参数)来彼此交互。如果一个模块传递数据的结构参数,然后接收模块应该使用它的所有组件.

理想情况下,无耦合被认为是最好的.

设计验证

软件设计过程的输出是设计文档,伪代码,详细逻辑图,过程图和所有功能或非功能性要求的详细描述.

取决于上述所有输出,下一阶段是软件的实现

这是必要在进行到下一个阶段之前验证输出。 最好是在早期阶段检测任何错误,否则它可能无法检测到开始测试软件。 如果设计阶段的输出是正规表示法的形式,应该用于验证相关的工具,否则全面的设计审查,可用于验证和确认.

通过结构化的验证方法,评审可以检测到可能受俯瞰某些情况下造成的缺陷。一个好的设计评论是针对优秀的软件设计,精度和质量很重要.

Advertisements