用户调研的目的是收集需求;
用户调研的方法是直接面对面与用户交流,最好能亲身体验用户工作开展的过程,注重了解工作的细节。
用户调研的结束标志是完成了需求分析设计文档,并且得到用户的认可。在工程前期开展好用户调研对于工程的顺利进行和完成非常重要。
用户调研的人员应当集中、固定,具有多方面的经验,如:客户交流经验、程序设计经验、系统分析经验等,但调研人员数量不能太多,并能对重大问题进行独立决策。一般用户调研人员3人左右即可。
2. 关于需求分析
需求分析的目的是明确用户需要实现的内容。
可以采取多样的需求分析方法和技术,但是根本上必须描述清楚用户的业务工作、软件需求。可以有很多的需求分析的标准和规范可以采用,也可以自己根据实际情况制定需求分析的规范。
需求分析的人员可与调研人员重合,但要增加软件分析人员,并为调研人员提出调研的内容和方向。
需求分析结束的标志是程序员能够开始进行程序设计,并和建立系统原型的工作结合起来进行,因此只有程序员才能评判需求调研的质量。
关于需求分析阶段投入的时间一定不能少于全部工程时间的30%,当然40%会更好,否则很难保证需求分析的深度和质量。
需求分析阶段至少建立三类组织:调研组、需求分析组、原型开发组(可分成多个小组),统一由项目经理负责。
3. 关于建立系统原型
建立系统原型是完成需求分析的补充手段,目的是明确和确定用户需求,引导用户提出更具体的内容。
建立系统原型要求使用适当的工具和容易的软件环境,满足快速开发的要求。
系统原型一般不作为将来软件系统实现的基础,因为此时的原型系统只考虑反映用户需求的情况,缺乏统一的考虑因此最好在设计、实现阶段重新开始。
避免使用户产生"软件开发已经开始,并会很快完成"的观点,一定要明确此时软件还在前期的分析阶段,距离设计、实现还有很长的距离。
4. 关于建立总体实施方案
建立系统的总体实施方案是必须的,目的是使甲乙双方共同认可工程的实施计划,保持一定的耐心和总体意识。
总体实施方案应在需求分析基本完成的基础上开始。
总体实施方案应说明:任务量、计划进度、资金、实施阶段、各阶段结束的标志和开始的条件、完成时提交的内容。
总体建设方案应在项目经理、甲方负责人、乙方负责人共同认可的情况下,投入实施指导,否则要继续调整,此时项目经理一定要做好乙方负责人的工作,争取更多的时间(应为从乙方负责人的角度希望项目能够尽快的结束。)
一旦总体实施方案确定,就必须按照实施方案的阶段安排逐步开展工作,并进行量化和考核,如果某一个阶段没有完成,则必须对照检讨,采取措施。否则将造成项目实施组织的混乱,因为大家无法再按照一致的实施方案开展工作了,为工程项目的顺利开展提出了警告。
5. 关于建立组织机构、制度
一定要明确组织机构是必不可少的,不要回避和搁置这个问题。
只有建立了工程组织机构和管理制度,才具备完成项目的基础,因为工作的完成归根结底是人的协作。
由于大型项目需要的人员比较多,因此没有完善的组织机构和制度是无法协调好各个部分的工作的。
组织机构的建立应在项目开始需求调研的时候就开始着手建立,在众多制度中"个人激励制度"是影响最大的一个制度。
二、软件系统实现
1. 系统设计
a. 关于系统的体系结构
系统体系结构的确定是为软件需求服务的。没有必要为了结构而结构。在不同情况下采取不同的体系结构是明智的。体系结构的确定受到软件用户数量、运行环境、更新维护要求、软件分布等外部因素的影响。
b. 关于各种分析方法
目前有很多系统设计的方法,选择某一方法(OMT、UML、OO)要根据系统的特点来确定。针对信息系统而言,可以自己制定合适的分析设计方法,因为目前虽然有很多的方法,但不太适合信息系统建设的要求。在信息系统设计的时候要灵活应用各种分析方法,照搬哪一种方法都不太合适。(至少在现阶段信息系统开发水平下)
c. 关于文档
在实际工作中的体会是:文档很重要,但是经常和编程工作产生矛盾,不能得到及时的更新。为此在项目进行过程中,需要确定当前工程文档的各种标准,以及工程需要哪几类文档,文档提交和发布的时机等内容。这些文档包括:工作规范、分析设计文档、工作计划文档、日志文档、任务分配考核文档等。
d. 关于软件设计水平的定位
在软件工程开发工程中,不是采取越多新技术越好,软件的设计也不要走入"尽量提高水平"的误区。由于负责软件设计的技术人员客观上具有追求完美的特点,主观上尽力想将系统设计的完美,因此会造成软件实现需要的工作量增大,同时用户又不一定接受这些内容。在考虑软件水平的时候,主要考虑:新技术的采用和成熟技术的采用要成比例。
e. 考虑到系统用户的特点了吗
系统的设计起主导作用之一的因素是用户的特点。不论什么特点的用户都采用一致的设计思路、风格、特点不是太好的选择。脱离对用户实际情况的考虑的设计太学术化。并且在设计的时候要照顾到系统的可维护性、易用性、实现的容易性等问题。
原则之一是:能简化设计就简化,降低设计的复杂度。不要采用太复杂的设计。因为,这样的设计不便于理解、和维护。
文章来源于领测软件测试网 https://www.ltesting.net/