技术开发 频道

如何分析问题和需求

    3.复杂化问题

    问题复杂化,是一个抽象问题或需求的逆过程,提出问题需求的许多可能的假设,丰富了问题需求的形式。能够复杂化问题,本身就体现了分析问题和需求的能力。比如:做一个加法程序,两个数相加,返回结果。简单的问题,但,我们一般都按两整数加法,有时考虑了浮点加法。为什么不是两个复数相加,或者是两个字符串相加等。这是一个使用操作符重载或类模板解决的简单例子,在这里我的意图是许多问题应该从更多的方面去验证问题是否同样存在。

    4.问一问自己:问题是否能够抽象化,继而简化问题。

    众多的问题和需求变成程序代码的过程,就是公式化问题和需求。如果象上例加法一样,不管三七二十一,什么样的数据就写一段什么的代码,不同类型数据间的加法同样又要写一段代码,这样下去就写不完了。抽象问题,简化问题,类模板就是一个抽象问题很好的例子。在分析问题和需求的过程中,同样采用面向对象的思维方式去求解,会获得一个非常满意的需求报告。

    5.问题和需求分类分主次考虑

    1)软件产品的性能指标:可靠、功能全、速度、易扩展。

    易扩展:一种是产品升级换代快、系列化产品丰富。另一种是用户的二次开发扩展产品的再生功能。

    速度:表示软件执行速度不仅要快,同时操作中的速度要均衡。

    功能全:大而全不一定是不好,有能力和实力,最好做到功能尽量全。功能全直接体现软件开发商的实力。

    可靠:这是最为重要的一点,软件首要考虑的应该是可靠。测试时,极限、异常操作都应该考虑进去。

    2)问题和需求根据软件产品的性能指标和实现难度分类:核心需求,基本功能需求,高级功能需求、组合功能需求。

    核心需求:直接影响速度、可靠、易扩展指标的好坏。比如:CAD刷屏要求速度、CAD命令行机制提高了易扩展性能、CAD内部数据结构的管理机制直接影响软件的可靠性。核心需求将定义出软件的本质内容,它主要以程序设计原理为基础,结合软件任务需求定义数据结构和管理机制。核心需求是首先要确定下来的,是最主要的工作。

    基本功能需求:完成任务的最基本的操作功能集合,这些基本功能是软件产品的底层处理功能,是众多问题和需求中抽象出的共性部分,它是其他功能的基础。基本功能需求也是非常重要的,它的好坏直接影响到后面高级功能的质量和能力。

    高级功能:是众多问题和需求中的特性部分,这些功能对某个应用是非常有用,但在另一个应用中可能没有用。比如:CAD中的图形计算:求面积或体积,在建筑施工图设计中没有使用,但在计算路基方面则非常有用。高级功能的需求应该放在较次要的位置,

    组合功能:通过基本功能和高级功能组合操作后的功能。例如:CAD中的LISP语言,CAD的批命令输入,CAD的图块功能等。这些借助于基本功能和高级功能的组合功能是一种后期行为,没有这些功能,软件一样可以使用,所以,这些需求开发并不需要急于实现,但一定要在核心中考虑组合机制。

    总之,需求分析是导致软件产品好坏的关键工作,导致软件开发难易程度大小的绝对因数。宁可将需求分析的时间给充足一些,也不愿以后在编程阶段补充修改需求(虽然修改需求是不可避免的事实)。

0
相关文章