软件工程作业(答案参考)
国开电大软件工程形考作业1参考答案

题目1.()是职业软件工程师的必要条件。
A. 编程速度快
B. 语言天赋
C. 熟悉众多的软件环境
D. 自律、善于沟通、具有一定的软件技能
【答案】:自律、善于沟通、具有一定的软件技能
题目2.根据软件工程的7条基本原理判断下面正确的选项是()。
A. 需求阶段一般不会引入错误
B. 软件错误发现的时机不重要,重要的是错误的严重程度
C. 软件错误只能通过运行代码才能发现
D. 软件错误发现的越早改正的成本越低
【答案】:软件错误发现的越早改正的成本越低
题目3.美国著名软件工程专家B.W.Boehm于1983年提出了软件工程的()条基本原理。
A. 5
B. 3
C. 7
D. 12
【答案】:7
题目4.软件、程序和代码是()。
A. 计算机代码和数据
B. 相同的软件概念
C. 三个不同的概念
D. 程序语言写的代码
【答案】:三个不同的概念。
《软件工程》作业及参考答案3

软件工程作业及参考答案第五、六章一、填空题1.详细设计的工具有(图形工具)、表格工具和语言工具。
2.为使用流程图描述结构华程序,限制流程图有五种基本的控制结构(顺序型)、(选择型)、(while型循环)、until循环、多情况型选择。
3.HIPO图是由一组(IPO)图和一张(HC)图组成。
4.IPO图由(输入)、处理和(输出)三个框组成。
这个图的特点是能够直观的显示三者之间的关系。
5.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。
面向对象方法是一种运用(对象)、(类)、(封装)、(聚合)、消息传送、多态性等概念来构造系统的软件开发方法。
6.面向对象的软件工程方法是面向对象方法在(软件工程)领域的全面应用。
7.UML的定义包括(UML语义)和(UML表示法)两个部分。
二、判断题1.详细设计是在概要设计之后进行的。
它利用概要设计的结果,对系统中的每个模块给出足够的过程性描述。
(√)2.程序设计语言中应绝对禁止使用GOTO语句。
(╳)3.PAD图在设置了五种基本的控制结构后,还允许递归调用。
(√)4.UML设定的目标之一是运用面向对象概念来构造系统模型。
(√)5.类是关于对象性质的描述,由方法和数据集成。
(√)三、简答题1.详细设计的任务是什么?参考答案:1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;2.确定每一模块使用的数据结构;3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
2.根据伪码画出N-S图。
STARTIF A THENBLOCKBCEND BLOCKEND IFSTOP3.根据伪码画出N-S图。
《软件工程》作业及答案.doc

《软件工程》作业第一章1.什么是软件危机,它有哪些典型表现?答: 软件危机是指在计算机软件的开发和保护过程中所碰到的一系列严重问题。
归纳地说,软件危机包含下述双方面的问题:如何开发软件,以知足对软件日趋增添的需求;如何保护数目不停膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的预计常常很不正确。
用户对“已达成的” 软件系统不满意的现象常常发生。
软件产品的质量常常靠不住。
软件常常是不行保护的。
软件往常没有合适的文档资料。
软件成本在计算机系统总成本中所占的比率逐年上涨。
软件开发生产率提升的速度,远远跟不上计算机应用快速普及深入的趋向。
产生软件危机的原由:一方面与软件自己的特色有关,另一方面也和软件开发与保护的方法不正确有关。
软件不一样于硬件,它是计算机系统中的逻辑零件而不是物理零件。
管理和控制软件开发过程相当困难。
软件是规模宏大,并且程序复杂性将跟着程序规模的增添而呈指数上涨。
目前相当多的软件专业人员对软件开发和保护还有不省糊涂看法,在实践过程中或多或少地采纳了错误的方法和技术,这是使软件问题发展成软件危机的主要原由。
2.简述产生软件危机的原由和解决的思路。
答:软件危机产生的原由一方面与软件自己的特色有关,另一方面,是与已有软件开发、保护的方法不正确有亲密关系。
解决软件危机,既要有技术举措 (方法和工具 ),又要有必需的组织管理举措。
即采纳工程化的原则和方法组织软件开发是挣脱软件危机的一个主要出路。
3.什么是软件工程?它有哪些本质特征?答: 软件工程是指导计算机软件开发和保护的一门工程学科。
采纳工程的看法、原理、技术和方法来开发与保护软件,把经过时间考验而证明正确的管理技术和目前能够获取的最好的技术方法联合起来,以经济地开发出高质量的软件并有效地保护它。
软件工程本质特征: 1、软件工程关注于大型程序的结构; 2、软件工程的中心课题是控制复杂性; 3、软件常常变化; 4、开发软件的效率特别重要; 5、和睦地合作是开发软件的要点; 6、软件一定有效地支持它的用户; 7、在软件工程领域中是由拥有一种文化背景的人替拥有另一种文化背景的人创立产品。
软件工程大作业(2)(答案)

