|
谈到架构设计,更多技术人员更多想的的是技术本身,什么SSI,SSH,MVC之类的,架构在不同的角度不同;
企业管理者,我们可以成为企业架构师,
产品经理,技术总监可以更多应该做产品架构师或者解决方案架构师;
然而软件技术人员在开发的时候考虑的时技术架构,首先在明白一个原理的时候更多的首先见到的时体系架构图;
我个人认为体系架构图,要说明边界,逻辑原理,或者结构;不同的视图不同;
这个百度的说明:
体系结构风格有9大类:
1. 数据流系统,包括顺序批处理、管道和过滤器;2. 调用-返回系统,包括主程序和子程序、面向对象系统、层次结构;3. 独立部件,包括通信进程、事件隐式调用;4. 虚拟机,包括解释器、规则基系统;5. 以数据为中心的系统(库),包括数据库、超文本系统、黑板系统;6. 特殊领域风格;例如过程控制、模拟器;7. 特殊结构的风格,例如分布式处理、状态转移系统;8. 不同风格合成建立的异构结构;9. 最初始、最基本的主程序/子程序。
自1964年G. Amdahl首次提出体系结构这个概念,人们对计算机系统开始有了统一而清晰的认识,为从此以后计算机系统的设计与开发奠定了良好的基础。近四十年来, 体系结构学科得到了长足的发展, 其内涵和外延得到了极大的丰富。特别是网络计算技术的发展,使得网络计算体系结构成为当今一种主要的计算模式结构。微电子技术的飞速发展使芯片级体系结构研究成为一个挑战性课题。体系结构与系统软件,应用软件,程序设计语言的紧密结合与相互作用也使今天的计算机与以往有很大的不同,并触发了大量的前沿技术、相关产品开发与基础研究课题。
在传统的程序设计领域中,人们使用流程图来表达系统的基本功能和实现的具体逻辑,但是,流程图实际上仅仅是源程序的图形化表示,无法给系统的分析和开发者提供更多的信息,所以没有在实际的系统开发过程中得到广泛的应用。随着软件系统的规模和复杂性的增加,对软件系统的整体结构(数据和控制的逻辑)进行分析和描述成为大型系统开发的一个不可缺少的重要部分,显然,使用流程图是无法达到这个目标的,我们必须使用新的方法和概念来对系统的整体结构进行把握。
系统分析实际上包括两个阶段的工作,首先是需求的分析,也就是说,划分出系统和环境之间的界面,将所研究(或者是将要开发)的系统和周围的环境分离,这就是从使用者的观点,将整个系统作为一个整体来考察。其次是系统的设计,根据系统的整体功能和数据,参考实际的物理系统或者类似的系统,设计实际运行的软件系统,这一步骤实际上就是体系结构的分析和确定。 从系统工程的观点看来,任何复杂的系统都是由相对简单的,在当前所分析的系统层次是原始的基本元素(虽然在更进一步的分析中,这些元素可能具有非常复杂的内部结构)组成的,这些基本元素之间存在复杂的相互作用。所以,软件系统的分析和设计的基本任务是:确立系统中的基本元素(完成系统的功能所必不可少的成分);确定这些元素之间相互作用的方式(这就是系统的体系结构)。
不做说明慢慢体会吧,很多东西可能落到笔上,就不同了,我不做学术研究,不过是干活而已;
计算机的体系架构
计算机体系结构(ComputerArchitecture)是程序员所看到的计算机的属性,即概念性结构与功能特性。按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。一般来说,低级机器的属性对于高层机器程序员基本是透明的,通常所说的计算机体系结构主要指机器语言级机器的系统结构。经典的关于“计算机体系结构(computerarchitecture)”的定义是1964年C.M.Amdahl在介绍IBM360系统时提出的,其具体描述为“计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性”
2.技术类:Android 系统构架
一、Aplications(应用层)
应用是用Java语言编写的云新在虚拟机上的程序。
二、Application Framework(应用框架层)
这一层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用。
View System:可以用来构建应用程序,它包括列表、网格、文本框、按钮以及可嵌入的Web浏览器。
Content Providers:它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。
Resource Manager:提供非代码资源的访问,如本地字符串、图形和布局文件。
Notification Manager:应用可以在状态栏中显示自定义的提示信息。
Activity Manager:用来管理应用程序生命周期并提供常用的导航退回功能。
Window Manager:管理所有的窗口程序。
Package Manager:Android系统内的程序管理。
三、Libraries、Android Runtime(系统运行库层)
当使用Android应用框架时,Android系统会通过一些C/C++库赖支持我们使用的各个组件,使其能更好地为我们服务。
Bionic系统C库:C语言标准库,系统最底层的的库,C库通过Linux系统来调用。
多媒体库(MediaFramework):Android系统多媒体库,基于PackerVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。
SGL:2D图形引擎库。
SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
OpenGL ES 1.0:3D效果的支持。
SQLite:关系数据库。
Webkit:Web浏览器引擎。
FreeType:位图(bitmap)及矢量(vector)。
在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,其只能执行.dex的可执行文件,当Java程序通过编译后,最后还需要通过SDK中的dx工具转为成.dex格式才能正常在虚拟机上执行,Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(Dalvik Exceutable)的文件。
Dalvik虚拟机有如下几个主要特征:
1.专有的dex文件格式。
2.dex的优化,dex文件的结构是紧凑的。
3.基于寄存器。
4.一个应用,一个虚拟机实例,一个进程。每一个Android应用度运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间。
四、Linux Kernel(Linux内核层)
显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动。
键盘驱动(KeyBoard Driver):作为输入设备的键盘驱动。
Flash内存驱动(Flase Memory Driver):基于MTD的Flash驱动程序。
照相机驱动(Camera Driver):常用的基于Linux的v412(Video for Linux)的驱动。
音频驱动(Audio Driver):常用的基于ALSA的高级Linux声音体系驱动。
蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术。
WiFi驱动:基于IEEE 802.11标准的驱动程序。
Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。
Power Management(电源管理):比如电池电量等。
五、Android应用程序框架
android.app:提供高层的程序模型和基本的运行环境。
android.content:包含对各种设备上的数据进行访问和发布。
android.database:通过内容提供者浏览和操作数据库。
android.graphics:底层的图形库,包含画布i、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。
android.location:定位和相关服务的类。
android.media:提供一些类管理多种音频、视频的媒体接口。
android.net:提供帮助网络访问的类,超过通常的java.net.*接口。
android.os:提供了系统服务、消息传输和IPC机制。
android.opengl:提供OpenGL的工具。
android.provider:提供访问Android内容提供者的类。
android.telephony:提供与拨打电话相关的API交互。
android.view:提供基础的用户界面接口框架。
android.util:涉及工具性的方法,例如时间日期的操作。
android.webkit:默认浏览器操作接口。
android.widget:包含各种UI元素在应用程序的布局中使用。
3、数据库的某企业管理软件的体系架构图;
再贴一个未完成的草图,找找感觉(VISIO 流程图就可以会绘制)
|
|