1、软件工程案例分析,陈天洲 浙江大学计算机学院,软件特征(1),最根本的:软件是一种逻辑元素而不是物理元素 软件是开发出的,而不是用传统的方法制造出来的 软件不会被用坏,软件特征(2),软件特征(3),工业界已经走向了标准化装配时代,然而绝大多数软件还是定制出来的。 科学计算函数库(60年代) 重用数据结构 重用组件,成本结构发生了巨大的变化,一次性的制造成本 介质成本的可忽略性逻辑产品 不可回逆的投入 维护成本的增加 服务是质量要素中的重点,软件危机,“软件危机” 是1958年在NATO会议上作为一个正式的议题被提出来 软件项目不成功的例子比比即是: 1999 年 10 月,耗资 1.25 亿
2、美元的 NASA 的火星气象卫星失踪(公英制转换),软件危机,一些数据: 大约70的软件开发项目超出了估算的时间,大型项目平均超出计划交付时间20到50,90以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高 美国政府审计局:只有不到2的合同定购软件在发布时具有可用性98以上的项目都失败了,软件危机,一种看法 “两难境地(Crunch Mode)”:处于两难境地的项目面临无法达到最初目标的威胁(费用、进度表、功能性等),而项目团队努力想跨越困境。 “我们正处于两难境地,在半夜之前是不会回家” “死亡行军(Death March)”:用来描述其进度表几乎不可能完成的项目。 “这
3、是一个死亡行军项目,我希望自己不要参与进去”,软件危机,更准确的说法:慢性痛苦(chronic affliction) Suggested by Prof. Daniel Tiechrow, University of Michigan 尽管忍受痛苦,但是软件依然在我们这个世界起着越来越重要的作用,但是如果能够医治痛苦,那么软件业将发展得更加健康。,软件危机的主要特征,软件开发周期大大超过规定日期; 软件开发成本严重超标; 软件质量难于保证,软件成功的标准,用户在用 用户可很容易做完要做的事失败的根本原因: 开发人员写出的东西达不到 用户要求(人的问题.技术问题),规模 复杂性 生产率,软件技
4、术面临的问题,例:Windows95有1000万行代码Windows2000有5000万行代码, 3000多个工程师,几百个小团队。,Exchange2000和 Windows2000开发人员结构,“软件工程案例分析”课程与其它软件专业课的区别,(1) 立足于系统的整体。 (2) 系统分析、系统设计、测试及维护的方法实践。 (3) 构筑一个软件系统,实践软件开发全过程。,用户,分析员,程序员,系统分析员的地位,“一个好的工业,应有一套 良好的标准来配套”,软件工业化生产过程应具备的特点 明确的工作步骤 详细具体的规范化文档 明确的质量评价标准,软件产品的标准化,软件开发过程的标准化,软件工程技
5、术的两个明显特点,强调规范化强调文档化,新世纪软件产业的趋势,网络化趋势:计算机与通信的融合趋势万维网智能网络 服务化趋势:“打包式”软件 “服务式”软件 全球化趋势,中国软件产业发展主要问题,产业规模小、集中度低 产业竞争力弱,缺乏核心技术 市场秩序较为混乱,盗版严重,制约软件产业发展的因素,软件开发规范与标准 知识产权环境 知识结构 公司体制,项目与项目管理,项目是什么 没有例行的任务 需要计划 特定的目标需要满足或者特定的产品需要生成 项目有一个预定义的时间范围 工作不仅仅是为自己,也是为他人 工作中有些特性 工作分为若干阶段 项目完成需要资源 项目是大型的或者复杂的 项目管理是什么 项
6、目管理是在项目活动中应用知识,技能,工具和技术来满足项目需求的过程,它通过初始化,计划,执行,控制和结束等活动来完成。,软件项目与软件项目管理,软件项目的特征 不可见 复杂性(以每一单位货币来看) 灵活性:软件去适应人或组织而不是相反 一致性 软件项目管理 为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。,软件项目的活动,需求分析 描述 设计 编码 校验 安装 维护 支持,软件项目分类,按软件类别 信息系统:与组织接口 嵌入式系统:接口是机器 操作系统是一个信息系统还是嵌入式系统? 有些项目是为了生成某一产品,而某些项目的进行是为了
7、达到某些目标。许多软件项目分为两个阶段,第一阶段是目标驱动,第二阶段再生成真正的软件产品。,从系统的角度看软件项目,一个项目关注于生成一个系统和/或将一个旧系统转换为一个新系统 系统,子系统和环境 开放和封闭系统 项目失败的一个原因是技术人员不能够开放系统和立即接受外界的变化。 部分优化 例如:可能很高效,但是难于修改 社会技术系统 软件项目属于此类,软件项目中的人员,项目影响者(stakeholders) 项目小组内部: 项目小组外部,但是在同一组织内: 项目小组和组织外部:如客户 不同的项目影响者有不同的目标,因而项目领导者需要能够协调这些目标。Boehm和Ross提出软件项目管理的“W理论”,该理论关注于所有各方都能从项目种获益因而对项目的成功都有兴趣。(W代表Everyone a Winner),