从学习软件以来,每个程序老师都会告诉我们要进行需求分析,而自己有时会简简单单需求分析一下,有时都不会管,然后每次写程序都会删改到自己都不知道程序要有什么功能,程序是用来做什么的,越做越感觉定题与所实施得到的结果分开了很多,没有了自己最初的设想。现在学习需求分析,感觉是自己的想法太简单了。通过对以前程序编写过程的反思,深刻的体会到了需求分析的重要性。“对需求分析工作事前千夫所指是有益的,而事后千夫所指是无畏的”。
一直以为程序才是软件好坏的关键,总是忽略了对软件的需求分析。许多数据表明,软件需求分析是提高软件质量的关键,也是决定一个软件项目的关键。
通过对本书前两篇的阅读,对需求工程的原理以及基本知识都有了初步的了解。加之最近一段时间对需求工程的学习,以看到了需求工程对软件开发的重要性。
在本书第一章中将软件需求比作“阿喀琉斯之踵 ”————一个致命的弱点。这或许也是中国软件一直不好的关键所在吧。我们需要将“重业务、重系统”作为新一代软件需求工程的重要概念。并且重新定位软件需求并借助逻辑方法是软件需求做到完整、准确、清晰、变化可控等等。软件需求分为业务及信息化规划、用户需求分析和系统需求分析。软件需求既有内容上的特征又有形式上的特征,不同的特征是不同软件需求工作的目标。
与传统的软件需求工程相比,新的软件需求工程增加了需求规划。需求规划编制出有问题分析、目标分析、业务分析、系统分析构成的业务及信息化规划说明,用于指导需求开发工作和软件工程个环节的工作。新软件需求工程由业务研究、应用建模、系统规划、需求获取、需求分析等10个业务活动结构。10个环节环环相扣,上一环节的输出是下一环节的输入。需求分析的好坏决定着项目的成败,轻视业务分析、需求分析是当前软件开发工作中普遍存在的弊病。要想做出好的软件,就必须将业务分析、需求分析与系统和编码放在同一等高的位置。
需求分析中的不同角色对于软件的需求各有不同,这就形成了矛盾。这就需要系统构架师能够有客户的思维吧,想客户之所想。系统构架师应该就是客户与软件开发者的一个链接吧。需求工程不是一成不变的,它会随着新的理论、实践过程中的总结、软件开发技术的改进等等作出适应性的改变。在软件开发过程中,需求风险是不可忽视和遗漏的,任何的错误(无论是理解还是编程)都可能带来不可小觑的风险。
“需求工程是圆心,软件工程是圆点”是需求工程和软件工程间关系的真实写照。我认为需求工程为软件工程的基础,需求工程为软件工程做什么、根据什么做提供了一个依据、一个方向,而软件工程是对需求工程的一种实现。
需求工程的三大理论之下又有着各子的知识体系,体系的不同,各有各的原则与方法。需求工程的基础是普遍试用的,无论对于软件工程还是其他工程领域。需求工程的专有知识涉及了软件开发、体系构架和信息资源等专属软件知识。需求规划的特有知识包括了需求规划、需求开发和需求管理。从以前的业务需求服从技术到现在的业务和技术开始相互关联、相互制约再到未来的以业务为核心、技术与业务两头并重,需求分析的变化越来越大,这也体现了软件开发对于需求工程的重视,这也可以看作是一种开发形式的转变,一种开发思想的解放吧!
对于新加入的需求规划,其关键在于问题、业务、系统三个类要素。提出问题、找到根源、找到症结是我们在解决问题时常说的定向、定位、定点。在我看来需求规划的七个原则为我们对我们提出了需求分析七个需要注意的地方。虽然对需求工程的理解还不是很到位,但对于其基础的概念理解还是可以的。需求工程虽然提到了很多的原则、模型等等,但都提出了以业务为主,技术为辅,可见需求工程的重要性。这些都为以后的开发,具体的学习打下了基础。