以下是在一个项目实践中得到的关于需求分析的一些思考;
(一)
软件设计往往强调可扩展性,但是这里的可扩展性不是对于一切需求变化的可扩展性。任何软件设计看都不可能对一切需求变化保持可扩展性。这里的可扩展性很大程度上指
的是对于可预料的需求变化的可扩展性。比如在某个迭代系统只需要为用户提供账户密码的简单登录功能,但是可以预料到的是未来迭代的登录验证方式会多样化复杂化,那么在
进行设计时就应该预留一个复杂登录验证的接口或者通过其他设计方式使得系统对于这一可预料变化保持可扩展性。
值得重视的是,软件系统的扩展性一方面取决于接口设计,代码构造,另一方面更依赖于需求分析阶段是否考虑到了未来的有变化趋势的需求。因而在迭代开发的需求分析中
不能够弱化了每个迭代之间的连续性考虑,虽然开发方式是迭代的但是需求分析不应该过分碎片化,而要有一定的大局设计。
(二)
需求分析中的用例归类方式;
在分析罗列功能需求时,怎样划分用例的模块常常会影响到未来结构设计中的包设计,类的设计。比如有一个选课系统,有这么三个用例1、用户注册,2、用户登录,3、选
择用户加入班级。 这三个用例在需求分析阶段可以归为一个模块 即 用户模块,如果这样划分,那么在未来的软件设计当中必然会把跟这三个用例有关的类归为一个包或者一个模
块; 但是这里还有另外一种分类方式,即 将选择用户加入班级这一用例 化为管理员的模块,即在需求分析阶段按照人员身份进行分类,很显热若果这么设计,软件的体系结构肯
定和之前是有差异的;
需求分析时考虑用例的角度,或者说是用来分类用例的标准往往会直接影响到软件详细设计中模块、包、类的设计与划分。因此在需求分析阶段选择合理的角度进行功能需求
的划分也很重要;
(三)
待续