在软件设计中,我们通常负责UML图和体系结构设计。
但是在数据分析软件的情况下,我们必须注意设计算法和类似的东西。考虑一个需要人工智能的人脸检测软件的例子。在软件设计中,我们是否需要明确地设计软件的AI部分?
我的经理说,它必须在可行性研究中明确规定,并且非常清楚,我们可以在设计步骤中设计它。他说得对吗?
发布于 2014-03-12 09:21:44
根据我的经验,最好从算法本身开始。分析算法,找出它需要什么数据流,应该使用什么数据结构等等。这种方法使您能够围绕它最复杂的部分构建软件,从而预见和管理与它相关的风险。这也将有助于使实现更容易和更优化。
如果算法位于单独的独立的模块中,则可以在开发高级体系结构之后进行此类分析。但是,在作出任何关于执行的决定之前,仍应完成分析。
边注:要特别注意选择算法将要使用的数据结构。数据结构可以隐藏其中的一些复杂性,从而使实现更易于维护。
发布于 2014-03-12 09:42:19
所有算法部分,特别是复杂度较高的部分,都应该封装在一个精心设计的API后面。这将大大增加解耦,这是核心设计原则之一,IMHO。
因此,需要根据需要详细设计该算法,以便使该API成为足够清晰的形状,从而将其放到全局图像中,并将对该API的进一步更改最小化。
你想在减少初始努力的同时尽量减少风险,这或多或少是一种权衡,你必须在其中找到最佳平衡点。在这一阶段,您无法完全消除进一步更改API的风险,但您可以尽力避免可避免的错误,并尽可能减少此类更改的影响。
https://softwareengineering.stackexchange.com/questions/232085
复制相似问题