上海西门子模块授权一级总代理
一致性、可变性和不可见性,是软件的本质特性。这些特性,使得软件开发的过程变得难以制,开发团队如同在焦油坑里挣扎的巨兽,挣扎得越猛烈,焦油纠缠得越紧,后有可能沉没到坑底。因此,我们需要寻找解决问题的有效方法,以保证软件开发过程的高效、有序和可。用有关的各种图文资料。
Fred Brooks教授,是软件工程领域非常有影响力的人物。他曾经担任IBM OS360系统的项目经理,在计算机体系结构、操作系统以及软件工程方面做出了杰出的贡献,并因此于1999年获得了图灵奖。
Brooks教授在1987年发表了一篇题为“没有银弹(No Silver Bullet)”的文章。在这篇文章中他指出:“软件具有复杂性、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因。”
(1)软件的复杂性。软件是复杂的,是人类思维和智能的一种延伸,它比任何以往人类的创造物都要复杂得多。,我们已经进入云计算时代。在互联网的集环境下,系统规模更大更复杂,可以说,软件是人类有史以来生产的复杂度高的工业产品。这种复杂性,对软件工程师提出了很高的要求,给软件开发管理和带来了很多困难。料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。
(7)软件成本在计算机系统成本中所占的比例逐年上升。随着互联网时代的到来,电子商务、移动互联网兴起,软件经济已经影响到社会经济生活中的方方面面。硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着软件规模和数量的不断扩大而持续上升。上百年的历史,产品的生产流程及工厂、车间、工种等的机构设置和角色分工都有了成熟的模式。但是,软件企业及软件产品的生产,历史不长,加之软件本身的智力劳动的特性,软件作为产品的生产流程及其相应的管理活动,还远远没有一个成熟的模式。此外,软件不同于一般程序,
个显著特点是规模庞大,而程序复杂性将随着程序规模的增加而呈指数上升。为了在预定时间内开发出规模庞大的软件,必须由许多人分工合作。然而,如何保证每个人完成的工作合在一起确实能够成一个高质量的大型软件系统,更是一个极端复杂困难的问题,这不仅涉及许多技术问题,如分析方法、设计方法、形式说明方法、版本制等,更重要的是必须有严格而科学的管理。
与软件开发和维护有关的许多错误认识和做法的形成,可归因于在计算机系统发展的早期阶段软件开发的个体化特点。错误的认识和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。另外,软件开发过程中如果缺乏有力的方法学和工具方面的支持会产生软件危机。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件开发产品的个性化,也是发生软件开发危机的一个重要原因。
软件项目管理(Software Project Management)的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件、软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程西门子后结束时才终止。
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、开发、使用和维护程序所需要的图文资料。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。
而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程项目。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支持环境,以期从管理和技术两方面解决软件危机问题。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。
应该开发和使用更好的软件工具,在软件开发的每个阶段都有许多烦琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地结合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。
此外,人工智能与软件工程的结合成为20世纪80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动、缓解软件危机方面起到了重要作用。
软件开发的风险之所以大,是由于软件过程能力低,