软件体系结构风格

2024-05-20

软件体系结构风格(精选三篇)

软件体系结构风格 篇1

关键词:架构风格,WEB服务,分层结构,事件驱动

2012年底, 我所在的公司中标中国石油某分公司AQES项目, 项目全称是生产安全受控系统, 我有幸作为架构设计师承担了架构设计工作。

AQES项目实施目的是在各炼厂推行生产受控管理, 目的是减少生产过程中的违规操作, 石化公司的炼厂类型多, 流程复杂, 为了使项目达到适应炼厂各种作业需求, 开发组用了一个月在各炼厂调研, 明确了各炼厂安全生产管理都是落实总公司的"工作有计划、行动有方案、步步有确认、事后有总结"的四有工作法, 经过分析, 在此共同需求的指导下, 整个业务流程可以统一在"制定工作流程、获取流程、依据流程作业, 返馈作业数据、工作汇总分析"这五个流程中, 具体来说, AQES是面向石化的特殊行业软件, 有以下一些特点:

(1) 由于石化炼厂有各种易燃、易爆产品, 对安全性有很高的要求, 因此要求系统使用经过中石油能源一号网认证的防爆设备, 即行业移动终端, 以下简称PDA。

(2) 系统以RFID射频卡为核心进行身份和位置认证, 每个员工都有唯一的身份卡号, 每个作业点也以唯一位置确认卡号。

(3) 公司生产管理部需要对作业流程进行管理, 对作业完成率进行汇总, 需提供中心服务器, 由PDA将所有作业数据上传到服务器。

(4) PDA作业完成后在一周內上传作业数据, 因此移动终端必须要有数据库储存作业数据, 并保存一个月内的作业记录, 可用于工作中出现责任不清时的界定。

(5) 根据炼厂规模、工作性质、人员类型不同, 系统具体可分为干部巡检、工艺检查、员工作业等类型。

架构的设计的一个核心问题是如何有效地使用重复的体系结构模式, 即达到软件体系结构级的软件复用, 因此AQES项目首先要选择合适的架构风格。下面首先对通用的架构风格进行了对比和选择, 明确各种风格的组合约束和应用特点;再根据项目特点, 将系统划分成概念子系统, 然后对各子系统选择适合的架构风格, 满足各个系统的质量属性。

软件体系结构风格是描述软件系统组织方式的常用模式, 在实际中已经被多次应用, 体系结构风格通常分为数据流、调用/返回、独立构件、虚拟机和仓库这五类风格, 数据流类型包含两种风格, 分別是批处理和管道/过滤器风格, UNIX中的shell就是典型的管道-过滤器风格;调用/返回类型分为分层结构、面向对象、主程序-子程序三种风格;独立构件类型包含独立进程、隐式调用两种风格;虚机风格包含解释器、基于规则的系统, 这两种架构风格;仓库类型有三种风格, 分別是黑板风格、数据库风格、超文本系统。除此之外, 还有将状态转移、分布式处理等架构风格, 其中分布式架构风格中有客户机/服务器 (C/S) , 浏览器/服务器 (B/S) 风格、基于服务的架构风格。

AQES项目是在石化炼厂运行的系统, 经过分析, 生产管理可以统一在"制定作业流程、获取作业流程、依据流程作业、反馈作业数据、工作汇总分析"六个过程。根据AQES项目特点, 要求使用石油能源一号网认证的防爆设备, 即PDA, 因此将系统划分成两个子系统, 分为服务端子系统和PDA子系统, 生产管理部在服务使用服务端完成"制定作业流程、工作汇总分析"这两个过程, 员工使用PDA完成其余四个过程, 服务器与PDA之间通过无线网络联系。作业流程和工作汇总据都在服务端处理, 因此服务端和PDA之间有作业流程的下载, 作业数据上传的交互。

服务端和PDA两个子系统之间有粗粒度的交互, 但只在获取作业流程和作业数据上传时交互, 交互频率不高, 因此选择基于服务的分布式风格, 将两个子系统的功能实现为WEB服务, 这样划分可使子系统可以由独立小组开发, 可使用不同的语言, 工具实现。

