软件设计 2017-05-21
国内的中小型软件企业虽然涉足软件开发业务,但对软件的认识停留在“程序员编代码”的水平上。对企业内部的软件开发缺乏管理意识,具体体现在以下几方面: 首先,项目负责人项目管理经验不足,项目功能相对较少,涉及面相对狭窄;其次,项目开发人员较少,人员结构简单; 再次,项目进度缺乏控制,项目成本预算较难,缺乏完整的项目文档; 最后,缺乏后续维护。
与专业软件公司的软件开发组织相比较,中小型软件企业中的软件开发工作机构小、人员少,开发人员待遇低,难以吸引高水平的人才,人才流失率达到50%以上。由于没有高水平的开发人员和技术管理人员,软件工作状况处于初级水平,软件开发不能按照软件工程的要求执行。 软件系统建立过程中需要多方面的人员:需求方人员、懂得软件项目管理的人员、软件程序员、系统分析员。普通企业由于对软件生产不了解,往往由软件需求方人员对软件工作直接管理。这个工作显然超过了其能力范围,不符合软件工作的相关原则。业务人员作为项目的负责人,既不能合理地计划软件开发工作,也不可能管理好软件工作中的各种风险,这将使软件开发处于无序的风险状态之中。
在需要团队协同工作的今天,沟通可以说已经变得无比的重要。在软件业,沟通可以说是快速学习和掌握新知识,达到技术上更高层次的最佳途径。如果小组成员在协调上出了漏洞,会导致很大的问题,所以项目负责人必须随时监控开发人员的工作,包括内容是否与要求发生偏差,进度是否滞后等等。 项目组与组织之间、项目组与项目组成员之间,甚至与一个项目组的不同成员之间,如果没有足够的沟通意识和沟通制度、沟通工具,就有可能造成信息不畅,从而加大项目失败的风险。中小型软件企业开发人员少,意味着不同人员的程序之间交互、接口相对少一些; 缺少文档资料或者文档资料不规范也是软件项目管理中的普遍问题。由于讨论时忽略了某些情况,当大家都按当时的分工完成属于自己的工作后,才发现各个模块组合起来却不能形成一个完整的系统。其根源在于没有一个负责协调的人员不断监控整个开发过程。一旦有人中途退出开发队伍,其他人加入时,新来的人难以理解以前别人做好的代码,索性自己从头做起。
与一个标准的软件开发流程相比,中小型软件企业内部的软件开发“节省”了不少步骤。例如不经过单元测试而直接进入系统测试等。由于这种测试不完全,真正运行系统,当调用某模块时,可能大部分时候都是正常数据,极少出现边界情况,但某些边界情况容易被忽视,很久之后才被发现。但是如果对每个模块进行单元测试时都进行边界测试,就会很容易消除这些隐患。
还有就是边做边改模型, 当一个软件产品在没有规格说明或主要设计的情况下被开发时,开发者往往不得不重新对产品编码多次直到他们得到正确稳定的产品。这种开发模型就是边做边改模型。边做边改模型的最重要缺点是存在于需求。设计和实现中的错误要到整个产品被构建出来后才能被发现。
回顾软件危机, 现在的中小型软件企业也存在这样的问题:
(1)对软件开发成本和进度的估计常常很不准确。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
(2)用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。
(3)软件质量保证技术(审查、复审和测试) 没有坚持不懈地应用到软件开发全过程中。
(4)软件常常是不可维护的。由于开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其是。很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,难适应用户要求增加的新的功能需求,软件的复用性不高。
(5)软件通常没有适当的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件通常没有适当的文档资料,文档资料的作用是:管理和评价软件开发过程的进展情况,开发者与用户和开发者之间通信的工具,维护工具。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件,规模和数量的不断扩大而持续上升。 (7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
以下mindmap已经缩略一些了节点:
《人月神化》中提到:需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果.
团队的默契程度对软件实施效率影响很大。一个经过长期磨合、相互信任、形成一套达默契的做事方法和风格的团队,可能省掉很多不必要的沟通,相反,初次合作的团队因为团队成员各自的背景和风格不同、成员间相互信任度不高等原因,要充分考虑沟通消耗。
软件企业人员流动率高的特点导致团队凝聚力和默契度的锤炼比较困难。而凝聚力和默契度的需要长期的、大量的内部沟通和交流才能逐步形成,由此不难理解持续良好的沟通和交流是一个团队的无形资产,自然,稳定、默契的开发团队形成一个软件企业的核心竞争力的道理。
还有一点不容忽视,那就是软件开发这种以人脑为主要工具的创造性很强的作业,开发人员的心情和兴奋度对个人工作效率影响很大,而一个人置身于氛围良好、合作默契的团队中心情一般较好,这种良好的氛围所能带来的能量是不可估量的。
软件开发是一个知识密集型领域,对人才的依赖很强。加强生产过程的规范性并规范管理,可以加强人的执行能力。 在中小型软件企业中,很少有成本核算和严格的进度控制。影响项目的因素也比较多: 需求的提出比较随便,甚至业务需求还不明确的时候就要求程序员开始编程序,没有合理的措施控制透彻的分析业务需求; 时间进度由领导规定,而不是根据需求客观确定,这样使软件质量根本无法保障。因此要通过加强管理使软件开发过程可视化,软件开发工作协调、有效。 在规则明确、组织机构确定、有一定的理论认识之后,可以通过一些管理要求,强制执行软件工程的一些基本过程,要求的提出要简单明了。例如: 项目要有正式立项启动、项目结项,有时间控制要求、计划要求。要求项目有开发计划,计划中确定开发工作的人员保障、开发周期、开发进度计划,并允许项目进行中在一定范围内调整计划与进度。上级领导也应出面协调和帮助解决相应问题。
--------------------------------------------------------------------------------------------------------------------------------------------
今天先到这儿,希望对您在研发管理, 团队管理, 项目管理, 产品管理 有参考作用 , 您可能感兴趣的文章: 软件开发模型与过程改进企业信息化与软件工程的迷思企业项目化管理介绍软件项目成功之要素人际沟通风格介绍一精益IT组织与分享式领导学习型组织与企业企业创新文化与等级观念组织目标与个人目标初创公司人才招聘与管理人才公司环境与企业文化企业文化、团队文化与知识共享高效能的团队建设项目管理沟通计划构建高效的研发与自动化运维 某大型电商云平台实践 互联网数据库架构设计思路 IT基础架构规划方案一(网络系统规划) 餐饮行业解决方案之客户分析流程 餐饮行业解决方案之采购战略制定与实施流程 餐饮行业解决方案之业务设计流程 供应链需求调研CheckList 企业应用之性能实时度量系统演变
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者和安科开发共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。