5.2 系统分析
在开始开发一个系统前,首先需要了解客户(如果是自己开发的话,自己就是客户)的需求。需要了解客户需要做的这个系统是为了要完成一项什么工作,希望系统具有什么样的特征,要到达什么样的目标。
在详尽地了解了客户的需求后,再从系统构筑的观点来做出方案。在进行大规模的系统开发时,客户通常会邀请几个有能力完成开发的公司来参加提案。从系统开发的角度,如何向客户完美地讲解/演示解决方案,对一个软件开发公司/软件设计人员来说非常关键。解决方案的主要内容是向客户介绍,怎样做才能实现客户的需求。
一个好的解决方案,不仅要考虑到达客户的系统功能需求,还要考虑如何实现客户对成本控制的需求(尽量低的花费,完成尽可能多的“活”),而且要考虑将来系统的维护、升级的要求。也只有如此,才能最终夺标成功,进入系统的具体设计阶段。
系统设计的阶段分类方法在业界有各种观点,此处介绍业界相对标准的分类观点,也是笔者在实际开发工作中采用的模式。
首先是以用户业务需求为对象,分割子系统为目标的概要设计阶段。
其次就是以各个子系统为对象的,疏通子系统功能为目标的基本设计阶段。
再次就是以基本设计成果为对象,生成具体的功能模块/类(使用面向对象语言时)为目标的详细设计阶段。详细设计后就是进行代码编程的制造阶段了。
完成了代码编程,最后就是系统的测试阶段,测试阶段实际上验证各个阶段的设计成果。
因此依次对应于详细设计、基本设计、概要设计,以及单体测试、结合测试、综合测试等测试阶段,当然最后在系统实际投入使用前,要进行有客户操作员参与的,投入使用前的模拟使用测试。
上述的设计阶段,一般各个阶段都会有明确的文档成果留下,分别是概要设计书、基本设计书、详细设计书。其中概要设计书中也会将解决方案提案阶段的成果(如硬件、软件环境等)进行详细记述的。
至于从开发工作的日程上来看,各个阶段有时并没有清晰的界限,可以说螺旋式推进,有时会有反复(如当发生客户修改需求,或设计出现考虑不周时)。有时,为了节省成本,又出现将基本设计书与详细设计书合并成一个功能设计书,但从设计角度上说,内部还会存在基本设计这样一个过程,至少有类似的思考、分析过程。
关于软件开发的阶段划分论述,实际上有一门称“软件工程管理”的学科来专门研究它,本书中,为了论述方便进行一些带有个人经验的介绍。建议参照市面上的有关专业书籍,去做进一步的学习,而且现在已经可以考试取得相关的工程管理资格了。好的软件项目管理能够获得事半功倍的效果。
系统目标(需求)
本章的目标是建立一个拥有网络书签(bookmark)管理与信息交换(message)的网站,网站实行注册制,注册用户拥有自己的独特界面,但是网站是向所有人公开的,没有注册的人也可以浏览网站。其他需求归纳如下。
(1)注册用户可以登录喜欢网页作为书签,同时可将别人登录的书签也加入到自己的书签集合。
(2)注册用户间可以相互发送信息。
(3)可以加入其他用户为自己的朋友。
(4)履历功能。
(5)用户注册功能。
明确了上述的系统建设目标后,就可以决定要实现这个目标所采取的措施。一般首先是确定需要实现目标的硬件与软件环境,其次是分析系统里包含的子系统。
软件与硬件环境
关于软件环境这一点,这里需要补充的是将使用Zend Framework&Smarty的框架,来构筑一个真正的MVC的系统。其他软硬件环境与第1章中介绍的内容没有任何变化。
子系统分析
由上述的需求信息,我们可以看到将需要构筑下述子系统:
● 书签(bookmark)子系统
● 信息交互(message)子系统
● 用户注册与登录子系统
除了上述的子系统外,还应该有下述的共通功能。
● 履历功能
● 菜单(顶部菜单与导航菜单)管理功能
● 数据库使用界面
● 共通检查功能
另外,为了使页面的外观更统一,可以将页面的标题统一管理,因此还会计划加入页面标题共通功能。
补充
本章需要的程序库
本章除了Zend Framework/Smarty外,还使用其他几个PEAR程序库。按照4.16节、4.17节介绍的步骤使Zend Framework(Zend_Controller)与Smarty有效,同时必须事先使用pear命令安装相应的程序库。具体如下。
以下各节中都会有安装程序的介绍,请务必参照执行。
利用本章实例时需要的注意事项
在4.17节中已经介绍过,使用Zend_Controller时,必须将应用程序目录放在Apache公开目录以外。
本章为了方便,将应用程序目录也放在公开目录下了,实际运用时,一定要移动到其他地方。
共有条评论 网友评论