AQES系统使用人员有两类, 一类现场员工, 使用PDA使用获取流程, 执行作业等工作。PDA以RFID射频卡为核心进行身份和位置认证, 且炼厂工作现场可能没有网络, 所以要求PDA作业完成后在一周內上传作业数据, 因此移动终端是一个独立的有拥有嵌入式数据库应用程序。二是生产管理部门, 使用据服务端, 完成制定流程和工作汇总工作, 这类工作适合在浏览器上完成, 根据服务端特点选择了B/S架构风格。

现场用户使用PDA, 执行RFID定位的作业点, 操作流程树节点, 对节点执行作业, 处理异常节点等操作, 这些都是基于事件驱动的交互, 普通开发中操作逻辑都定义在视图中, 并注册到视图类相应的事件中, 这模样的模式造成操作逻辑和视图类的紧耦合, 操作逻辑丧失了重用的机会, 而且无法单元测试。所以我们选用了基于事件驱动风格的MVP模式, 操作逻辑定义在呈现器中, 呈现器与视图类没有直接联系, 而是用事件注册的方式交互, 这样将操作逻辑和视图类解耦。PDA上使用这样的架构风格, 可以对呈现层上的操作逻辑单独测试, 便于在项目使用测试驱动的开发方式。实践证明, 这是保证PDA子系统质量的关键。

AQES系统由于炼厂规模、工作性质、人员类型不同, 实际工作内容各不相同, 可大致分为"干部巡检、工艺检查、员工作业"等类型, 每个类型又根据实际情况有很多不确定需求, 如作业是到装置级还是作业点, 是否有时间间隔, 是否支持倒班等, 另外, 将来用户需求可能会发生变化, 为了尽量降低维护成本, 提高可重用性, 我们在服务端子系统中选用了层次结构风格。根据调研, 我们把服务端业务层分为通用核心层、基础业务层和扩展业务层。

通用核心层完成的是软件的一些通用的公共操作, 这些操作与具体的数据库无关;基础业务层完成系统的共同需求, 实现上面提到的六个过程的主体, 人员权限管理, WEB服务管理, 异常处理等;扩展业务层完成系统个性化需求, 在基础业务层上扩展出具体作业细节, 如作业级别、倒班计划等, 这些功能可以进行通过参数化、组合的方式完成实际的应用, 工作流程的制定可以与扩展业务层组合, 生成干部工作流程。

层次结构将应用中的功能成不同层次实现, 可以方便地在完成共性需求的同时, 对个性需求行选择性安装, 比如在炼油厂的干部巡检管理, 通过在B/S端进行基础业务层和扩展业务层进行参数配置, PDA端同步后, 得到了适合炼油厂使用的巡检系统。通过逐层功能扩展的方法进行软件实现, 简化了软件复杂度, 有利于软件设计和构件开发, 且对于同类软件的快速开发有着很大的作用。

软件体系结构风格 篇2

Balsamiq Mockups的用途和价值

在Web产品设计中,Balsamiq Mockups是产品设计师绘制线框图或产品原型界面的利器。在产品设计的需求阶段,低保真的线框图或者草图设计介于产品流程设计与高保真DEMO设计之间,在Balsamiq Mockups出现之前,流程图可以使用Visio,高保真DEMO可以使用Axure,但我们并没有好用的草图设计工具;在产品设计管理中,我们通常在产品的业务流程和数据流转已经相当明确时才开始进一步考虑产品的结构层和框架层,虽然此时纸、笔、白板都是非常简单方便的交流工具,但是他们的最大劣势就是——很难将有价值的原型保存下来。Balsamiq Mockups的出现完美的解决了这个问题。

Balsamiq Mockups的优点和特色

可存:告别那一堆堆的纸质线框图吧…

易用:UI控件支持自动拖拽,并且可以实现自动对齐;