软件工程大作业(2)(答案)软件工程作业第二部分一、填空1.结构化分析方法的分析策略是___自顶向下逐步求精_______。
2.衡量模块独立性的两个定性标准是_耦合性与内聚性________。
3.软件集成测试的方法主要有两种,它们是___渐增式与非渐增式测试_______。
4.继承性是子类自动共享其父类的__数据结构和方法____________机制。
5.在面向对象方法中,人们常用状态图描述类中对象的___动态行为________。
6.规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称该软件为____容错_____软件。
7.可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目_是否值得开发_。
8.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是__功能需求_。
9.软件生存周期中时间最长、花费的精力和费用最多的一个阶段是__维护_____阶段。
10.对象之间进行通信叫做__消息_____。
11.计算机辅助软件工程这一术语的英文缩写为_CASE_______。
12.McCall提出的软件质量模型包括______11________个软件质量特性。
13.为了便于对照检查,测试用例应由输入数据和预期的___输出结果____两部分组成。
14.软件结构是以____模块__________为基础而组成的一种控制层次结构。
15.结构化语言(PDL)是介于自然语言和____形式语言____之间的一种半形式语言。
16.软件概要设计的主要任务就是__软件结构的设计______。
17.结构化程序设计方法是使用___三种基本控制结构____构造程序。
18.软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个__自底向上或相反顺序 _____集成的过程。
19.在建立对象的功能模型时,使用的数据流图中包含有处理、数据流、动作对象和__数据存储对象_____。
二、选择1.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法2.面向对象的开发方法中,(B)将是面向对象技术领域内占主导地位的标准建模语言。
软件工程大作业(答案)

3
A、数据流 B、数据流图 C、数据库 D、数据结构
105.数据流图中,当数据流向或流自文件时(B )。
A、数据流要命名,文件不必命名
B、数据不必命名,有文件名就足够了
C、数据流和文件均要命名,因为流出和流进的数据流是不同的
D、数据流和文件均不要命名,通过加工可自然反映出。
106.结构化程序设计主要强调程序的(C )。
聚称为偶然内聚。 77. 一个模块直接调用的模块数目称为模块的扇出,一个模块被多少上级模块直接调用称为模块的扇
入。 78. 详细设计的工具有图形工具、表格工具和语言工具。 79. 为使用流程图描述结构化程序,限制流程图有五种基本的控制结构顺序型、选择型、while型循
环、until循环、多情况型选择。 80. IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。 81. 面向对象方法是一种运用对象、类、封装、聚合、消息传送、多态性等概念来构造系统的软件开
并估算每个不同之处对成本的影响,得出开发项目的总成本。这种成本估算方法称为差别估算法 ____。 三、 选择题 102.程序设计属于软件开发过程(C )阶段。 A、设计 B、编程 C、实现 D、编码 103.在软件的分析阶段,常用(C )来描述业务处理系统的信息来源、存储、处理和去向。 A、E-R 图 B、框图 C、DFD D、时序网络 104.结构设计是一种应用最广泛的系统设计方法,是以(A )为基础、自顶向下、逐步求精和模块化 的过程。
国开电大软件工程形考作业3参考答案

