我是一个软件开发人员,有2年的经验。我参与了几个“小”模块的设计和开发。
我最近一直在接受技术面试。我被要求对各种问题进行模型设计(例如Apple推荐系统等)。到目前为止,我的专长是开发相对较小的模块。我想提一下我如何处理手头的设计问题:
(1)识别最基本的用例。
(2)基于行为对系统进行动态建模(如协作图)。
(3)根据第2步的动态建模绘制类图。
(4)找出更多的用例并迭代这个过程。
(5)当我感到满意时,我要求我的同龄人对它进行审查。
虽然到目前为止,我在我的项目中做得很公平,但是面试官对这种方法并不满意。当我为一个大问题做模特时,我是不是错过了什么?
我会感谢你的指点。
P.S.:我不从类图开始,因为我通过这样做找到了非常集中的体系结构,而动态建模帮助我分散了设计。
发布于 2013-10-17 11:03:21
您是否曾被要求进行高层模型(模块)设计或低级别模型设计?对于高层模型设计来说,解决一个大问题或领域是一个好主意,因为对于低层次模型设计来说,通常需要较小的问题或领域。
通常,需求/问题来自询问者(用户/面试官),因此我们不再需要定义业务需求。但我们仍然需要设计系统。
高级模型
我不太熟悉"Apple推荐系统“,所以我会使用不同的问题类比,那就是常见的Point Of Sales问题。对于高级模型,您将定义整个系统。通常是关于:
这都是高级别的模型/模块。如果有人问我如何实现这个模型,下面是我要做的步骤:
value-additional operations。
这些操作可以是通知(电子邮件/屏幕上)、历史数据维护、提醒、错误处理等。一些操作也可以是另一个用例,所以您可能需要迭代到第1号。
例如,当您在首付款结算过程中遇到错误时,可能需要另一个用例来手动输入首付款数据。或者您可能需要在另一个系统中维护提醒系统。对于其他信息,我通常使用状态图来表示用例/功能,例如order状态。
低层模型
低水平模型将从高层次解决较小的问题。简单地说,您从高级别(可能是订购)获取一个用例,然后从它开始设计低级别。我通常使用某种形式的序列图来处理,而不是先定义类图。以下是一些原因:
然后我将继续进行系统状态图(可编辑、可查看等)。
最后,我将继续database design和class diagram。
为什么类图在最后一步?
类图(和数据库设计)非常依赖于整个过程。并发发生的方式、通知、外部系统交互等都会影响接口和类图的设计。这也是最近的设计与您的代码库。
希望这个帮助,这完全是我的经验和意见。
发布于 2013-10-17 01:50:49
我想说的是,也许你应该给出一个总体的观点/概述,然后再做更深入的研究。就像您给出的"Apple Genius推荐系统“的示例一样,我认为您应该从总体设计(系统的总体情况)开始,以便确定系统的适当架构,例如确定需要哪些组件、哪些协议等等。您需要识别组件、连接器和这些组件的配置。然后,通过提出模式和工具,您可以开始深入研究。最后,用场景、用例等对体系结构进行验证。
发布于 2013-10-16 12:51:46
我认为你的方法可能会错过非功能性需求。我还要提到如何捕捉这些信息。
https://stackoverflow.com/questions/19380564
复制相似问题