软件的开发过程是一系列的问题和问题的解的发现过程。
最初的问题来自动于用户的业务目标(痛点)。软件的功能设计即为此问题的解。
而功能设计本身又构成了软件实现设计的问题空间,软件的实现设计即为对应的解空间。
软件内部是由模块构成的,我这里的模块是范指,一个模块是一个独立的功能块,可大可小,大的比如:软件的某个界面功能部份、某个WebService提供者、业务逻辑组件等;小的可是一个类。一个模块对外提供的服务是某个问题需要的解;而这服务的解对其它的模块所产生的需要又构成了其它模块的问题空间。
问题空间代表的就是需求,解空间代表的就是设计。从上面的论述可以看出,需求和设计是个相对的概念,存在于软件开发的各个阶段。
处于不同位置的需求和设计本质上是相同的。因此,用于需求分析的手段和概念也是通用的。比如:领域模型可以用来描述用户的业务领域;也可以用来描述界面上的相关概念。用例可以用来描述用户的功能需求,也可以用来描述一个模块对另一个模块的功能需求。
然而,在软件开发的整体过程中,对于功能设计以下的实现设计工作,通常不再进行需求和设计的区分。这是因为,功能需求和业务及用户有直接的关系,但又不是直接可以得出的,因此需要把软件的功能本身作为研究对象。(这里注意:应该由用户提供的是业务目标和领域知识,功能设计要由工程师把握,常常用户凭直觉说出的设计方案,会对工程师带来误导。比如有一个用户要我读windows补丁信息,让我直接从填加删除窗口抓取;而后来发现直接从注册表是可以获得的。但是用户所想到的解决方案并不是没有用处,一方面这个也可能是一个解决方案,另一方面它反应了问题本身的细节。)
当软件的功能需求确定后(包括功能的界面),功能就成了软件实现的问题域了。而恰当的解是比较容易导出的。在设计过程中用UML顺序图来刻划模块间的环环相扣的关系是非常恰当的。
通过以上论述,可以得出以下结论:
软件可以认为是从用户的业务目标一步步推导出来的。
软件的开发过程常常出现如下问题:
问题域的认知常常需要一个过程。因此软件做出来后,可能对用户的问题域还有未知的部份,这时将导致软件的改进。要做到对用户的问题域有充分的认识,行业经验是一个关键因素。
对于较复杂的解的认知也需要一个过程,因此实现的方法,可能和最初的设计有很大的偏差。软件设计经验对得出恰当的解有很大帮助。
分享到:
相关推荐
100个著名初等数学问题.历史和解 数学家与算法家的经典训练教材
案例知识抽象层存储从案例的问题和解中抽象出的公共问题类及通用的解类,也称问题空间和解空间,可提高检索效率;领域知识主要存储领域知识、领域概念、概念之间关系、案例资源等,可支持基于概念或知识的推理,提高...
分析总结了任务调度在云存储和云计算系统中的不同, 指出现有云计算中的PSO调度算法应用在云存储中时会产生对云存储系统来说无意义的解, 即会要求系统节点提供它所不具有的数据。为解决此问题, 改进现有的基于PSO的...
纠纷和解协议书.doc
完美支持中文安卓平台最强专业压缩和解压缩软件
基于pako的gzip 压缩和解压缩,解决中英文乱码问题。可运行demo
7-Zip ZS 是著名 7-Zip 的分支,它提供了一种简单明了的方法来创建和解压缩档案,验证文件的哈希值以及测试压缩文件中的潜在错误。 开源免费解压缩软件 7-Zip ZS 中文多语免费版开源免费解压缩软件 7-Zip ZS 中文多...
c# 压缩和解压缩自己写的一个例子,并非用到SharpZipLib来压缩和解压文件,而是自己引写老外的,然后改写了一个,也没用到.NET自带的压缩与解压缩。 比他们都好的压缩!!!!
针对有人说我是骗子这件事,特别说明:我的标题已经说的很清楚了,这个库本来就是我在Libjpeg库的源码基础上改的,原来的库在压缩和解压缩时必须提供一个文件句柄,也就是必须基于文件操作,当然也可以基于数据流...
和解协议书(和解撤诉).pdf
最新免费咨询债务纠纷和解协议债务金额确定及还债和解契约书范本DOC文档版式.docx
六年级解方程和解比例.doc
de4dot .NET程序解混淆器和解压缩器,代码还原,支持二十余种混淆器的代码还原。包括CodeWall CryptoObfuscator DeepSea Obfuscator Dotfuscator .NET Reactor Eazfuscator.NET Goliath.NET ILProtector ...
在资源管理器中选中一个文件夹,选择右键菜单中的“TreeSize Free”菜单项,就可以在这个软件中切换到相同路径下,从而可以看到各个子文件夹的体积。 2、方便的和资源管理器互相切换。除了可以在资源管理器中方便...
Huffman编码对英文文本的压缩和解压缩
C#解决socket通信过程中粘包分包问题,本项目是一个只有6个C#代码文件的开源小工程,用来学习基于TCP的套接字通信包,可以自定义通信协议,处理分包和粘包,内置一个服务端和客户端的套接字程序,也有测试代码和对应...
802.11协议的数据解扰和解MAC地址C语言
1. 统计输入图像中每个像素值出现的频率,建立字符到频率的映射表 2. 根据频率使用最小堆构建 Huffman 树 3. 根据 Huffman 树为每个像素值赋予一个可变长度的二进制编码 4. 使用上一步得到的编码对原始图像进行编码 5...