答案见后几页形考作业3:基于UML的大学图书馆图书信息管理系统设计实验一、实验内容说明对实验2的面向对象分析结果进行系统概要设计和详细设计。
设计系统构架,勾画出整个系统的总体结构,这项工作由全组成员参加,包括主要子系统及其接口,主要的设计类和中间件等系统软件。
设计时要考虑系统的可维护性,以简单为第一原则——简单的类、简单的接口、简单的协议、简单的描述。
使用UML的配置图描述系统的物理拓扑结构以及在此结构上分布的软件元素。
用类图和顺序图对主要用例:借书、还书、处罚进行设计,并对其中的类进行详细说明,包括属性设计和方法设计。
二、实验目的(1)通过本实验使学生掌握UML建模语言的常用图形,面向对象的设计方法和过程。
特别是熟悉包图、顺序图、配置图和类图的应用。
(2)以小组形式完成本实验,锻炼同学之间的协作和沟通能力、自我学习和管理能力。
(3)学生在实验过程中熟练掌握常用的CASE工具。
三、实验学时8学时四、实验步骤(1)根据实验2画出的系统用例图和需求规格说明书规划系统的物理结构。
(2)组长和小组成员共同协商一份设计规范:设计用的图形符号、字体、大小规范,界面设计规范,用语规范等。
(3)对借书用例、还书用例、处罚用例进行用例设计和类设计。
(4)对借书用例、还书用例、处罚用例使用顺序图设计类之间的消息通信。
(5)编写系统设计规格说明书。
五、实验要求4人一组,分工如下:1名组长,负责整个小组的人员安排,工作计划,文档质量,整体项目的协调等工作;2名系统分析员,专门负责需求分析,1名分析员,专门负责系统的验收测试用例。
虽然各有分工,但大家必须协同工作。
使用VISO或IBM Rational ROSE工具软件。
各种说明书使用WORD软件。
六、结果实验结果包括:(1)系统配置图及其说明。
(2)系统体系结构划分及其说明。
(3)借书用例、还书用例、处罚用例的详细设计类图及其属性、方法说明。
(4)用顺序图分别对借书用例、还书用例、处罚用例设计类之间的消息通信说明。
软件工程课后参考答案完整版

软件工程课后参考答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】第一章课后参考答案1.什么是软件危机它们有哪些典型表现为什么会出现软件危机“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程它有哪些本质特征怎么用软件工程消除软件危机软件工程是指导知道计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程作业含答案

