您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

为什么需要软件详细设计?

发表于:2023-06-21 作者:叶落风逝yzm 来源:仨人谈起

很多项目在应用ASPICE时,首先都会感觉到需要比以往项目更多的工作量,这些增加的工作量里面,有很多工作量是分配到了软件详细设计、软件单元验证和软件集成测试活动中。

 

本文谈谈“软件详细设计”的话题。

 

说明:本文如下的讨论以手写代码为场景。

1. 软件详细设计是什么?

软件代码是按照一定的逻辑来开发的,如果直接阅读源代码的话,代码逻辑很难被直观和全面的把握和看懂。软件详细设计是软件代码实现逻辑的直观展现。例如包括:

  • 软件单元与软件单元之间的交互关系,如:通过时序图或函数调用关系图展现
  • 软件单元定义及其内部逻辑,如:函数定义、函数流程图等
  • 数据及结构,如:静态变量,全局变量,数据结构等

2 软件详细设计的目的是什么?

为什么需要软件详细设计? -汽车开发者社区

如上图所示,如何来回答这些疑问呢?或者说,如何有信心地来回答这些疑问呢?

为什么需要软件详细设计? -汽车开发者社区

软件详细设计是软件代码实现逻辑的直观展现,软件详细设计可以回答:

  • 软件需求是否都被正确实现了?
  • 是否有非预期的功能?
  • 是否符合软件架构设计?
  • …… ?
  •  

车载嵌入式软件产品的生命周期很长(通常至少15年以上),软件的可维护性、软件的设计质量至关重要。

为什么需要软件详细设计? -汽车开发者社区

软件详细设计是软件代码实现逻辑的直观展现。软件详细设计可以帮助工程师来把握软件的设计,确保软件设计符合相关的设计原则,例如:模块化、封装、低复杂度、接口简单、高内聚、低耦合等。

3 通过工具来基于代码生成软件详细设计,可以吗?

近日,有个小伙伴问了一个问题,比较有代表性:

 

杨老师好,请教您一个问题。

 

我了解到有一个根据代码来生成流程调用图和数据流图的工具,叫crystal flow的,

 

有一个疑惑想问一下,在做ASPICE的时候是要求先有设计,再有编码。

但做设计的时候,人工画流程图确实是花费精力比较多的一个部分,

而通过工具,可以快速地出流程图,相比人工更能确保代码和流程图的一致性。

 

那么,问题来了:

有没有既能使用这类工具,又同时满足ASPICE的实践呢?

 

模拟一下开发人员的开发步骤:

① 编码人员基于需求&软件架构设计,有一个对于软件组件内部逻辑的初步思路。(思路可以在脑子里,或者写在一张草稿纸上)

② 编码人员进行编码,将思路落实在代码上,边实践,边完善。

③ 当所有的代码基本完成后,基于代码生成详细设计。

④ 基于生成的详细设计,对软件组件的设计/实现进行考虑,考虑整体的软件组件的设计,例如:是否正确实现了需求,是否遵循了架构设计,是否满足模块化/封装/高内聚/低耦合等设计原则。

⑤ 必要时,返回②进行调整。

 

在这样的场景下,软件详细设计活动和软件编码活动是耦合在一起的。

  • 软件详细设计是软件代码实现逻辑的直观展现。
  • 基于软件详细设计,判断了软件实现与软件需求&软件架构设计的一致性/正确性。
  • 基于软件详细设计,判断了软件实现是否遵循了设计原则。

 

因此,这样的软件详细设计是可以被接受的。

 

但是如果开发人员是直接基于需求和架构设计进行代码开发,然后基于代码生成详细设计,然后就结束了。(没有基于生成的详细设计去看与架构设计/需求的一致性,没有去检查与设计原则的符合性),这样的话,就是不可以接受的。

 

推荐阅读:

 

文章转载自公众号:仨人谈起

 相关文章