美观:手绘风格,简约清爽;

丰富:从按钮到输入框,从导航条到页面、表格,甚至包括了最潮的Iphone元素;

方便:对元素的修改除了工具栏外,还可以使用隐藏编辑框,支持快捷键;

兼容:可使用XML语言保存元素,也可以导出PNG图片,可以插入到任何项目;

跨平台:Windows、Mac OS、Linux下都可以使用,还有能集成在Confluence,JIRA,和XWiki中的版本,对了,如果你没时间下载桌面版,还可以直接使用网页版的Balsamiq Mockups…

Balsamiq Mockups的风险和劣势

应用范围:就像之前提到的,Balsamiq Mockups最好用于商用web产品设计中的低保真线框图或者草图设计,相对于纸和笔,它不够灵活;相对于Axure,它不够精确;

使用语言:暂时没有英文版的Balsamiq Mockups,虽然相对于用惯国外软件的产品设计师/前端交互设计师来说,这并不是什么大问题,但毕竟这提到了使用门槛,童鞋们还是要学好英语;(关于中文汉化版Balsamiq Mockups下面会提到)

价格不菲:79美元的价格并不适合喜欢的朋友尝鲜;而对于国内公司而言,在产品设计领域的理念和意识,远达不到花钱去买一个细分的专业软件的程度,

即便不使用Balsamiq Mockups,地球照样转。(关于Balsamiq Mockups的免费方法下面会提到)

使用Balsamiq Mockups的职业和互联网公司

使用Balsamiq Mockups的人包括产品经理、产品设计师、用户体验设计师、交互设计师、网站前端设计师等等,随便谁都可以。这并不重要,问题是很多大公司都在使用,来看看腾讯CDC对Balsamiq Mockups的分析,或者搜狐产品经理对Balsamiq Mockups的推荐,甚至现在网易招聘产品设计师都要求会Balsamiq Mockups了……

下载和安装Balsamiq Mockups

首先提供在线安装Balsamiq Mockups的方法:

>>点击进入Balsamiq Mockups官方下载安装页面<<

点击图标直接安装即可,安装内容包括Adobe AIR环境以及Mockups主体桌面程序:

如果你的电脑安装时出现问题,可以尝试分步下载安装Balsamiq Mockups:

确保你的电脑安装了Adobe AIR,下载后安装到默认文件夹

>>点击进入 Adobe AIR 的最新版本安装页<<

安装完Adobe AIR后直接下载Balsamiq Mockups桌面程序,无论是Windows还是Mac都可以正常使用,下载后安装到你需要的文件夹即可

>>直接下载 Balsamiq 的桌面端程序<<

软件体系结构风格 篇3

1 Indent软件的概述及效能

在20世纪60年代期间,最先开发出Indent软件的是:美国的伊利诺伊大学。Indent作为一种新的开源软件,20世纪80年起由自由软件基金会与加利福尼亚大学,以及Joseph Arcenesux与Carlo wood等分别也开发了Indent。在当今被使用最新的Indent是:2.2.10。主要是对C原始代码文件的格式进行调整,将C的原始代码利用插入和删除空格格式化。不仅将C语言以往的代码风格转变成为另种新的风格,还能够更加容易对代码进行读取。学习者通过学习和应用Indent软件,熟练掌握了规范式的代码格式,并实现程序代码的格式化。

