软件工程导论ch1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
缺点 (1)用户只能通过文档来了解软件产品; (2)传统的瀑布模型很难适应可变、模糊不定的软件系统的开发,
而且在开发过程中,用户很难参与进去,只有到开发结束才能看 到整个软件系统。这种理想的、线性的开发过程,缺乏灵活性, 不适应实际开发过程; (3)软件产品不能真正满足用户的需求。 适应场合 需求基本清晰且不变或很少变化的软件项目的开发。
10)可互操作性(interoperability),是指多个软件元
素相互通信并协同完成任务的能力。
15
第1章 软件工程学概述
1.2.2软件工程的基本原理
1. 用分阶段的生命周期计划严格管理 2. 坚持进行阶段评审 3. 实行严格的产品控制 4. 采用现代程序设计技术 5. 结果应能清楚地审查 6. 开发小组的人员应该少而精 7. 承认不断改进软件工程实践的必要性
❖螺旋模型沿着螺线旋转, 在笛卡尔坐标的四个象
限上分别表达了四个方 面的活动:
▪制定计划。确定软件目 标,选定实施方案,弄
清项目开发的限制条件。
▪风险分析。分析所选方 案,考虑如何识别和消
除风险。
▪实施工程。实施软件开 发。
▪客户评估。评价开发工 作,提出修正建议。
图1.8完整的螺旋模型
29
第1章 软件工程学概述
21
第1章 软件工程学概述
1.4.2快速原型模型
(Rapid Prototype Model)
开始
结束
初步需求
分析
快速设计
开发产品
建造原型
对原型加工
用户 评估 原 型( 新 需 求)
图1.4快速原型模型
22
第1章 软件工程学概述
优点 (1)通常能满足用户的真正需求; (2)开发过程基本上是线性顺序过程。
(1)把对象作为融合了数据及其在数据上操作的软件构件;(2)对象划分成类;(3) 类之间构建继承关系;(4)消息驱动。
17
第1章 软件工程学概述
1.3软件生命周期
1. 问题定义
软件定义
2. 可行性研究
3. 需求分析 4. 总体设计
软件开发
5. 详细设计
6. 编码
7.单元测试、综合测试
8. 软件维护
12
第1章 软件工程学概述
6)可重用性(reusability),是指软部件可以在多种场 合使用的程度。 概念或功能相对独立的一个或一组相关模块可构成 一个软部件。软部件应具有清晰的结构和注释、正确 的编码和较高的时空效率。可将各种软部件按照某种 规则放在软部件库中供开发人员选用。 广义地讲,可重用性还应包括应用项目、规格说明、 设计、概念和方法等等的重用。一般来说,重用的层 次越高,带来的效益越大。 可重用性有助于提高软件产品的质量和开发效率、 降低软件开发和维护费用。
适应场合 (1)开发周期很长的项目,通过原型开发来缩短开发周
期; (2)系统的使用可能变化很大,不能相对稳定,而原型
模型具有适应变化的机制; (3)用户对系统的需求较为模糊,对某种要求缺乏信心; (4)开发者对系统的某种设计方案的实现无信心或无十
分把握。
24
第1章 软件工程学概述
1.4.3增量模型 (Incremental Model)
13
第1章 软件工程学概述
7)可适应性(adaptability),是指软件在不同的系统约 束条件下,使用户需求得到满足的难易程度。
选择广为流行的软硬件支持环境、采用广为流行 的程序设计语言编码、采用标准的术语和格式书写文 档可增强软件产品的可适应性。
8)可移植性(portability),是指软件从一个计算机系 统或环境移植到另一个上去的难易程度。
19
第1章 软件工程学概述
1.4.1瀑布模型 (Waterfall Model)
1. 阶段间具有顺序性和依赖性 2. 推迟实现的观点 3. 质量保证的观点
图1.2传统的瀑布模型
图1.3实际的瀑布模型 20
第1章 软件工程学概述
优点 (1)强迫开发人员采用规范的技术方法; (2)严格地规定了每个阶段必须提交的文档; (3)每个阶段结束前必须正式进行严格的技术审查和管理复审。
个体化 50’中期~60’中期 作坊 60’中期~70’中期
70’中期~80’中期
工程
产业化 80’中期~现在
6
软件危机
效率和质量
定义
在计算机软件的开发和维护过程中所遇 到的一系列严重问题。
软件危机的具体表现: ·开发成本和进度估计不准
·用户对“已完成的”软件系统不满意 ·软件质量往往靠不住 ·软件常常是不可维护的 ·软件通常没有适当的文档资料 ·软件成本逐年上升 ·软件开发生产率滞后于硬件和计算机应用普及 7
增量模型将整个产 品分解成若干个构件进 行逐步交付,因此软件 开发可以较好地适应需 求的变化,用户可以不 断地看到所开发软件的 可运行中间版本,从而 降低了开发风险。
图1.5增量模型
25
第1章 软件工程学概述
1.4.3增量模型
图1.6风险更大的增量模型
26
第1章 软件工程学概述
优点 (1)能在较短时间内向用户提交渴望完成部分工作的产品; (2)逐步增加产品功能,从而使用户有较充裕的时间学习和适应新
1.1.1软件危机的介绍 1.1.2产生软件危机的原因 1.1.3消除软件危机的途径
图1.1引入同一变动付出的代价随时间变化的趋势
3
什么是软件
在运行中能提供所希望的功能和性能的指令集(即程序) 使程序能够正确运行的数据 描述程序研制过程和方法使用的文档
可执行部分
程序
软件
文档1
不可执行部分
文档3 文档2
优点 (1)有利于已有软件的重用; (2)有助于把软件质量作为软件开发的一个重要目标; (3)减少了过多测试或测试不足所带来的风险; (4)软件维护与软件开发没有本质区别。
缺点 (1)如果每次迭代的效率不高,致使迭代次数过多,将会增加成本
并推迟提交时间; (2)使用该模型需要有相当丰富的风险评估经验和专门知识,要求
18
第1章 软件工程学概述
1.4软件过程
软件过程是为了获得高质量软件所需要完成的一系 列任务的框架,它规定了完成各项任务的工作步骤。
在完成开发任务时必须进行一些开发活动,并且使用 适当的资源,在过程结束时将把输入转化为输出。因此, ISO 9000把过程定义为“使用资源将输入转化为输出的 活动所构成的系统。”此处,“系统”的含义是广义的: “系统是相互关联或相互作用的一组要素。”
采用通用的运行支持环境和尽量通用的程序设计 语言的标准部分可提高可移植性。而应将依赖于计算 机系统的低级(物理)特征部分相对独立、集中起来。 可移植性支持软件的可重用性和可适应性。
14
第1章 软件工程学概述
9)可追踪性(traceability),是指根据软件需求对
软件设计、程序进行正向追踪,或根据程序、软件设 计对软件需求进行逆向追踪的能力。软件开发各阶段 的文档和程序的完整性、一致性、可理解性支持软件 的可追踪性。
开发队伍水平较高。 适应场合
在具有风险评估经验和知识的基础上,支持需求不明确、特 别是大型软件系统的开发,并支持面向规格说明、面向过程、面 向对象等多种软件开发方法,是一种具有广阔前景的模型。
30
第1章 软件工程学概述
1.4.5喷泉模型 (Fountain Model)
❖由B.H.Sollers和J.M.Edwards于1990年 提出。
产品,减少一个全新的软件给用户带来的冲击。 缺点 (1)由于各个构件是逐渐并入已有的软件体系结构中,所以加入构 件必须不破坏以构造好的系统部分,这需要软件具备开放式的体 系结构; (2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性 可以使其适应这种变化的能力大大优于瀑布模型,但是也很容易 退化为边做边改的方式,从而使软件过程的控制失去整体性。 适应场合
第1章 软件工程学概述
学习目标
掌握软件的概念及特点 掌握软件危机的产生及消除途径 掌握软件工程的概念及其研究内容 掌握软件生存周期的定义及其模型
1
第1章 软件工程学概述
教学内容 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 本章小结
2
第1章 软件工程学概述
1.1软件危机
软件工程是指导计算机软件开发和维护的工程学科。
9
第1章 软件工程学概述
本质特性:
1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文
解决供求矛盾将是一个永恒的主题。
8
第1章 软件工程学概述
1.2软件工程
1.2.1软件工程的介绍 “
软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件 而建立和使用的一系列完善的工程化原则。 “软件工程是(1)把系统的、规范的、可度量的途径应用于软件开 发 、运行和维护过程,也就是把工程应用于软件;(2)研究(1) 中提到的途径。 中华人民共和国国家标准GB/T11457—1995《软件工程术语》的 定义是:“软件工程是软件开发、运行、维护和引退的系统方法”。
11
第1章 软件工程学概述
4)可理解性(understandability),指系统具有清晰的
结构,能直接反映问题的需求。可理解性有助于控制 软件系统的复杂性,并支持软件的维护、移植和重用。
5)可维护性(maintainability),是指软件产品交付使
用后,在实现改正潜伏的错误、改进性能等属性、适 应环境变化等方面工作的难易程度。由于软件的维护 费用在整个软件生存周期中占主要的比重,因此,可 维护性是软件工程中的一个十分重要的目标。软件的 可理解性和可修改性支持软件的可维护性。
1. 传统方法学
(1)采用结构化技术完成软件开发的各项任务;(2)把软件生命周期划分成若干阶段, 然后顺序完成各阶段的任务;(3)每个阶段的开始和结束都有严格标准;相邻两 阶段中前一个阶段的结束标准就是后一阶段的开始标准;(4)每一阶段结束之前 必须正式进行严格的技术审查和管理复审。
2. 面向对象方法学
化背景的人创造产品
10
第1章 软件工程学概述
软件工程目标
1)可修改性(modifiability),允许对软件系统进行 修改而不增加其复杂性。它支持软件调试与维护。
2)有效性(efficiency),指软件系统的时间和空间 效率。这是一个应当努力追求的重要目标。
3)可靠性(reliability),是指在给定的时间间隔内, 程序成功运行的概率。可靠性是衡量软件质量的一 个重要目标。
基本等同于瀑布模型的适应场合。
27
第1章 软件工程学概述
1.4.4螺旋模型
(Spiral Model))
1986年,B.W.Boehm提 出了螺旋模型。螺旋模型将瀑 布模型与演化模型结合起来, 并且加入两种模型均忽略了的 风险分析,弥补了两者的不足 。
图1.7简化的螺旋模型
28
第1章 软件工程学概述
16
第1章 软件工程学概述
1.2.3软件工程方法学
软件工程包括技术和管理两方面的内容。 管理:通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达 到既定目标的过程。 方法学:在软件生命周期全过程中使用的一整套技术方法的集合。 软件工程方法学包含3个要素:方法、工具和过程。
常用的两种软件工程方法学:
缺点 (1)缺乏丰富而强有力的软件工具和开发环境; (2)缺乏有效的管理机制,还未建立起自己的开发标准; (3)对设计人员水平及开发环境要求较高; (4)在多次重复改变原型的过程中,程序员会感到厌倦; (5)系统的易变性对测试有一定影响,难于做到彻底测
试,更新文档较困难。
23
第1章 软件工程学概述
4
软件的特点
软件是逻辑产品,硬件是物理产品。
特点:
(1)软件开发更依赖于开发人员的业务素质、智力、
人员的组织、合作和管理。软件开发、设计几
乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:
5
软件的发展
产生软件危机的原因
1)用户对软件需求的描述不精确。 2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户
的需求不一致。 3)缺乏处理大型软件项目的经验。 4)开发大型软件易产生疏漏和错误。 5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多
地依靠程序员的 “技巧”,从而加剧了软件产品的个性化。 6)wk.baidu.com对日益增长的软件需求,人们显得力不从心。从某种意义上说,
而且在开发过程中,用户很难参与进去,只有到开发结束才能看 到整个软件系统。这种理想的、线性的开发过程,缺乏灵活性, 不适应实际开发过程; (3)软件产品不能真正满足用户的需求。 适应场合 需求基本清晰且不变或很少变化的软件项目的开发。
10)可互操作性(interoperability),是指多个软件元
素相互通信并协同完成任务的能力。
15
第1章 软件工程学概述
1.2.2软件工程的基本原理
1. 用分阶段的生命周期计划严格管理 2. 坚持进行阶段评审 3. 实行严格的产品控制 4. 采用现代程序设计技术 5. 结果应能清楚地审查 6. 开发小组的人员应该少而精 7. 承认不断改进软件工程实践的必要性
❖螺旋模型沿着螺线旋转, 在笛卡尔坐标的四个象
限上分别表达了四个方 面的活动:
▪制定计划。确定软件目 标,选定实施方案,弄
清项目开发的限制条件。
▪风险分析。分析所选方 案,考虑如何识别和消
除风险。
▪实施工程。实施软件开 发。
▪客户评估。评价开发工 作,提出修正建议。
图1.8完整的螺旋模型
29
第1章 软件工程学概述
21
第1章 软件工程学概述
1.4.2快速原型模型
(Rapid Prototype Model)
开始
结束
初步需求
分析
快速设计
开发产品
建造原型
对原型加工
用户 评估 原 型( 新 需 求)
图1.4快速原型模型
22
第1章 软件工程学概述
优点 (1)通常能满足用户的真正需求; (2)开发过程基本上是线性顺序过程。
(1)把对象作为融合了数据及其在数据上操作的软件构件;(2)对象划分成类;(3) 类之间构建继承关系;(4)消息驱动。
17
第1章 软件工程学概述
1.3软件生命周期
1. 问题定义
软件定义
2. 可行性研究
3. 需求分析 4. 总体设计
软件开发
5. 详细设计
6. 编码
7.单元测试、综合测试
8. 软件维护
12
第1章 软件工程学概述
6)可重用性(reusability),是指软部件可以在多种场 合使用的程度。 概念或功能相对独立的一个或一组相关模块可构成 一个软部件。软部件应具有清晰的结构和注释、正确 的编码和较高的时空效率。可将各种软部件按照某种 规则放在软部件库中供开发人员选用。 广义地讲,可重用性还应包括应用项目、规格说明、 设计、概念和方法等等的重用。一般来说,重用的层 次越高,带来的效益越大。 可重用性有助于提高软件产品的质量和开发效率、 降低软件开发和维护费用。
适应场合 (1)开发周期很长的项目,通过原型开发来缩短开发周
期; (2)系统的使用可能变化很大,不能相对稳定,而原型
模型具有适应变化的机制; (3)用户对系统的需求较为模糊,对某种要求缺乏信心; (4)开发者对系统的某种设计方案的实现无信心或无十
分把握。
24
第1章 软件工程学概述
1.4.3增量模型 (Incremental Model)
13
第1章 软件工程学概述
7)可适应性(adaptability),是指软件在不同的系统约 束条件下,使用户需求得到满足的难易程度。
选择广为流行的软硬件支持环境、采用广为流行 的程序设计语言编码、采用标准的术语和格式书写文 档可增强软件产品的可适应性。
8)可移植性(portability),是指软件从一个计算机系 统或环境移植到另一个上去的难易程度。
19
第1章 软件工程学概述
1.4.1瀑布模型 (Waterfall Model)
1. 阶段间具有顺序性和依赖性 2. 推迟实现的观点 3. 质量保证的观点
图1.2传统的瀑布模型
图1.3实际的瀑布模型 20
第1章 软件工程学概述
优点 (1)强迫开发人员采用规范的技术方法; (2)严格地规定了每个阶段必须提交的文档; (3)每个阶段结束前必须正式进行严格的技术审查和管理复审。
个体化 50’中期~60’中期 作坊 60’中期~70’中期
70’中期~80’中期
工程
产业化 80’中期~现在
6
软件危机
效率和质量
定义
在计算机软件的开发和维护过程中所遇 到的一系列严重问题。
软件危机的具体表现: ·开发成本和进度估计不准
·用户对“已完成的”软件系统不满意 ·软件质量往往靠不住 ·软件常常是不可维护的 ·软件通常没有适当的文档资料 ·软件成本逐年上升 ·软件开发生产率滞后于硬件和计算机应用普及 7
增量模型将整个产 品分解成若干个构件进 行逐步交付,因此软件 开发可以较好地适应需 求的变化,用户可以不 断地看到所开发软件的 可运行中间版本,从而 降低了开发风险。
图1.5增量模型
25
第1章 软件工程学概述
1.4.3增量模型
图1.6风险更大的增量模型
26
第1章 软件工程学概述
优点 (1)能在较短时间内向用户提交渴望完成部分工作的产品; (2)逐步增加产品功能,从而使用户有较充裕的时间学习和适应新
1.1.1软件危机的介绍 1.1.2产生软件危机的原因 1.1.3消除软件危机的途径
图1.1引入同一变动付出的代价随时间变化的趋势
3
什么是软件
在运行中能提供所希望的功能和性能的指令集(即程序) 使程序能够正确运行的数据 描述程序研制过程和方法使用的文档
可执行部分
程序
软件
文档1
不可执行部分
文档3 文档2
优点 (1)有利于已有软件的重用; (2)有助于把软件质量作为软件开发的一个重要目标; (3)减少了过多测试或测试不足所带来的风险; (4)软件维护与软件开发没有本质区别。
缺点 (1)如果每次迭代的效率不高,致使迭代次数过多,将会增加成本
并推迟提交时间; (2)使用该模型需要有相当丰富的风险评估经验和专门知识,要求
18
第1章 软件工程学概述
1.4软件过程
软件过程是为了获得高质量软件所需要完成的一系 列任务的框架,它规定了完成各项任务的工作步骤。
在完成开发任务时必须进行一些开发活动,并且使用 适当的资源,在过程结束时将把输入转化为输出。因此, ISO 9000把过程定义为“使用资源将输入转化为输出的 活动所构成的系统。”此处,“系统”的含义是广义的: “系统是相互关联或相互作用的一组要素。”
采用通用的运行支持环境和尽量通用的程序设计 语言的标准部分可提高可移植性。而应将依赖于计算 机系统的低级(物理)特征部分相对独立、集中起来。 可移植性支持软件的可重用性和可适应性。
14
第1章 软件工程学概述
9)可追踪性(traceability),是指根据软件需求对
软件设计、程序进行正向追踪,或根据程序、软件设 计对软件需求进行逆向追踪的能力。软件开发各阶段 的文档和程序的完整性、一致性、可理解性支持软件 的可追踪性。
开发队伍水平较高。 适应场合
在具有风险评估经验和知识的基础上,支持需求不明确、特 别是大型软件系统的开发,并支持面向规格说明、面向过程、面 向对象等多种软件开发方法,是一种具有广阔前景的模型。
30
第1章 软件工程学概述
1.4.5喷泉模型 (Fountain Model)
❖由B.H.Sollers和J.M.Edwards于1990年 提出。
产品,减少一个全新的软件给用户带来的冲击。 缺点 (1)由于各个构件是逐渐并入已有的软件体系结构中,所以加入构 件必须不破坏以构造好的系统部分,这需要软件具备开放式的体 系结构; (2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性 可以使其适应这种变化的能力大大优于瀑布模型,但是也很容易 退化为边做边改的方式,从而使软件过程的控制失去整体性。 适应场合
第1章 软件工程学概述
学习目标
掌握软件的概念及特点 掌握软件危机的产生及消除途径 掌握软件工程的概念及其研究内容 掌握软件生存周期的定义及其模型
1
第1章 软件工程学概述
教学内容 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 本章小结
2
第1章 软件工程学概述
1.1软件危机
软件工程是指导计算机软件开发和维护的工程学科。
9
第1章 软件工程学概述
本质特性:
1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文
解决供求矛盾将是一个永恒的主题。
8
第1章 软件工程学概述
1.2软件工程
1.2.1软件工程的介绍 “
软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件 而建立和使用的一系列完善的工程化原则。 “软件工程是(1)把系统的、规范的、可度量的途径应用于软件开 发 、运行和维护过程,也就是把工程应用于软件;(2)研究(1) 中提到的途径。 中华人民共和国国家标准GB/T11457—1995《软件工程术语》的 定义是:“软件工程是软件开发、运行、维护和引退的系统方法”。
11
第1章 软件工程学概述
4)可理解性(understandability),指系统具有清晰的
结构,能直接反映问题的需求。可理解性有助于控制 软件系统的复杂性,并支持软件的维护、移植和重用。
5)可维护性(maintainability),是指软件产品交付使
用后,在实现改正潜伏的错误、改进性能等属性、适 应环境变化等方面工作的难易程度。由于软件的维护 费用在整个软件生存周期中占主要的比重,因此,可 维护性是软件工程中的一个十分重要的目标。软件的 可理解性和可修改性支持软件的可维护性。
1. 传统方法学
(1)采用结构化技术完成软件开发的各项任务;(2)把软件生命周期划分成若干阶段, 然后顺序完成各阶段的任务;(3)每个阶段的开始和结束都有严格标准;相邻两 阶段中前一个阶段的结束标准就是后一阶段的开始标准;(4)每一阶段结束之前 必须正式进行严格的技术审查和管理复审。
2. 面向对象方法学
化背景的人创造产品
10
第1章 软件工程学概述
软件工程目标
1)可修改性(modifiability),允许对软件系统进行 修改而不增加其复杂性。它支持软件调试与维护。
2)有效性(efficiency),指软件系统的时间和空间 效率。这是一个应当努力追求的重要目标。
3)可靠性(reliability),是指在给定的时间间隔内, 程序成功运行的概率。可靠性是衡量软件质量的一 个重要目标。
基本等同于瀑布模型的适应场合。
27
第1章 软件工程学概述
1.4.4螺旋模型
(Spiral Model))
1986年,B.W.Boehm提 出了螺旋模型。螺旋模型将瀑 布模型与演化模型结合起来, 并且加入两种模型均忽略了的 风险分析,弥补了两者的不足 。
图1.7简化的螺旋模型
28
第1章 软件工程学概述
16
第1章 软件工程学概述
1.2.3软件工程方法学
软件工程包括技术和管理两方面的内容。 管理:通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达 到既定目标的过程。 方法学:在软件生命周期全过程中使用的一整套技术方法的集合。 软件工程方法学包含3个要素:方法、工具和过程。
常用的两种软件工程方法学:
缺点 (1)缺乏丰富而强有力的软件工具和开发环境; (2)缺乏有效的管理机制,还未建立起自己的开发标准; (3)对设计人员水平及开发环境要求较高; (4)在多次重复改变原型的过程中,程序员会感到厌倦; (5)系统的易变性对测试有一定影响,难于做到彻底测
试,更新文档较困难。
23
第1章 软件工程学概述
4
软件的特点
软件是逻辑产品,硬件是物理产品。
特点:
(1)软件开发更依赖于开发人员的业务素质、智力、
人员的组织、合作和管理。软件开发、设计几
乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:
5
软件的发展
产生软件危机的原因
1)用户对软件需求的描述不精确。 2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户
的需求不一致。 3)缺乏处理大型软件项目的经验。 4)开发大型软件易产生疏漏和错误。 5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多
地依靠程序员的 “技巧”,从而加剧了软件产品的个性化。 6)wk.baidu.com对日益增长的软件需求,人们显得力不从心。从某种意义上说,