关于系统分析和设计的思考经验分享

本篇文章试图给出一条清晰的路径,一步步理清系统分析及设计的各个概念和一些关键的步骤。我们在这个过程中会遇到问题,如何解决,和解决问题的思路就是关键。

前言

本文尝试以问题为线索,一步步讲解系统分析和设计的相关知识,除此,还会加上我自己的一些经验总结。接下来我们进入正题。

分析和设计的步骤

先说说软件的完整开发过程,它包括从立项、需求分析、领域设计、类设计、编码、测试、部署到最终上线。本文主要讨论的是从需求分析编码的过程,这里牵涉到编码的过程也是考虑到分析和设计的完整性,如果单单只考虑系统分析和设计而忽略编码,分析和设计也可能做不好,文章后面会慢慢谈到。

1.需求分析:这个步骤可以做的非常简单有效(但并不容易),我的方法是直接文本描述,把能想到的都记录下来,这个文本也可以叫做用例,如果文字的方式还表达不清楚,你可以用UML模型进一步表达,但关键是”站在用户的角度”表达清楚需求,而不是局限于形式和工具。

2.领域设计:这一步就需要从文本描述中抽象出一些概念了,怎么抽象呢?找名词。把名词全部抽出来后,再做进一步筛选,哪些是无用的,那些是重复的,剔除精简之后,大概就出现了一个领域概念的轮廓图了。昨晚这一步还没完,你需要继续分析它们之间的关系,以及初步给每个领域附加一些你能想到的属性,这个步骤做完可以得到一个领域模型,这个领域模型就可以用于数据库的设计和类设计了。

3.类设计:有了领域模型,接下来我们就可以进一步细化设计,考虑类有哪些职责了,主要是产出物是类设计模型

4.交互设计:给类分配完了职责,它们之间又是如何协作的呢?如何确保它们之间协作能完成好需求?这就需要我们画出顺序图,这个步骤已经不是停留在概念的层面了,你应该想象出一个个的对象,它们都有不同的行为,你需要确保的就是它们各司其职,正确交互,并最终完成需求。

5.编码:前面的设计完成了,就到了实现的阶段,这个阶段是最容易发现潜在问题的,如果你编码不下去了,需要意识到,问题可能出现在上面的多个步骤中,但是,也不排除是自己把问题复杂化了的可能性。总之,这个阶段的关键就是站在不同角度去定位问题,这也是一般开发者很难做到的一点,难在思维转变,后面会提到。

思维差异

从开发到设计,思维上有何不同?

1.重视需求分析:如果你体会过一个系统的完整开发流程,你将会有更深刻的理解;

2.设计不是一步到位,而是分层次,循序渐进,迭代进行的;

3.设计的每个层次之间是相辅相成的,只停留在某个层次思考可能永远也找不到答案;当你编码不下去的时候,可以跳出来想想是不是其他层次出了问题,比如需求用例是否详细?领域设计是否缺少了某个关键概念?类设计钟职责分配是否合理?

一些经验分享

如何发现职责分配不合理的问题?

1.设计阶段

有时候,在领域设计阶段就能发现这个问题,比如A、B、C三个领域互相之间没有关系,只跟领域D发生了联系,这时候,可以初步思考下是不是职责分配过于集中了,这可能会影响到系统的可扩展性和灵活性。不过,也不必急于下定论,我们可以通过下面的阶段来验证我们的想法。

2.编码阶段

在这个阶段,你可能会发现,某个类中的某个方法(职责)会有大量的if判断,而如果需求变了,就会涉及到大量的改动,如果一个类频繁改动,就会影响到系统的稳定性。因此,我们可以尝试把变化的这部分逻辑封装起来,在原来职责上做细化,并重新分配到其他类钟,这就是编码和设计的互动了。编码也可以驱动设计的不断完善,它们之间是相辅相成的。

其他思考

分析、设计、编码各个层次之间的关系

这有点像工作中的上下级关系。上级负责指导下属的工作(分析、设计),下属执行工作,并在合适的时候提出反馈建议,完善上级的指导工作,最终合作达成工作目标。总结下来就是上级指导下级,下级完善上级的关系,两个角色也是相辅相成,缺一不可的。

小结

本文主要讨论了系统分析和设计的相关概念,一般步骤,以及一些实际经验的分享和思考。由于本人能力有限,文章的观点不免片面之词,如果你有更多的思考,欢迎留言区一起讨论分享,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值