Indent软件拥有三种效能:其一,能够进行空行和缩进。Indent软件的程序读取可以利用空行进行加强,而空行是程序结构得以明显表出的重要手段。在Indent软件中,提供了许多的空行选项,利用这些空行选项可以将相关的语句分别划分成各自的段落,并区分程序,将有关的注释部分进行公开说明或强调。利用缩进则可以使Indent软件的显示程序更具有逻辑结构性,对语句中的句子进行缩进,以提高程序员对程序的理解能力。曾今在一篇文章上报道过有关程序的缩进与理解性的问题,了解到缩进能够提高程序员对程序的理解能力。如果程序出现了2到4个空格缩进,那么程序员对程序的理解度就会高出以往没有缩进程序的20%到40%。一般Indent常选用的缩进是-in,由n来表达缩进字符个数。除-in外,还有-ci、-cli,以及-ip等可以进行选项;其二,能够进行长行拆分。在Indent软件中存在着一条规则,所有的语句长度都应该规范在80个字符内,因为一旦超过80个字符,就会造成语句的不顺口难以被读取,而且在80个字符的规范中并没有支持深度的嵌套,如果语句长于80个字符,那么在一般的规格纸张上是无法被放下的,尤其是应用在一面打印和两面栏代码的时候。自从设置新的模式以后,由90个字符取代了以往的80个字符。如:较窄的字体和大幅面的显示,以及横向的打印。为了使读取更加简便就会将字符拆分为2行。这样一来,就算超过了80个字符也不会影响到读取。Indent软件用-ln作为程序代码的最大长度,一旦超过最大长度的时候,就要利用-bbo进行换行等;其三,Indent软件拥有多类风格的选择。一般Indent软件有GNU和Berkeley风格,以及Kernighan Ritchie风格。其中Indent软件常用的风格是GNU。在学习基础的程序设计时,主要还是以GNU为主,当学习者对Indent软件的基础知识有了一定了解以后,再选用Berkeley风格,以及Kernighan Ritchie风格进行代码的格式化,帮助学习者通过Indent软件的学习了解不同的编程风格教学的优势。

2 编程风格教学

在实际的教学中,尽管国内许多高校都以培养学习者良好的编程风格和习惯作为程序设计基础课程的教学目标,但是,无论是教师还是学习者,似乎都忘了这个目标,只是将注意力集中在程序的语法和正确性方面,很少有人注意过编程风格的问题。

当然,也并不是说没有人关注过这方面的问题,例如在2005年,内蒙古师范大学计算机与信息工程学院的程序设计基础课程就被评为了“内蒙古自治区精品课程”,而且学校的教师们还自主开发了一个在线测评系统,这个系统可以在线自动测评程序并将信息反馈给学习者,改善学习者的编程风格,提高学习者的编程能力。然而,这个系统大多的时候是应用在考试的时候,而在平常的程序作业中,学生却很少讲究编程风格,这些编程风格问题主要表现有:其一,不应用锯齿形排列方式就在程序中排列嵌套或者多级嵌套,导致嵌套层次看起来非常混乱,不易读懂。其二,程序的结构非常混乱,层次也不清晰,这个时候一旦发现程序存在错误,不管是编程者还是教师都很难找到问题所在。

其实很多教师都清楚,无论他们在教学中多么强烈的要求注重要编程的风格,对于程序设计的初学者来说,他们都很难认为编程风格有多重要,总是认为只要程序的算法正确了,程序的功能能够实现,不管他们所提交的程序源代码是乱还是整齐,只要在线测评系统通过了,作业合格了,考试通过了,就行了。因此,很少有学习者会花时间去学习编程风格并保持这种良好的习惯。在学习者的心目中,编程风格的重要性远远比不上程序的算法和功能,甚至有些人根本就不考虑编程风格的问题,因为他们接触到的一般都是一些规模较小的程序,这种程序即使格式很乱,也能正确的运行,即使出现错误也能很快发现。但是在社会实践上,编程者碰到的基本上都是一些大型的程序,如果程序的格式很乱,就会导致可读性非常差,而且一旦出现错误的时候,恐怕就是编程者本人也很难读懂并找出错误之处。

其实每个人都知道不管学什么,基础都是最重要的,基础没打好,对后续的学习会有很大的影响,在编程学习方面也是,而编程风格便是程序设计的基础中的一项,因此一定要引导学习者意识到编程风格的重要性,并且学习如何养成良好的编程习惯。而要培养良好的编程风格的最好的也是唯一的途径就是让学习者不断编写一些枯燥而且乏味的程序代码,让学习者在实践中逐渐养成良好的编程风格和习惯。为了达到这个目标,教师最好是能够在学习者提交程序的当场就准确的评测程序,并及时将信息反馈给学习者,而且还针对编程风格问题与学习者进行交流,让学习者及时改正错误。

