`
gdpglc
  • 浏览: 94345 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

软件中,问题空间和解空间是环环相扣的,一个问题的解空间会导致新的问题空间出现,找不到源头的问题和解可能包含错误,且难以理解

阅读更多

软件的开发过程是一系列的问题和问题的解的发现过程。

 

最初的问题来自动于用户的业务目标(痛点)。软件的功能设计即为此问题的解。

而功能设计本身又构成了软件实现设计的问题空间,软件的实现设计即为对应的解空间。

 

软件内部是由模块构成的,我这里的模块是范指,一个模块是一个独立的功能块,可大可小,大的比如:软件的某个界面功能部份、某个WebService提供者、业务逻辑组件等;小的可是一个类。一个模块对外提供的服务是某个问题需要的解;而这服务的解对其它的模块所产生的需要又构成了其它模块的问题空间。

 

问题空间代表的就是需求,解空间代表的就是设计。从上面的论述可以看出,需求和设计是个相对的概念,存在于软件开发的各个阶段。

 

处于不同位置的需求和设计本质上是相同的。因此,用于需求分析的手段和概念也是通用的。比如:领域模型可以用来描述用户的业务领域;也可以用来描述界面上的相关概念。用例可以用来描述用户的功能需求,也可以用来描述一个模块对另一个模块的功能需求。

 

然而,在软件开发的整体过程中,对于功能设计以下的实现设计工作,通常不再进行需求和设计的区分。这是因为,功能需求和业务及用户有直接的关系,但又不是直接可以得出的,因此需要把软件的功能本身作为研究对象。(这里注意:应该由用户提供的是业务目标和领域知识,功能设计要由工程师把握,常常用户凭直觉说出的设计方案,会对工程师带来误导。比如有一个用户要我读windows补丁信息,让我直接从填加删除窗口抓取;而后来发现直接从注册表是可以获得的。但是用户所想到的解决方案并不是没有用处,一方面这个也可能是一个解决方案,另一方面它反应了问题本身的细节。)

 

当软件的功能需求确定后(包括功能的界面),功能就成了软件实现的问题域了。而恰当的解是比较容易导出的。在设计过程中用UML顺序图来刻划模块间的环环相扣的关系是非常恰当的。

 

通过以上论述,可以得出以下结论:

软件可以认为是从用户的业务目标一步步推导出来的。

 

软件的开发过程常常出现如下问题:

问题域的认知常常需要一个过程。因此软件做出来后,可能对用户的问题域还有未知的部份,这时将导致软件的改进。要做到对用户的问题域有充分的认识,行业经验是一个关键因素。

 

 对于较复杂的解的认知也需要一个过程,因此实现的方法,可能和最初的设计有很大的偏差。软件设计经验对得出恰当的解有很大帮助。

 

 

 

 

 

 

分享到:
评论

相关推荐

    算法竞赛-回溯与解空间树例子

    回溯法在此问题中非常有效,它会尝试在每一行放置一个皇后,如果发现冲突则回溯到上一行,改变皇后的列位置,直到找到可行的解决方案。 接着是背包问题,这是一个典型的优化问题,通常有0-1背包和完全背包两种类型...

    100个著名初等数学问题.历史和解

    《100个著名初等数学问题:历史和解》是一本数学经典教材,收录了从古至今一百个著名且具有教育意义的数学问题,涵盖了算术、几何、算法和数论等领域。该书不仅给出了这些问题的解答,还介绍了它们的历史背景和数学...

    遗传算法求解多旅行商问题的相对解空间分析.pdf

    在组合优化问题的研究领域中,多旅行商问题(MTSP)作为一个广受关注的难题,长久以来吸引了众多研究者的目光。MTSP的核心目标是寻找一组最短的路径,使得每个旅行商能够访问所有城市一次并返回出发点,而总路径长度...

    Lec08-求解 Ax=b :可解性和解的结构1

    在本节课程“Lec08-求解 Ax=b:可解性和解的结构1”中,主要探讨了如何判断线性方程组的可解性以及解的结构,特别关注了矩阵的秩在理解解的空间中的角色。 首先,线性方程组 Ax=b 的可解性是解决此类问题的前提。可...

    回溯法解决八皇后问题

    八皇后问题的解空间可以被构造成一棵树,其中每个节点代表一种可能的布局。 3. **搜索解空间**:按照深度优先搜索(DFS)策略,从根节点开始探索解空间树。每当遇到一个节点时,先判断该节点是否能产生有效的解,若不...

    java android zip解压缩(解决压缩中文乱码问题)

    然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 ...

    castor 问题 无法解组

    Castor 是一个开源Java库,主要用于XML到Java对象的映射和反映射,它使得在Java应用程序中处理XML数据变得更加便捷。当你遇到“castor无法解组”的问题时,可能涉及以下几个方面: 1. **配置问题**:Castor 需要...

    Huffman编码对英文文本的压缩和解压缩

    3. **合并操作**:每次从森林中选取两个频率最小的节点,并将它们作为子节点合并成一个新的节点,这个新节点的频率等于两个子节点频率之和。然后将这个新节点放回森林中,继续进行下一轮的选择和合并,直到最后只...

    连续空间二元粒子群算法理论研究综述.pdf

    该算法中,每个粒子代表解空间中的一个潜在解,它们通过跟踪个体经验和群体经验来调整自己的飞行方向和速度,最终收敛到最优解。 在连续空间优化问题中,粒子群算法需要处理解空间的连续性,而离散域优化问题则涉及...

    解多目标优化问题的新粒子群存档算法.pdf

    多目标优化问题是工程和科学研究中常见的复杂问题类型,它要求在多个可能的解决方案中找到最优的一组,这组解往往需要在不同的目标间取得平衡。传统粒子群优化(PSO)算法在单目标优化问题中表现出色,但在处理多...

    算法分析与设计:05 第五讲_回溯法.pdf

    解空间可以通过一个二进制向量表示,每个元素表示物品是否被选中,从而构建出一个解空间树,算法通过回溯法在树中搜索最优解。 解空间是问题所有可能解的集合,确定正确的解空间至关重要,因为它直接影响搜索的效率...

    基于改进蚁群算法的机器人三维空间路径规划.pdf

    该问题是机器人技术和自动化领域中的一个重要课题,涉及到机器人的运动规划、避障技术和搜索算法等多个方面。 蚁群算法是一种常用的搜索算法,通过模拟蚂蚁搜索食物的行为来寻找最优解。然而,传统的蚁群算法存在...

    使用遗传算法解决MTSP问题的一种新的染色体设计

    综上所述,针对MTSP问题,本文提出的新染色体设计方法通过减少解空间和增强路径协调机制,有效提升了遗传算法的搜索效率和解的质量。这一成果对于解决实际应用中的大规模MTSP问题具有重要意义。

    自适应子空间高斯学习的粒子群优化算法.pdf

    在标准PSO中,每个粒子的位置代表了解空间中的一个潜在解,而粒子的速度则表示它向新位置移动的趋势。粒子通过不断地调整自己的位置和速度,以达到寻找全局最优解的目的。 然而,PSO算法在面对多峰问题、高维问题...

    基于空间划分树的多目标粒子群优化算法.pdf

    在MOPSO中,空间划分树被用来对解空间进行分割,将多目标问题的解空间划分为多个子区域,每个子区域对应一个网格。每个粒子被分配到相应的网格中,这样可以更好地管理和分析粒子的分布。 算法的核心策略是结合网格...

    8.MATLAB优化与控制模型代码 改进蚁群算法求解连续空间优化问题代码.rar

    综上所述,这个MATLAB代码库提供了改进蚁群算法解决连续空间优化问题的实例,对于学习和研究优化算法,尤其是MATLAB编程者来说,是一个宝贵的资源。通过深入理解并实践这些代码,可以提升在优化问题解决方面的能力。

    解压软件7 zip 安装包

    描述中提到的问题“提取存档提取操作没有完成出现意外错误,导致无法提取存档 错误Ox8007000E:内存资源不足,无法完成此操作”,这是一个常见的错误代码,表示在尝试解压缩文件时遇到了内存不足的问题。错误代码0x...

Global site tag (gtag.js) - Google Analytics