开发框架的选择和设计经验谈

软件体系结构——知识点 Textbook 第一章 软件体系结构概论 软件危机 表现 1、软件成本日益增长。 2、开发进度难以控制。 (用户需求变化等意想不到的原因) 3、软件质量差。 (程序员习惯以自己的想法替代用户需求) 4、软件维护困难。 (缺标准,开发人员的流失,软件修改十分“危险”很容易出bug) 原因 1、用户需求不明确。 (用户不清楚具体需求,用户需求有遗漏、二义甚至错误,用户需... 阅读详情

 理解什么是框架

框架,即Framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。

框架的概念最早起源于Smalltalk环境,其中最著名的框架是Smalltalk 80的用户界面框架MVC(Model-View-Controller)。

框架目前还没有统一的定义,其中Ralph Johnson所给出的定义基本上为大多数研究人员所接受:

一个框架是一个可复用设计,它是由一组抽象类及其实例间协作关系来表达的 【Johnson 98】。

这个定义是从框架内涵的角度来定义框架的,当然也可以从框架用途的角度来给出框架的定义:

一个框架是在一个给定的问题领域内,一个应用程序的一部分设计与实现【Bosch 97】。

框架要解决的问题

框架要解决的最重要的一个问题是技术整合的问题,在J2EE的框架中,有着各种各样的技术,不同的软件企业需要从J2EE中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦。这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响。

为什么要进行框架开发

框架的最大好处就是重用。框架之所以称为框架,是因为它可以重用。在软件组织中形成以框架为核心的开发方式,在开发中使用框架,并在开发完成后改进框架。在这个反覆的过程中,重用的工作就已经开展起来了。面向对象系统获得的最大的复用方式就是框架,一个大的应用系统往往可能由多层互相协作的框架组成。框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架; 框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。

框架的再一个好处就是可以优化架构。软件架构,亦即体系结构,包括组件元素、元素互助合作模式、基础要求与限制。这说明架构的设计就是将各组件元素以某些理想的合作模式组织起来,以达成系统的基本功能和限制。框架其实就是在特定领域基于体系结构的可重用的设计,即框架是体系结构在特定领域下的应用。框架代表了一种优秀的软件架构。框架定义了扩展方式,从而规范了框架的使用行为。这使得软件能够保持整体架构的稳定性和一致性。

采用框架技术进行软件开发的主要特点包括:领域内的软件结构一致性好;建立更加开放的系统;重用代码大大增加,软件生产效率和质量也得到了提高;软件设计人员要专注于对领域的了解,使需求分析更充分;存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;允许采用快速原型技术;有利于在一个项目内多人协同工作;大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。

框架对组织的作用

知识积累。框架的核心价值是对知识的积累。软件开发是一项知识性的活动。但是知识存在于人的大脑中,是最难进行积累的。而在软件开发中,代码是最确定的知识,人和机器通过浏览代码都能够了解代码所表达的意思,而且不会出现不同的理解。所以,从代码出发进行知识的积累是最佳的办法。框架就是这种思路的产出物。框架包含了大量的代码,这些代码是对某个特定问题领域中抽象概念及这些抽象概念之间关系的描述。所以,框架能够胜任知识积累的工作。

保护资产。知识积累本身就是一项对资产的保护工作。而另一项很重要的保护工作就是软件组织(尤其是企业)需要保证对知识的学习和改进是经过合法授权的。例如,知识的非法外流是任何组织都不希望看到的。将知识积累为框架的形式有助于缓解这种情况。

框架好坏关系J2EE项目成败

框架技术通过重用提高了软件的生产效率,一个软件系统由两大部分组成: 针对本应用的新设计和可重用的软件组件或框架。后者所占比例越大,那需要实现的新设计或实现工作量就会越小,生产效率越高、成本越低。J2EE项目成败主要取决于架构设计好坏以及合适框架的选择,而不是体现在对技术的具体应用上(绝不能盲目的最求新技术,要记住:技术是为了应用),常常有人将一个J2EE项目的失败归咎于后者,这可能是最大的误导。

J2EE项目是通过框架、模式的设计运用达到控制软件质量的目的的。虽然这是很多喜欢自由编程的程序员所不喜欢的,但是它带来了稳定的软件质量和可重用的组件,为规模生产创造了条件。不仅如此,它还降低了对开发框架以外其他开发人员的技术要求,使大多数开发人员无需很高的技术,就能在已有的框架下进行开发,而且能大大缩短开发周期。根据自己项目领域特点,在J2EE框架下设计自己领域的应用框架,不仅可以提高在该领域软件开发的效率,而且可以节约开发成本和维护成本。

开发框架的选择和设计

理解了上述开发框架的作用和需要解决的问题后,设计和选择框架的准则就很显而易见了,关于技术上应该考虑的准则我这里就不再赘述,只提出一下个人感觉应该考虑的几个问题:

1:框架应该能够对我们的开发过程提供更多、更好帮助。因为使用框架的原始出发点就是为了通过知识的重用提高开发效率。我们应该知道任何开发框架都不可能是十全十美的,也不可能是适应所有的应用场景的,也就是说任何开发框架都有它适用的范围。因此我们绝不能为了技术而技术,适用就好了,很难简单的说那种技术或框架更好,没有必要陷入技术的反复比较和反复选择的深渊中。

2:学习曲线要平滑,技术是为应用服务的,开发框架的学习一定要简单,上手一定要快,对开发人员的要求不能太高。没有什么比使用能得到更深的体会。需要半个月或者一个月学习周期的框架,可能在还没学会时项目就该结束了。

3: 一定要能得到很好的技术支持。在应用的过程中,或多或少都会出现这样或者那样的问题,如果不能很快很好的解决,会对整个项目开发带来影响。一定要考虑综合成本,其实这是目前应用开源软件最大的问题,碰到问题除了死肯文档就是查阅源代码,或者是网上搜寻解决的办法,通常一个问题就会导致一两天的开发停顿,严重的甚至需要一个星期或者更长,项目的进度就很难控制了。

4:考虑对团队要求的影响,使得组织的开发团队易于组建和在不同开发组之间流动,以使那些优先需要解决的任务能够解决。

5:绝对不能因为个人对技术的好恶和对新技术的追求,而随意使用到框架的设计和开发中。开发框架绝不是简单的技术堆叠和拼奏,应该在团队的共同选择的基础之上建立。

ONFI5.0命令字实战指南:从基础操作到高级应用 本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。 阅读详情

相关推荐

LRTimelapse Pro v7.0.0 激活版下载安装教程 (延迟摄影后期渲染)

LRTimelapse Pro 是一款优秀的高级延时摄影解决方案,使用将为用户提供最全面的工具和功能,从导入和组织您的延时摄影序列、视觉工作流程、在 LRTimelapse 中直接编辑和渲染、视觉去闪烁等等,功能齐全,可以使用 LRTimelapse Pro 编辑多个序列时显著提高您的效率,轻松在 LRTimelapse 中配置和使用色彩管理,进行长期延时编辑,在 LRTimelapse Pro 中使用长期工作流程。为延时编辑、关键帧、分级和渲染提供最全面的解决方案。

wyqshusan的博客 3464

2025年Java主流开发框架及项目选型指南

Java项目的技术框架选型需综合考虑性能、开发效率、云原生适配性、生态成熟度及团队技术栈匹配度。从前端、后端、数据库、持久层四大维度,详细对比Java主流框架的核心特性、优缺点及适用场景,帮助开发者根据具体需求做出最优决策。

yinzheshijie的专栏 9503

STC32-USB-CAN:基于STC32G的国产双通道隔离CAN分析调试设备设计与实战

本文详细介绍了基于国产STC32G单片机设计双通道隔离CAN分析调试设备的全过程。该设备实现了双通道隔离CAN数据监控、中继转发及USB高速通信,并支持故障注入测试。核心采用全国产器件,通过实战测试验证了其在1Mbps波特率下长时间稳定工作的可靠性,为工程师提供了高性价比的CAN总线调试解决方案。

weixin_42465140的博客 97

开发框架的的选择和设计

理解什么是框架 框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提...

weixin_34220834的博客 202

[Python]:热血传奇-Wzl,Wzx的解析

首先我们要了解,wzl与wzx的对应关系,wzx里面存的是每张二进制图片数据在wzl中的偏移量,所以取到wzx中的偏移数据就可以取到wzl每张图片数据,其实就这么简单。结构体为 [Byte][Byte][Byte][Byte][short][short][short][short][int]-读取44至48字节代表为,[wzx中偏移值总数量] [int类型] [4字节]-根据在wzx中取得的偏移值总数量,每张图片偏移值在wzl中取图片数据。2.[取wzl中图片偏据]:根据wzx中取得数据对[

qq_36138506的博客 3446

从零实现机械臂抓取仿真:用MoveIt+Gazebo完成物体pick&place全流程

本文详细介绍了如何使用ROS的MoveIt框架与Gazebo仿真环境,从零构建机械臂抓取仿真系统。涵盖环境搭建、MoveIt配置、Gazebo集成、抓取动作实现等全流程,帮助开发者掌握机械臂控制的核心技术,实现高效的pick&place任务。

weixin_29250403的博客 476

软件开发中的框架概念和技术路线概念

框架是为某个功能实现的框架:能称得上是框架的,是那种把所有功能都开发了一遍的软件。比如visual studio 就是把开发的功能都有支持的一个功能集合,可以在这个集合之上开发新的系统。 python 的开发爬虫的框架 比如:Scrapy爬虫框架 。就是对开发爬虫这种功能的各个方面进行了开发。留给我们的是我们必须要实现的部分。比如提供界面的地址,和如何分析和提取界面内的实际的需要的东...

weixin_30617561的博客 3971

MIC卡的OFED驱动安装

 IB网络和OFED驱动安装 IB InfiniBand是一个统一的互联结构,可以处理存储I/O、网络I/O和进程间通信(IPC)。它可以将磁盘阵列、SANs、LANs、服务器和集群服务器进行互联,也可以连接外部网络(比如WAN、VPN、互联网)。设计InfiniBand的目的主要是用于企业数据中心,大型的或小型的。目标主要是实现高的可靠性、可用性、可扩展性和高的性能。Inf

beglorious的专栏 5105

开发框架设计与研发

功能是否强大 持久化 缓存 消息推送 分布式 安全性 执行速度如何 是否简单易用 工具是否完备 可扩展性如何 高可用性如何          

weixin_40213018的博客 405

Eclipse 数据空间组件(EDC)项目介绍

在当今数字经济的背景下,数据成为了新的“石油”。但与石油不同的是,数据可以无限共享且再生。然而,如何在保持数据主权的前提下实现高效、安全的数据共享,成为了企业和组织面临的主要挑战。这时,**Eclipse 数据空间组件(Eclipse Dataspace Components, EDC)**应运而生,它为企业在多方参与的数据交换中提供了一个标准化、可扩展的解决方案。数据空间不仅是一个多组织间的数据共享协议,还是一套支撑这些协议运行的技术基础设施。

m0_74331272的博客 4597

超导电动悬浮系统一体化地面线圈电-热-力特性研究——基于ANSYS Maxwell与Workbench的多物理场联合仿真

摘要:超导电动悬浮(EDS)系统的地面线圈在运行中面临电-热-力多物理场强耦合挑战。本文基于ANSYS Maxwell和Workbench平台,提出一套联合仿真方法,对地面线圈进行高保真多物理场耦合分析。研究通过建立参数化三维电磁模型,计算瞬态涡流损耗和电磁力分布,并顺序耦合至热分析和结构分析,揭示电-热-力特性的相互影响机制。该方法为地面线圈的优化设计、材料选型和可靠性评估提供了理论依据和仿真工具支撑。 关键词:超导电动悬浮;地面线圈;多物理场耦合;联合仿真;ANSYS

huanghm88的专栏 374

开发框架的选择和设计经验谈[转摘]

最近看到了这篇要怎么去理解和选择框架的文章,深有感受!与大家分享。 理解什么是框架 框架,即Framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程...

weixin_30256505的博客 141

LeetCode 热题 100 回顾

力扣最受刷题发烧友欢迎的 100 道题 LeetCode 热题 100 : 题目回顾、解题思路、复杂度分析、代码实现、验证算法

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 9万+

我的Delphi开发经验谈

我的Delphi开发经验谈 作者:Icebird--------开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装...

axit27651846的博客 465

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Delphi开发经验谈

我的Delphi开发经验谈   -------- 开发环境 --------     Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其

714

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android开发知识点,Android开发经验谈

自我介绍一下,小编13年北京科技大学毕业,曾经在字节跳动待过,也去过vivo、小米等大厂,18年进入华为一直到现在。小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担,能在岗位上再创辉煌,步步高升!!。

2401_84887729的博客 1060

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android 开发前的设计,Android开发经验谈

前言 Hi~,我是 2020 届物联网专业毕业生,现就读于杭州。谨以此文来记录我的秋招以及入门前端以来的学习历程,如有错误,希望大家能及时提出! 面试情况 前前后后一共面试了 14 家公司的前端岗,按城市划分为: 北京:小米,京东,美团,百度,去哪儿 杭州:阿里,网易,微店,字节跳动 上海:七牛云,哈啰出行 深圳:腾讯,富途,乐信 历时4个月,最终收获了 小米、京东、微店、字节跳动 的offer [](()图片加载 网络图片加载比较多可能选择一下Glide、Picasso、Fresco等图片加载框架

m0_69439278的博客 180

产品设计经验谈

我写这篇文章的目的,是用本人20年的嵌入式经验呈现给大家一副完整的产品,项目开发蓝图,用本人多年的经历总结了一些教训无私的分享给各位,希望各位今后能站在本人的肩膀之上,少走弯路,多为公司,为个人多做贡献,那我的愿望就达到了,也同时希望能看到大家反馈和回复,留个脚印,留下你的见解和智慧,为后人乘凉打点基础,先在这谢谢各位了。 那么由此开始我们充满知识的旅程吧,最重要的一点,就是在一个产品或项目的开发过程中,如果没有明确的目标,那么成功将无从谈起,做任何事的第一步必须明确目标。 与日常生活中的大...

volval的专栏 551

(转载)Delphi开发经验谈

Delphi开发经验谈 开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其事,必先利其...

diaoshancang1942的博客 349

我的Delphi开发经验谈(本人修改版) 收藏

我的Delphi开发经验谈(本人修改版) 收藏 开发环境--------    Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 Update Pack 1,Delphi 2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为了提升开发效率,为了能更加得心应手的处理接下来的开发工作,我们有必要安装一些有用的开发辅助工具(Delphi将此类插件以Exp

henreash的专栏 7874

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

原文地址:https://www.tianmaying.com/tutorial/AndroidMVC   摘要:和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计:   我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以...

dodod2012的专栏 280

Android开发经验谈,安卓开发快速上手

更多学习和讨论,欢迎加入我们!有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。这里有2000+小伙伴,让你的学习不寂寞~·

2301_82242130的博客 1416
上一篇: Java软件架构设计简介
下一篇: 软件体系架构模式
linjinxing
博客等级 码龄18年 17粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值