既然软件开发是高风险项目,如何避免失败则是众多软件从业者重点关心的问题。根据现代软件工程的特点和对一些典型案例的分析,在软件工程管理中应当注意以下一些重要事项:
(1)项目评估
项目评估的意义在于确定软件项目的规模、范围、成本和周期。项目评估更多地是一个商务过程,只有精确的评估才能对客户和软件供应商提供正确的商务参考。在项目精确评估的基础上,客户和供应商双方才能建立可信的商务关系,这是软件项目得以正常实施的前提。
项目规模与范围的评估需要软件的供需双方坦诚相待,共同以软件应用目标为导向,深刻分析软件的作用范围及其可能的演变。对于规模过大的软件项目,可能很难估计,这种情况下就需要对软件项目进行分解,使其形成相对独立的评估基准点。
项目成本和周期的评估联系非常紧密,其核心是工作量和资源评估相结合的过程。软件开发活动是科技人员的群体智力活动,由于软件人力资源的票赋和结构特点,对于相同的工作员,其研发成本可能出现出几倍的差异。对于项口开发周期而言,也会因为软件开发资源配置的不同而出现显著差异。
(2)需求定义
相对于项目评估,需求定义则是对项目规模和范围进行细化。需求定义是在充分理解软件项目目标的基础上,对其应用领域进行业务分析与优化。需求定义的重点在于对分解的业务进行软件语言的表达,使其能够被软件开发人员无歧义地理解。
需求业务的软件语言表达是指将业务表达为计算机科学善于处理的逻辑业务流程、相关业务数据以及由此形成的业务信息流。
除此以外,需求定义还必须关心人机界面。软件的可用性集中体现在人机界面上。随着计算机图形技术的发展,特别是Windows视窗技术和浏览器技术的出现,在现代软件工程中已经越来越注重软件界面设计,用户对此也提出了更高的要求。
人机界面的定义以方便业务处理为目标,以简洁性为原则。在此基础上则兼顾操作员的使用习惯和用户的企业文化等其他因素,从而保证软件的可用性和外在质量。
(3)过程思维
过程思维是管理控制的一种基本思维方法,其核心方法是对所控制的对象进行分解,以增加控制对象的透明度。应用这种思维方式,人们在工程管理和生产管理中提出了卓有成效的管理方法,加国际质量控制体系ISO9000系列。软件工程领域也以此思维方式为基础提出了著名的CMM(I)成熟度模型。
过程思维应用在实际的软件工程管理中就是根据软件项目开发周期的特点,在整个生命周期中设置若干检查点和里程碑,增加软件开发过程的可靠性。可靠的过程保证、可靠的软件开发过程质量是过程思维在软件开发中的具体目标和方法。
检查点和里程碑的具体设置是一种管理艺术,它需要根据实际情况而定。对某些软件项目和开发团队而言,可以设置长过程以降低用于质量保证的成本;而对某些软件项目和开发团队而言,则适合设置短过程以保证软件的成功开发。
(4)开发环境
开发环境是指软件人员在从事软件开发过程中所处的工作环境。开发环境是影响软件开发人员工作效率的关键因素。
开发环境主要包括两个方面的环境:
一方面是指开发团队了作的技术环境,所有开发人员应该有一个一致的工作平台,该平台一般内配置管理组进行保证。一致的工作平台可以减少协同开发的沟通难度,还可以保持开发团队一致的努力方向。
另一方面是指开发闭队工作的软环境.主要包括企业文化、团队精神、协作方法等人文方面的环境。一个好的软环境能为开发团队提供轻松的工作氛围,增强团队的凝聚力,这对于需要不断激励智力的软件开发活动来说尤共重要。软环境的好坏直接影响开发团队的创新能力。
(5)组织管理
组织管理是软件项目成功的组织保障,任何社会化生产都离不开组织与管理,发活动也不例外。然而,沈阳软件开发的组织管理又显著区别于传统的组织管理模式,些自己的特点。
管理对象的自主特性。沈阳软件开发的从业人员一般都受过良好的高等教育,有着自己独立的价值观和独特的工作方式,在软件开发团队中,总能表现出多元化的文化特征和行为特征。这对管理者提出厂较高的要求。
科研活动的不可预测性。软件开发过程中,往往伴随着大量的科技创新工作,这些工作在工作量和工作时间上很难进行精确的评估,这使得对时间、成本和质量三方面的控制与权衡会变得较为困难,也常常是软件开发工程管理者难于把握的因素。
软件项目的外部性。相对于软件项目本身,软件开发活动中还存在外部性特征。软件项目持别是应用软件项目往往与其他外部因素纠缠在一起,很多问题必须要多方参与才能解决,如何协调相关各方也是组织管理的难题。
因此,在沈阳软件开发工程管理中,注重组织管型形式和在此基础上处理好组织管理活动是执行既定软件项目计划的关键一环。
(6)团队协作
团队协作是个老生常谈的问题。只要存在社会化大生产,都会存在团队协作的问题,只是在软件开发活动中该问题显得尤为突出。
在现代软件工程中,已经不再适合单打独斗的软件开发方式,这也是软件产业发展的自然要求和结果。软件汗发活动中必须注意团队协作,这巴经在众多的软件工程实践中得到了证明。
软件开发活动中的团队协作应该是一种高层次的协作,不能像传统的生产流水线是简单的、僵硬的协作。它是一种智力的协作而非体力的协作。协作各方应当具备较强的沟通能力和沟通愿望,清晰地阐述自己的观点和知识,使得很多http://www.chang999.cn/问题在交谈中或工作会议中即可得到解决。
(7)与用户互动
用户是检验软件项目成功与否的权威,充分了解用户的想法也就等了解软件项目努力与成功的方向。因此,在沈阳软件开发工程管理中,还要注意加强与用户互动。
与用户互动应该贯穿整个软件开发过程,而不是只在需求阶段或测试阶段进行。这是因为用户的观念是变化的,明日今天提出的需求,明大就想修改。
考虑到用户对软件的认识程度可能不够成熟,在与用户互动的过程中还要注意提高用户的软件认知成熟度。这种相互充分的沟通容易对变化的软件日标达成共识,将问题尽早提出,从而为低成本解决问题创造条件。
(8)持续改进
所有事物都是不断演化的,软件尤其突出。软件因为其相对容易的再造过程使得持续改进成为经常件的活动。
社会发展到现在,软件是最能模拟人类日常工作和管理的产品,上作和管理制度以及人们自身喜好的变化都会要求软件随之进行变化,所以要一蹴就地满足变化的需求是不可能的,只有分阶段的开发和持续改进才能紧跟不断变化的需求。这也是软件总是行众多版本的原因。
要适应软件的持续改进,软件的基础架构就显得尤为重要,采用开放的体系结构和遵循相关的国际/国内标准是唯一正确的途径。