软件工程(3)--原型模型

简介: 软件工程(3)--原型模型

前言


这是基于我所学习的软件工程课程总结的第三篇文章。


原型模型又称原型化模型、快速原型模型


书上对于(快速)原型模型的描述是:快速原型是快速建立起的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用。一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件便可以满足用户的真实需求。(摘自 《软件工程导论》第六版   张海藩 牟永敏 著,有删改)


正文

1.原型

原型(prototype)

  • 一个部分开发的产品,使得客户和开发人员能够对计划开发的系统的相关方面经行检查。

原型化的目的

  • 明确并完善需求
  • 研究技术选择方案

原型结果

  • 抛弃原型
  • 把原型发展成最终结果


2.原型模型

快速原型模型正是为了克服瀑布模型的缺点而提出来的,它通过快速模型构建起一个可以在计算机上运行的原型系统,让用户试用原型并收集用户意见的办法,获取用户的真实需求。

d91329ddab474599aef3ae3f99146df6.png


软件交给用户后,维护便开始了根据所需完成的维护工作种类不同,可能需要返回到需求分析、规格说明、设计或编码等不同阶段。

3.原型模型的优点

  • 减少需求不明确带来的风险
  • 软件产品的开发基本上是线性进行的


能基本上维持线性顺序开发的原因是:


  • (1)原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。
  • (2)开发人员通过建立原型系统已经学到了许多东西(至少知道了"系统不应该做什么,以及怎样不去做不该做的事情"),因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。


4.原型模型的缺点

  • 构造原型采用的技术和工具不一定主流.
  • 快速建立起来的系统加上连续的修改可能导致原型质量低下
  • 设计者在质量和原型中进行折中
  • 客户意识不到一些质量问题


5.原型模型的使用场合


客户定义一个总体目标集,但是他们并不清楚系统的具体输入输出。

或开发者不确定算法的效率、软件与操作系统是否兼容以及客户与计算机交互的方式。

用户无系统使用经验,需求分析人员技能不足,尽量借助原型模型。

相关文章
|
C++
UE4/5中DataTable数据表的使用
UE4/5中DataTable数据表的使用
2417 1
UE4/5中DataTable数据表的使用
|
6月前
|
存储 人工智能 JavaScript
Tokens消耗直降72%+永不失忆!OpenClaw阿里云/本地零基础部署+记忆外挂Skill+百炼API及避坑指南
OpenClaw(原Clawdbot)作为开源AI智能体框架,核心价值在于“持久化记忆+自动化执行”,截至2026年3月,其GitHub星标已突破26万,社区活跃度极高,凭借插件化扩展与全场景适配能力,成为个人与轻量团队的首选AI助手框架。但原生记忆系统存在两大核心痛点:一是“健忘”,会话窗口满后会截断早期上下文,跨会话无法衔接信息;二是“高耗Token”,无差别存储所有对话内容,导致大模型调用成本飙升。
2292 4
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
957 4
JSON数据解析实战:从嵌套结构到结构化表格
|
机器学习/深度学习 编解码 人工智能
InternVL3.5多模态大模型开源发布,1B-241B九种尺寸,支持跨平台GUI自动化与矢量图生成
近日,上海人工智能实验室(上海AI实验室)重磅开源发布了多模态大模型书生·万象 InternVL3.5,通过创新的级联式强化学习(Cascade RL)、动态视觉分辨率路由与解耦部署架构,实现推理能力、部署效率与通用能力的全面升级。
3062 7
|
人工智能 JSON 自然语言处理
让AI听懂你的建模需求!BlenderMCP:自然语言指令直接操控 Blender,一句话生成复杂3D场景
BlenderMCP通过MCP协议实现Blender与Claude AI的无缝集成,支持通过自然语言指令完成3D建模、材质调整等复杂操作,显著提升创作效率。
2127 1
让AI听懂你的建模需求!BlenderMCP:自然语言指令直接操控 Blender,一句话生成复杂3D场景
|
测试技术 程序员 C语言
『软件测试4』耗子尾汁!2021年了,你还不知道这4种白盒测试方法吗?
该文章深入介绍了四种常用的白盒测试方法,包括语句覆盖、判定覆盖、条件覆盖以及路径覆盖,并探讨了这些方法在软件测试中的应用。
『软件测试4』耗子尾汁!2021年了,你还不知道这4种白盒测试方法吗?
|
设计模式 存储 消息中间件
设计模式之美(二)——设计模式
《设计模式之美》是极客时间上的一个代码学习系列,在学习之后特在此做记录和总结。
设计模式之美(二)——设计模式
|
缓存 自然语言处理 JavaScript
JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
闭包是JavaScript中不可或缺的部分,它不仅可以增强代码的可维护性,还能在模块化、回调处理等场景中发挥巨大作用。然而,闭包的强大也意味着需要谨慎使用,避免潜在的性能问题和内存泄漏。通过对闭包原理的深入理解以及在实际项目中的灵活应用,你将能够更加高效地编写出简洁且功能强大的代码。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 测试技术 程序员
软件生命周期( 包括各开发模型的优缺点)知识点全面
软件生命周期( 包括各开发模型的优缺点)知识点全面
1926 0
|
测试技术
07-白盒测试方法-逻辑覆盖法
07-白盒测试方法-逻辑覆盖法