然而这种现象在目前国内的学校是很难出现的,在国内,一个班通常会有八九十人,单是在批改学生的程序代码格式上就耗费了教师太多的时间,这样是很难保证教学质量的。为了改善这种情况,减轻教师们的工作量,使他们能够有更多的精力投入到教学中,我们利用了Indent软件。

3 Indent软件在编程风格教学的应用中存在的差异

在Indent软件的编程风格教学中,主要有标示符的命名、注释、数据说明、语句构造、函数,以及程序的视觉组织等。之所以应用Indent软件,是因为它在编程风格教学中有存在着很多的亮点。我们知道传统教学方式是一般都是教师在上面讲,学习者在下面被动地接受,且的学习的自主性非常低。而使用Indent软件却不同,这个软件进行编程风格学习的过程是非常有趣的,实践证明了Indent软件的确可以帮助学习者进行编程风格习惯的培养。这是因为当学习者提交给Indent一段格式非常乱的源代码之后,Indent就能够立刻进行格式化代码的输出,在这个输出的过程中学习者能够体验出成功的喜悦,然后积极主动地学习规范的代码。每位学习者都会有好奇的心理,Indent一共有80多个格式选项,学习者总是会想看看不同的选项组合会输出什么风格的程序代码,于是就在无意识间对编程风格的兴趣提高了,从而在无法察觉的情况下,一点点的加深理解了编程风格知识。使用Indent软件指导学习者学习如何规范的编程,学习者的自主性也得到了提高,编程风格变好了,省却了教师花费在读懂杂乱无章的程序上的时间,可以有更多的时间和精力投入到教学中,从而显著调高教学效果。

对于计算机的基础课程来说,程序设计的基础是计算机技术专业体系课程的重点。由于完整的计算机技术掌握受到编程风格教学的影响,在以往的教学中,总是将重点集中在程序的算法和准确度上,常常忽略在编程风格教育方面,影响其工作量、维护的成本,以及程序的可读性。不过Indent在编程风格教学中的也有一些够完善的地方。一般,对于程序设计初学者来说,编程风格主要包含几个方面的要求:Layout和Naming,以及Comment和Coding的要求。Layout主要是指要有合理的布局及缩进、空格的运用等;Naming是指命名,要求学习者必须予以变量、函数等有意义的名称;Comment则是要求无论程序大小,对于程序的功能都必须要有足够的注释来描述;Coding主要是要求学习者能够对某些控制语句进行规范性的应用。由于Indent软件只能对编程风格教学中所存在的代码布局进行解决,也就是指编程风格中的Layout方面的问题,因此对于其他编程风格问题却没有涉及到,要解决那些问题还需要教师在教学中多结合其他的方法来解决。

4 结束语

总而言之,Indent软件在编程风格教学的应用中能够帮助教师拥有更多的时间去进行对编程思路和设计,以逻辑等教学,是一个很好的帮手。不仅提高了程序的可读性,方便了日后对代码的维护,还确保了对学生的指导。Indent软件融入在编程风格教学中改变了以往的教学模式。一些基础的编程风格还需融入课堂的讲解。通过放入编程风格内容的评测,不断激发学习者与教师对编程风格教学的重视,使学习者养成编程风格教学的习惯。

参考文献

[1]丁红胜,田金琴.C语言教学中学生编程风格的培养[J].计算机时代,2006(10).

[2]德志.c语言教学中对初学者编程能力的培养[J].福建电脑,2005(9).

[3]辛淑平.C/C++语言教学内容扩展与深化的研究[J].内蒙古师范大学学报:教育科学版,2010(1).

[4]张良德,葛湘巍,刘东升.Indent软件在编程风格教学中的应用[J].计算机教育,2010(5).

上一篇:公司财务的价值回归下一篇:苏北高校