软件工程概述软件开发流程比尔盖子是一名建筑工人起初只干一些比较简单的建筑工作凭个人技术和经验,不需要特别设计,可以顺利完成如同编写早期比较小的程序软件开发流程新任务:建造一间非常美丽而完整的房间工作变得复杂许多像不断发展的软件,功能越来越多,越来越复杂软件开发流程软件复杂性图形用户界面客户/服务器结构分布式应用数据通信超大型关系型数据库项目团队中的角色比尔想到需要更多的人手帮他终于组成了自己工作团队就像软件中的项目团队软件项目团队中的角色项目经理技术负责人软件架构师项目团队分析师设计人员开发人员测试人员项目人员构成比例例子:微软EXCHANGE2000SERVER的开发:项目经理:25人开发人员:140人测试人员:350人WINDOWS2000:项目经理:250人开发人员:1700人测试人员:3200人软件工程师的工作项目设计与分析编码编写文档测试团队管理软件工程师的素质良好的编码能力规范化编码习惯规范意识团队精神具有软件工程的概念求知欲、进取心和学习总结的能力团队组织和管理能力软件开发过程“这次不能盲目开工,我们需要首先好好设计一下!”构想分析设计构造评估软件的制作过程也非常相似软件开发过程软件开发可行性研究与计划需求分析设计开发评估/测试维护建造房屋构想分析设计构造评估维护软件开发过程模型软件开发需要经历几个步骤具体如何实施,具体项目不同,有所区别软件开发过程模型:制作具体软件时,开发步骤的具体实施方法瀑布模型瀑布模型瀑布模型——“线性顺序模型”将每个阶段都清楚定义了起止点产生明确的交付成果阶段之间通过文档进行沟通每个阶段都必需完成全部规定的任务(文档)后才能够进入下一个阶段可行性研究与计划需求分析设计开发测试维护可行性研究报告需求说明书设计文档程序测试报告可行性研究与计划阶段确定项目目的了解系统中客户的期望确定系统的规模论证项目可行性技术可行性经济可行性操作可行性社会可行性需求分析阶段需求是产品的根源需求工作的优劣对产品影响最大获取需求客户同行、专家已经存在的同类软件产品行业标准、规则Internet相关资料可能遇到的问题用户说不清楚需求误解需求分析需求功能需求记录在客户需求说明书中需求分析阶段文档介绍产品功能性需求产品介绍产品应当遵循的标准和规范其他需求需求说明书产品非功能性需求需求分析阶段设计阶段目的:根据用户的需要制定标准,划分并分配任务设计GUI标准设计数据库设计过程模块设计编码标准构建原型分配任务设计阶段涉及的活动开发阶段开发阶段对用户界面进行最后的修改构建数据库通过添加代码使其具备功能评估/测试阶段本阶段测试每个单元的功能测试阶段涉及的活动单元测试数据验证测试安全性测试强度测试集成测试维护阶段为客户提供故障诊断支持网络电话上门应用程序要求的任何软件升级版本补丁软件开发过程比尔通过类似软件瀑布模型的方式成功完成了自己的建筑项目