软件⼯程作业含答案软件⼯程第⼀章作业 (1)1.1什么是计算机软件?软件的特点是什么? (1)1.2 简述软件的分类,并举例说明。
(1)1.4 什么是软件⼯程? (1)1.5 简述软件⼯程的基本原则。
(1)1.6 软件⽣存周期分哪⼏个阶段?分别简述各个阶段的任务。
(1)1.9 简述各类软件过程模型的特点。
(2)1.10 敏捷软件开发的特点是什么? (2)1.12 简述敏捷软件开发的原则。
(2)第2、3章 (3)2.1简述系统⼯程的任务。
(3)2.2基于计算机的系统由哪些元素组成? (3)2.3简述可⾏性分析的任务。
(3)3.1需求⼯程的重要性是什么?举出⾝边由于需求分析失败⽽造成整个项⽬失败的例⼦。
(3)3.2需求⼯程具体包括哪些步骤?每个步骤的具体任务是什么? (3)3.3⼀个系统分析员应该具备哪些思想素质和基础知识?请说明理由。
(4)3.4列出在制定需求获取策略时的3种主要考虑因素。
(5)3.6举例说明⼀个系统的3个不同类型的⾮功能需求 (5)3.8软件需求分析的操作性原则和需求⼯程的指导性原则是什么? (5)3.9软件需求规约主要包括哪些内容?⾃⼰寻找⼀个实例,亲⾃写⼀个需求规约。
(5)3.10需求验证应该有哪些⼈参加?画出⼀个过程模型,说明需求评审应该如何组织。
5第4章 (5)4.1 简述软件设计阶段的基本任务 (5)4.2 软件设计与质量的关系是怎么样的? (6)4.4 简述模块、模块化及模块化设计的概念。
(6)4.6 耦合和软件可移植性的概念有何关系?举例说明⾃⼰的结论。
(6)4.7⽤⾃⼰的话描述信息隐蔽概念,并讨论信息隐藏与模块独⽴两概念之间的关系。
(6)4.8什么是模块独⽴性?设计中为什么模块要独⽴?如何度量独⽴性?模块功能独⽴有何优点? (6)4.9软件设计规约主要包括哪些内容? (7)第5章结构化分析与设计 (7)5.1 简述数据流图的主要思想,概述使⽤数据流图进⾏需求分析的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程第一次作业
1)软件工程适用范围?
答:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
在现代社会中,软件应用于多个方面。
典型的软件比如有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。
同时,各个行业几乎都有计算机软件的应用,比如工业、农业、银行、航空、政府部门等。
这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
2)软件工程如何控制系统开发的复杂性的?
答:可理解性(understandability)。
系统具有清晰的结构,能直接反映问题的需求。
可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。
3)以你的经验,举例说明一个成熟的软件通常采用什么方法来适应现实世界的变化的?答:以猎豹游览器为例,开始软件投入市场公测,软件自带收集错误报告的程式,当遇到问题软件错误,会将相关信息反馈到接受错误信息的服务器,已方便程序员及时发现问题加以修复,修复完成后提供程序更新,循环此法提供软件运行稳定性,另外还有用户反馈的相关功能,对软件的建议也会收集到服务器,按实用性需求程序员可在原有程序上开发调整更适合用户使用的程序。
4)假设某软件公司,能为同一个用户开发两个不同层次的软件:一个层次的软件功能非常强大,在满足用户所有需求的基础上,还能提供大大超过用户需求的其他更多更强的功能;另一个层次的软件仅仅能满足用户需求,但没有提供其他额外的功能。
请问如果你是项目负责人,你会选择为客户开发那个层次的软件?
答:我会选择仅仅满足用户需求的软件。
因为太多的功能,相对于非专业的人员,在用户体验上可能会造成困扰,太多的功能会导致难以操作。
而且功能强大的软件还会给用户费用上带来不必要的投入,软件是以人为本,方便用户工作,达到提高工作效率的目的。
若然日后此用户需要更多功能的时候,我们还是可以向其软件公司提供升级功能解决用户需求。
5)协同工作有什么重要性?
答:日常工作中,80%的事项,都需要与同事协作完成、与其他部门协调资源、或者向领导进行请示汇报;80%的工作都处于开放的环境,如特殊请求、突发事件、临时汇报、项目协作、活动组织、意见征集、沟通协调等等,因此,通过柔性协作流程的使用,员工可以很便捷的实现与其他同事的头脑风暴、分工协作、资源整合,并且可以通过自建模板和自建流程的使用,使得很多处于随机和发散状态的工作实现有序化、可跟踪化、可追溯化,实现工作的敏捷性与有效性的统一,简单来说,就是实现员工的工作产生1+1>2的效果。
6 )只要是编程高手,即使是不懂软件工程,也能编出很好的软件。
答:不一定。
软件的开发是由需求调研分析、概要设计、详细设计、编码、测试及用户体验反馈等组成的。
所以只是懂得编码编程其中一部分不一定能编出很好的软件。
7 )只要拥有一套讲述如何开发软件的书籍,并了解了书中的标准与示例,就可以解决软件开发中遇到的任何问题。
答:好的参考书无疑能指导我们的工作。
充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。
但实践者并不能因此依赖于书籍,这有如下两个原因。
(1)在现实中,由于工作条件千差万别,即使是相当成熟的软件工程规范,也常常无法套用。
(2)软件技术日新月异,没有哪一种标准能长盛不衰。
祖传秘方在某些领域很吃香,而在软件领域可能意味着落后。
8 )只要拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。
答:不一定。
软件的开发是由需求调研分析、概要设计、详细设计、编码、测试及用户体验反馈等组成的。
所以只是有最好的开发工具、最好的计算机其中一部分不一定能做出优秀的软件。
大公司经常有这样的心态。
良好的开发环境只是产出成果的必要条件,而不是充分条件。
如果拥有好环境的是一群庸人或者是一群勾心斗角的聪明人,难保他们不干出南辕北辙的事情。
9 )软件开发时,如果进度慢,落后于计划,可以增加更多的程序员来解决。
答:软件开发不同于传统的农业生产,人多不见得力量大。
如果给落后于计划的项目增添新手,可能会更加延误项目,原因如下。
(1)新手会产生很多新的错误,给项目添麻烦。
(2)老手向新手解释工作及交流思想都要花费时间,使实际开发时间更少。
所以精确地制定项目计划很重要,不在乎计划中的进度看起来有多么快,计划要恰如其分。
10 )争议:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
软件的性能问题;
答:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。
如果该软件已经用于商业,则需谨慎考虑。
若换一台更快的计算机能解决问题,则是最快的解决方案。
改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误并延误进度。
技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。
类似的争议还有:是买现成的程序,还是彻底由自己开发?技术人员和商业人士常常会有不同的决策。
11)开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?
答:软件开发并没有说一定需要多少资金、时间,主要开软件的大小开发的难度。
软件要获得效益,一般都在软件测试阶段。
相对而言,此阶段也是与用户交流最多的。
12)系统分析员主要工作在哪个时期?程序员主要工作在哪个时期?
答:系统分析员主要工作在详细设计阶段,程序员主要工作在程序编码阶段。
13)软件定义时期的三个阶段,各自回答什么关键问题?
答:三个阶段
1.定义阶段:可行性研究初步项目计划、需求分析
2.开发阶段:概要设计、详细设计、实现、测试
3.运行和维护阶段:运行、维护、废弃
14)软件开发时期有几个阶段?各自回答什么关键问题?
答:软件开发一般分为五个阶段:
1.问题的定义及规划
此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析
在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计
此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4.程序编码
此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统
一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5.软件测试
在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。
15)软件体系结构最早是在哪个阶段决定的?
答:最早在软件设计阶段决定的。
此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
16)详细设计与程序编写阶段有什么样的密切联系?
答:详细设计与程序编写阶段的联系就比如详细设计是楼房住框架,程序编写是室内装修。
先有详细设计再有程序编写。
17)“软件测试是为了验证系统的正确性”这句话对吗?
答:不正确.
18)软件维护有那几种?各有什么功能?
答:软件维护一般分为适应性维护、改正性维护、完美性维护和预防性维护。
适应性维护即修改软件以适应环境的变化;改正性维护也就职诊断和改正在应用过程中发现的软件错误;完善性维护即根据用户的要求改进或扩充软件使它更加完善;预防性维护即修改软件为将来的维护活动预先做准备。
19)你是否开发过大型系统,开发模式是什么?在程序设计中使用过何种语言?
答:未曾开发过系统,具体不清楚。
程序中曾学过C语言与汇编语言,但都不太记得了。
20)如末开发型系统,你认为大型信息管理系统最佳的开发模式是什么?
答:我认为是原型模式,瀑布模式与渐增模式均假设在项目开始时,用户需求能被清楚完整地描述。
但在许多情况下。
这假设是不切实际的,因为用户经常无法把需求清楚完整地表达,有时虽能够清楚表达,但开发人员可能没有足够的经验与知识完全了解用户的需求,也可能一时无法找出问题的解决方法。
原型模式首先针对用户需求比较清楚的部分或开发人员能够掌握的部分,按照分析、设计、实施等步骤速度开发原型。
开发过程中,强调以原型作为用户与开发人员沟通的工具,双方通过原型的操作与反馈,以弄清、修改及扩充需求,并以此来修改与扩充原型。
上述步骤反复进行,直到系统复合双方约定为止。