1.在用Java进行软件系统的开发时,需要想到两个方面,一个是业务的流程(即代码的调用执行流);另一个业务的功能模块(即代码的方法及属性)。
业务流程依靠业务功能模块的调用与执行来完成。
我们通常所做的事情是:设计业务流程,开发功能模块(组装成应用软件),通过用户的操作进而实现业务流程的执行与功能模块的调用。好比:一个审批流程的实现需要多个部门的工作才可以实现一样。我们事先设计好了审批流程,然后设置了一个个职能部门,然后通过办事员的申请,进而实现审批这一个业务流程。
2.业界对与软件生产过程有关问题的认识
软件产品的开发过程实际上是对问题某一求解思路的具体实现,而问题的求解途径却并不是一条;
例:桌面上现有三枚硬币,设有国徽的一面为正,另一面为反。初始时的摆放状态为“反、正、反”。现规定每次只能翻动一枚硬币(但不允许不翻),若翻动三次硬币能否得到三枚硬币为全正或全反的状态,既如下图的效果。
解:设正面为0、反面为1、一枚硬币的状态用qn={0,1}表示,同时为此三枚硬币按自左至右的顺序编号为0、1、2。则三枚硬币的任一状态组合为Qn={q0,q1,q2},且Q共有23=8种状态。即:
Q0={0,0,0}、Q1={0,0,1}、…Q7={1,1,1}
其中Q5={1,0,1}为初始状态。现定义翻动一次第q0号硬币的动作为A;翻动一次q1号硬币的动作为B;翻动一次q2号硬币的动作为C。这样可将已知问题的状态空间描述为:<{Q5},{A,B,C},{Q0,Q7}>。并可用下面的状态变化图描述出全部的状态变化过程:
由此图可分析得出Q5与Q0间不存在一组三步连线,而Q5与Q7间却有多达7种解法:{A,A,B}、{A,B,A}、{B,A,A}、{B,B,B}、{B,C,C}、{C,B,C}、{C,C,B}。由此可以推广得出以下的结论:随着问题空间状态的增多,便会使解题的路径数量按指数级数递增。而解题路径的搜索难度也随之加大。一个复杂系统可以被分为多个简单系统,每个简单系统的问题空间状态都是有限的,但所构成的复杂系统的问题空间状态不是其简单系统问题状态的数值和。
3..实例【连连看游戏(Link Game)开发】
(1)业务流程
参考资料:
1.软件开发文档范例 :http://zz563143188.iteye.com/blog/1835305