《实践者的研究方法》—— 第1.2节 软件的变更本质

简介: 本节书摘来自华章出版社《实践者的研究方法》一书中的第1章,第1.2节,作者[美]  罗杰 S. 普莱斯曼(Roger S. Pressman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.2 软件的变更本质 四大类软件不断演化,在行业中占有主导地位。

本节书摘来自华章出版社《实践者的研究方法》一书中的第1章,第1.2节,作者[美]  罗杰 S. 普莱斯曼(Roger S. Pressman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。


1.2 软件的变更本质

四大类软件不断演化,在行业中占有主导地位。这四类软件在十几年前还处于初级阶段。

1.2.1 WebApp

万维网(WWW)的早期(大约从1990年到1995年),Web站点仅包含链接在一起的一些超文本文件,这些文件使用文本和有限的图形来表示信息。随着时间的推移,一些开发工具(例如XML、Java)扩展了HTML(超级文本标记语言)的能力,使得Web工程师在向客户提供信息的同时也能提供计算能力。基于Web的系统和应用软件(我们将这些总称为WebApp)诞生了。

今天,WebApp已经发展成为成熟的计算工具,这些工具不仅可以为最终用户提供独立的功能,而且已经同公司数据库和业务应用系统集成在一起了。

十年前,WebApp“演化为一种混合体,介于印刷出版和软件开发之间、市场和计算之间内部通信和外部关系之间以及艺术和技术之间。”[Pow98],但是,如1.1.2节所述,当前WebApp在很多应用类型中提供了丰富的计算能力。

在过去的十多年中,语义Web技术(通常指Web 3.0)已经演化为成熟的企业和消费者应用软件,包括“提供新功能的语义数据库,这些新功能需要Web链接、灵活的数据表示以及外部访问API(应用编程接口)。”[Hen10]成熟的关系型数据结构导致了全新的WebApp,允许以多种方式访问不同的信息,这在以前是不可能做到的。

1.2.2 移动App

术语App已经演化为在移动平台(例如iOS、Android或Windows Mobile)上专门设计的软件。在大多数情况下,移动App包括用户接口,用户接口利用移动平台所提供的独特的交互机制,基于Web资源的互操作性提供与App相关的大量信息的访问,并具有本地处理能力,以最适合移动平台的方式收集、分析和格式化信息。此外,移动App提供了在平台中的持久存储能力。

认识到移动WebApp与移动App之间的微妙差异是非常重要的。移动WebApp允许移动设备通过针对移动平台的优点和弱点专门设计的浏览器获取基于Web内容的访问。移动App可以直接访问设备的硬件特性(例如加速器或者GPS定位),然后提供前面所述的本地处理和存储能力。随着时间的推移,移动浏览器会变得更加成熟,并可获取对设备级硬件和信息的访问,这将使得移动WebApp和移动App之间的区别变得模糊。

1.2.3 云计算

云计算包括基础设施或“生态系统”,它能使得任何用户在任何地点都可以使用计算设备来共享广泛的计算资源。云计算的总体逻辑结构如图1-3所示。

 57bc36de9d0eeb8b59af5726448609a978e03528

如图所示,计算设备位于云的外部,可以访问云内的各种资源。这些资源包括应用软件、平台和基础设施。最简单的形式是,外部计算设备通过Web浏览器或类似的软件访问云。云提供对存储在数据库或其他数据结构中的数据的访问。此外,设备可访问可执行的应用软件,可以用这种应用程序代替计算设备上的App。

云计算的实现需要开发包含前端和后端服务的体系结构。前端包括客户(用户)设备和应用软件(如浏览器),用于访问后端。后端包括服务器和相关的计算资源、数据存储系统(如数据库)、服务器驻留应用程序和管理服务器。通过建立对云及其驻留资源的一系列访问协议,管理服务器使用中间件对流量进行协调和监控。[Str08]

可以对云体系结构进行分段,以提供不同级别的访问,从公共访问到只对授权用户提供访问的私有云体系结构。

1.2.4 产品线软件

美国卡内基·梅隆大学软件工程研究所(SEI)将软件产品线定义为“一系列软件密集型系统,可以共享一组公共的可管理的特性,这些特性可以满足特定市场或任务的特定需求,并以预定的方法从一组公共的核心资源开发出来。”[SEI13]以某种方式使软件产品相互关联,可见,软件产品线的概念并不是新概念。但是,软件产品线的思想提供了重要的工程影响力,软件产品线都使用相同的底层应用软件和数据体系结构来开发,并使用可在整个产品线中进行复用的一组软件构件来实现。

软件产品线共享一组资源,包括需求(第8章)、体系结构(第13章)、设计模式(第16章)、可重用构件(第14章)、测试用例(第22、23章)及其他的软件工程工作产品。本质上,软件产品线是对很多产品进行开发的结果,在对这些产品进行工程设计时,利用了产品线中所有产品的公共性。

相关文章
|
9月前
|
存储 机器学习/深度学习 弹性计算
阿里云8核16G云服务器收费标准、可选实例规格、价格、应用场景测评
阿里云8核16G云服务器属于中高端算力配置,仅在ECS云服务器系列推出对应规格,无轻量应用服务器版本,1:2的CPU与内存配比让它能兼顾高算力输出和基础内存需求,是中小企业核心业务和大型企业轻量负载的常用选择。2026年该配置的收费标准随实例类型、计费方式、地域选择有明显差异,优惠活动则围绕长期购买折扣、地域专属福利展开,整体定价和福利均贴合不同业务的实际使用需求,适配企业高并发Web服务、中型数据库部署、视频编码、机器学习推理等多种场景。
697 10
|
6月前
|
人工智能 API 网络安全
神级组合!阿里云部署 OpenClaw X 飞书 CLI,开启 Agent 基建新时代!(附免费使用6个月服务器)
2026年,AI 与自动化基础设施进入全面落地阶段,各类厂商纷纷开放命令行工具(CLI),标志着软件交互从“为人设计”正式转向“为 AI 设计”。本文以阿里云轻量应用服务器(Lighthouse)为载体,完整呈现**一键部署 OpenClaw、对接飞书 CLI、实现 AI 全自动执行任务**的全流程,让 AI 真正拥有“动手能力”,实现消息自动发送、文献自动整理、知识库自动维护等高频办公场景,真正做到一句话下达指令,AI 全程独立完成。
803 26
|
7月前
|
缓存 监控 安全
亚马逊商品详情API接入指南
本文详解亚马逊PA-API 5.0调用全流程:含Access Key认证配置、boto3客户端初始化、商品信息查询示例(ASIN/标题/价格/主图)、响应解析、指数退避错误处理及合规要点(如1小时价格缓存限制、数据来源标注),助开发者安全高效接入。
|
7月前
|
数据采集 网络协议 Java
爬虫踩坑实录:OkHttp 接入爬虫代理报 Too many tunnel connections attempted 深度解析
本文深入解析 OkHttp 使用隧道代理抓取 HTTPS 网站时频发的 `ProtocolException: Too many tunnel connections attempted: 21` 错误,揭示其根源在于风控触发 302 重定向后 OkHttp 盲目重试隧道连接。通过关闭 `followRedirects(false)` 和 `followSslRedirects(false)`,两行配置即可优雅破局,精准捕获拦截响应,提升爬虫稳定性与调试效率。
413 2
|
7月前
|
存储 机器学习/深度学习 缓存
RAG 技术在消费医疗场景落地的实践分享:抗干扰语义近邻过滤机制的设计与实现
本文分享RAG在消费医疗场景落地的关键实践:针对知识库中低质营销内容导致的语义污染问题,提出“抗干扰语义近邻过滤机制”。该机制基于局部近邻密度分析,通过无监督聚类识别营销簇,在检索后纯语义层面动态过滤干扰项,无需人工标注。实测污染率从28.4%降至4.7%,NPS提升至89,延迟仅增8ms。(239字)
352 1
|
8月前
|
机器学习/深度学习 弹性计算 人工智能
透明报价:阿里云服务器多少钱一年?2026年最新购买、续费及升级收费价格表
2026年阿里云服务器价格全解析:轻量应用服务器低至38元/年,ECS普惠款99元/年起,GPU实例支持AI算力需求。涵盖包年包月、按量付费三大计费模式,详解续费同价、多年付3.9折、升级差额补价等核心规则,助您精准控本、避坑省钱。(239字)
|
机器学习/深度学习 人工智能 物联网
玩转AIGC | 5分钟使用PAI一键部署Stable Diffusion AI绘画应用
本文将展示如何通过阿里云机器学习PAI 快速部署SD文生图模型并启动WebUI 进行推理服务。
|
弹性计算 对象存储 CDN
阿里云ECS服务器按固定带宽和按使用流量怎么选?
2023阿里云ECS服务器按固定带宽和按使用流量怎么选?阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些
1604 0
阿里云ECS服务器按固定带宽和按使用流量怎么选?
|
弹性计算 关系型数据库 MySQL
navicat通过ssh连接方式远程mysql(远程mysql3306端口关闭或者只允许localhost链接状态)...
navicat通过ssh连接方式远程mysql(远程mysql3306端口关闭或者只允许localhost链接状态)...
1187 1
navicat通过ssh连接方式远程mysql(远程mysql3306端口关闭或者只允许localhost链接状态)...
|
编解码 开发者 Python
Kivy之Video控件播放远程RTSP流
Kivy之Video控件播放远程RTSP流
1046 0
Kivy之Video控件播放远程RTSP流