软件危机
在计算机软件开发和维护过程中所遇到的一系列严重问题
软件工程定义
采用工程的概念、原理、技术和方法来开发与维护软件
软件工程的基本目标
优质、高产
软件生命周期
①问题定义
②可行性研究
③需求分析
④总体设计(概要设计)
⑤详细设计
⑥编码和单元测试
⑦综合测试
软件开发模型
模型名称 | 说明 |
瀑布模型 | 适用于:用户需求较为明确的情况; 特点: 1.阶段间具有顺序性和依赖性; 2.推迟实现的观点 3.质量保证的观点;每个阶段都必须完成规定的文档,没有 交出合格的文档就是没有完成该阶段的任务;每个阶段结 束前都要对所完成的文档进行评审; 它是一种文档驱动的开发模型; 优点: 1.强迫开发人员采用规范的方法,结构化技术; 2.严格规定了每个阶段必须提交的文档; 3.要求每个阶段交出的所有产品都必须经过质量保证小组 的仔细验证; 它是带“反馈环”的; 缺点: 不能保证最终开发出的软件产品能否真正满足用户的需求;不适应软件开发工作中用户需求的改动,对风险的控制能力较差; |
增量模型 | 适用于:用户需求较为稳定,技术风险较大的软件系统; 强调每一个增量都要发布一个可操作的产品,分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个一个构件向用户提交; |
螺旋模型 | 适用于:大型、复杂、高风险的管理信息系统 可以把它看做是在每个阶段之前都增加了风险分析过程的快速原型模型; 主要优势:在于风险驱动
|
喷泉模型 | 是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程; 优点:提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。 迭代和无缝的特性; |
V模型 | 强调在开发过程中测试贯穿始终;V模型在瀑布模型的基础上,强调测试过程与开发过程的对应性和并行性;适用于需求明确,而且很少有需求变更的情况; |
原型模型 | 适用于软件开发过程中用户需求会变更的场合; 通过向用户提供原型来获取用户的反馈,使开发 出的软件能够真正反映用户的需求; |
快速原型模型 | 适用于:用户需求不明确,小型或是交互的系统,大型系统的某些部分; 它是不带“反馈环“的; 过程: 它的第一步是快速的建立一个能反映用户主要需求的原型 系统,让用户在计算机上使用,通过实践来了解目标系统 的概貌;通过向用户提供原型来获取用户的反馈,使开发 出的软件能够真正反映用户的需求; 目标是快速,低成本;
|
构件组装模型 | 步骤: ①需求分析和定义 ②软件架构设计 ③构件库的建立 ④应用软件设计 ⑤测试和发布 优点:提高了软件的复用性、可靠性; |
软件开发方法
名称 | 说明 |
结构化方法 | 1.用户至上 2.严格区分工作阶段,每个阶段有任务和成果 3.强调系统开发过程的整体性和全局性 4.系统开发过程工程化,文档资源标准化 5.自顶向上、逐步分解 适用于用户需求较为明确的开发 |
原型法 | 适用于需求不明确的开发 |
面向对象方法 | 1.更好的复用性 2.关键在于建立一个全面、合理、统一的模型 3.分析、设计、实现三个阶段界面不明确 |
面向服务方法 | 三个层次: 1.基础设计层 2.应用结构层 3.业务组织层 服务建模: 服务发现、服务规约、服务实现 |