软件开发分层
『壹』 android中怎么实现分层开发
ndroid开发笔记2----Android定义和分层介绍
(2010-11-25 14:38:45)
转载▼
分类: Android
一. 开放手机联盟
开放手机联盟,Open Handset Alliance:是美国Google公司与2007 年11 月5 日宣布组建的一个全球性的联盟组织。这一联盟将会支持Google发布的Android手机操作系统或者应用软件,共同开发名为Android的开放源代码的移动系统。
二. Android含义
Android是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口。
三. Android系统构架
Android分为4层,从高到底分别是应用层、应用框架层、系统运行库层和Linux内核层:
1.应用层
应用是用Java语言编写的运行在虚拟机上的程序。Google最开始时就在Android系统中捆绑了一些核心应用,比如E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序,等等。
2.应用程序框架层
应用程序框架层是编写常用核心应用所使用的API框架,开发者可以在开发自己特色的应用程序中重复利用这些组件和服务。目前所有的应用程序都是由这些组件和服务构成。
(1) 丰富而又可扩展的视图(View):可以用来构建应用程序,它包括列表(List)、网格(Grid)、文本框(Text Box)、按钮(Button),以及可嵌入的Web浏览器。
(2) 内容提供器(Content Providers):它可以让一个应用访问另一个应用的数据(如联系人数据库), 或共享它们自己的数据。
(3) 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形和布局文件(Layout file)。
(4) 通知管理器(Notification Manager):应用可以在状态栏中显示自定义的提示信息。
(5) 活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航退回功能。
(6) 窗口管理器(Window Manager):管理所有的窗口程序。
(7) 包管理器(Package Manager):Android 系统内的程序管理。
3.系统运行库(C/C++库以及Android 运行库)层
程序库:
Android 包含一些C/C++库,这些库能被Android 系统中不同的组件使用。它们通过Android 应用程序框架为开发者提供服务。以下是一些核心库:
** 系统C库- 一个从BSD 继承来的标准C 系统函数库(libc),它是专门为基于embedded linux的设备定制的。
** 媒体库- 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
** SurfaceManager - 对显示子系统的管理,并且为多个应用程序提供了2D和3D 图层的无缝融合。
** LibWebCore - 一个最新的web 浏览器引擎用,支持Android 浏览器和一个可嵌入的web 视图。
** SGL - 底层的2D图形引擎
** 3D libraries - 基于OpenGL ES 1.0 APIs 实现;该库可以使用硬件3D 加速(如果可用)或者使用高度优化的3D 软加速。
** FreeType -位图(bitmap)和矢量(vector)字体显示。
** SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
运行库:
Android 包括了一个核心库,该核心库提供了JAVA 编程语言核心库的大多数功能。
Dalvik:
每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik 被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik 虚拟机执行(.dex)的Dalvik 可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA 编译器编译,然后通过SDK中的"dx" 工具转化成.dex 格式由虚拟机执行。
4. Linux内核层
Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是作为硬件与软件栈之间的抽象层,用来做相互沟通的工作.
四. 进程间通信
Android 采用OpenBinder
『贰』 单片机程序里面,经常听说底层,中间层,应用层,什么意思 51单片机也需要这么分层吗
一般当程序比较大、功能比较繁多,需要进行结构化程序设计的时候,才会进行分层。分层的好处是可以将应用与硬件剥离,当硬件发生变更(移植,设计更改)时只需改动底层以及少量中间层;当需求发生变更时只需改动上层以及少量中间层。
底层一般是直接访问硬件的接口,以串口而言如寄存器操作函数;中间层一般是在底层与上层之间进行数据及信息的转换,以串口而言如封包/拆包/消息产生/消息响应;上层一般面向应用,在很少考虑硬件实现的前提下以通用的方式实现所需的功能,以串口而言如printf。
分这么多层是为了不同程度的开发人员可以同期工作的原因。比如说,底层就雇佣一个特别熟悉芯片和硬件的人做,中间层大概要找比较熟悉应用的人来把硬件功能来做扩展,应用层就随便抓一把人来开发了。
这样,多个项目可以公用一个硬件层,有两到三组中间层的支持工程师,然后每个项目各有一组应用工程师就好了。51也可以这样做,这和效率无关,层做得好,执行效率不会影响很大,开发效率提高很多。
(2)软件开发分层扩展阅读:
单片机的应用:
1,通用专用:
这是按单片机适用范围来区分的。例如,80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
2,线型应用:
这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积。
3,控制型应用:
这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是唯一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
『叁』 从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类
从底层硬件到上层应用,嵌入式软件的开发可以分为以下三类:
1、嵌入式操作系统开发
嵌入式操作系统EOS(Embedded Operating System)是一种被广泛使用的系统软件。过去,它主要用于工业控制和国防系统领域。 EOS负责分配和调度嵌入式系统的所有软件和硬件资源,控制和协调并发活动。
它必须体现其所在系统的特征,并能够通过加载和卸载某些模块来实现系统所需的功能。嵌入式操作系统通常以商业操作为主。自1980年代以来,商业嵌入式操作系统已开始蓬勃发展。
2、嵌入式支撑软件开发
支撑软件是用于帮助和支撑软件开发的软件,通常包括数据库和开发工具,其中数据库是最重要的。随着移动通信技术的进步,人们对移动数据处理提出了更高的要求。嵌入式数据库技术已受到学术,工业,军事和民用领域的关注。
嵌入式移动数据库或简称为移动数据库(EMDBS)是支持移动计算或特定计算模型的数据库管理系统。数据库系统与操作系统和特定的应用程序集成在一起,并在各种智能嵌入式设备或移动设备上运行。
3、 嵌入式应用软件开发
嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。
嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。
(3)软件开发分层扩展阅读:
嵌入式软件开发的特点:
近年来,随着计算机技术的迅猛发展,基于通信技术的信息技术以及Internet的广泛应用,传统的控制学科正在发生变化,并出现了许多新的增长点。
嵌入式系统涉及系统的最低层,芯片层的信息处理和控制。从某种意义上说,理解和控制这些“微观”世界是控制的真正目的。就设计思想和总体架构而言,通常意义上的嵌入式系统和控制系统之间存在许多差异。
在嵌入式系统和开发环境方面,仍然存在许多仍在研究和开发中的问题,例如嵌入式系统的硬件和软件协同设计方法;多目标、多任务微内核嵌入式操作系统;分布式嵌入式系统实时问题,分布式计算,分布式信息交互和综合处理;嵌入式系统的多目标交叉编译和调试工具的研究等。
『肆』 什么是模式、框架软件为什么要分层
模式:就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,就是模式。
Alexander有一个经典的定义,每个模式都描述了环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,可以无数次地使用那些已有的解决方案,无需在重复相同的工作。模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。
框架:就是某种应用的半成品,是一组组件,供选用完成的系统。
软件分层的原因是为了实现"高内聚、低耦合"。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。
需要注意的是,人虽然在创造性方面有绝对优势,但是在精确性、持久性、效率、质量上是无法比拟机器的。所以我们希望在软件系统构建过程中,人和机器发挥各自的长处,也就是说,让人来扮演架构师的角色,而让机器来扮演程序施工者的角色。
『伍』 软件开发中经常提到一个分布式这个词,请问什么是分布式开发
现在的软件开发都讲究个"层"的意思.
分布式开发将一个系统分为三个层次:客户端应专用程属序,应用程序服务器,后台数据库。客户端提出请求,应用服务器接受请求并处理然后返回数据给客户端,后台数据库当然是提供数据。多半是用于WEB开发.这样的分层开发有很多 好处..我就不多说了...
『陆』 管理软件开发工程师职位分层
公司行业细分职位列表 化工集团公司职位 技术部→技术部部长→研发组组长→技术组组长→测试组组长 物控部→物控部部长→采购组组长→收料组组长→发货组组长→仓储组组长 生产部→生产部部长→计划员→调度组组长→质量管理部→质量管理部部长→质检组组长→认证组组长→环境组组长 设备部→设备部部长→技术组组长 保险公司职位 车险部→车险部经理→车险营销主管→承保主管→理赔主管 业务管理部→业务管理部经理→个人保险营销主管→团体保险营销主管→中介、代理主管 再保险部→再保险部经理→核保主管 客户服务部→客户服务部经理→客户服务主管 贸易公司职位 成套中心→成套中心经理→投标主管→项目实施主管 市场开发中心→市场开发中心经理→品牌运作主管→营销主管→客户关系主管 贸易运作中心→贸易运作中心经理→客户服务主管→配载主管 品质管理中心→品质管理中心经理→质量工程师 物流公司 采购部→采购部经理→采购主管 物流部→物流部经理→物流规划主管→仓储主管→货运主管 物业公司职位 工程部→工程部经理→物料采购员→物料调配主管→设备技术主管 物业服务部→物业服务部经理→计划主管→收款主管→关系协调主管 物业管理处→物业管理处经理→工程组组长→环境组组长→护卫组组长 软件公司职位 客户工程中心→客户工程中心经理→客户服务工程师 项目管理中心→项目管理中心经理→计划主管→调配主管→项目开发工程师 研发中心→研发中心经理→软件工程师→测试工程师→文档工程师 系统方案中心→系统方案中心经理→系统方案工程师 设计公司职位 经营部→部长→经营管理专员 项目管理部→部长→项目管理专员→计划统计专员→信息管理专员 技术质量部→部长→技术管理专员→质量管理专员 项目设计组→组长→首席设计师→设计师
『柒』 一个标准的程序员,它的代码应该是怎样分层次的
每个代码的层次都是不一样的,都是非常缜密的,除此之外,不光是要会写代码,还要成为一个好的程序员才是最重要的。
程序员,随着计算机和软件行业的发展,基数越来越大。如何在茫茫的程序员中脱颖而出呢,来看看作为一个好的程序员的标准你都占了几条?
1.经常和其他的人交流
什么时间做什么事情,做事情按照一定步骤来,好的程序员从来不会在时间紧任务多的时候手忙脚乱。
7. 保持谦虚
技术永无止境,技术范围很广,技术水很深。即使在一个领域是专家,到了其他领域还是需要其他人的指点。好的程序员总是把姿态放低,虚心请教。
『捌』 深入.net平台的软件系统分层开发
一般是三层结构,即实体类层(Model)、逻辑层(BLL)、数据操作层(DAL),(几乎开发中都有表示层,所以表示层不被列在三层之中)还有一些有接口层的开发,层次会相对多些。但现在很少有公司的.NET编码严格按照三层结构来开发了,一般都只用实体层和数据操作层。因三层结构比较麻烦,在页面较多操作较为频繁的开发中,编写逻辑层很麻烦,代码量大,维护和修改起来也会比较繁琐,所以在实际操作中BLL层大多是不用的。
『玖』 什么是典型的软件三层结构软件设计为什么要分层软件分层有什么好处
软件的三层结构一般指的是 MVC
M 是model的简称是指实体层
V是view的简称是指视图层
C是Controller的简称是指控制层
具体可查看网络http://ke..com/link?url=_7Iy6spb037lZr5nJHHv-jGRFhxpmck4PCHz6mrXF_-_6M
MVC的优点
1.低耦合性
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.高重用性和可适用性
随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3.较低的生命周期成本
MVC使开发和维护用户接口的技术含量降低。
4.快速的部署
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利于软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。