private static void TimeEvent(object source, System.Timers.ElapsedEventArgs e)
        {
            int intHour = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            int iHour = 10;
            int iMinute = 30;
            int iSecond = 00;
            // 设置  每秒钟的开始执行一次
            if (intSecond == iSecond)
            {
                Console.WriteLine("每秒钟的开始执行一次!");
            }
            // 设置 每个小时的30分钟开始执行
            if (intMinute == iMinute && intSecond == iSecond)
            {
                Console.WriteLine("每个小时的30分钟开始执行一次!");
            }

            // 设置 每天的10:30:00开始执行程序
            if (intHour == iHour && intMinute == iMinute && intSecond == iSecond)
            {
                Console.WriteLine("在每天10点30分开始执行!");
            }
        }

posted @ 2011-08-02 10:11 柳晛 阅读(164) 评论(1) 编辑

迷迷糊糊,360和腾讯之间的争斗已经持续了十多天了,用户该用什么还是用什么,不可能因为谁多骂了谁几句就能让对方倒闭的,无非是看看笑话。

虽然用户不变,但这个战局发生了历史上最大的变化。

腾讯和360都有用户量,但腾讯偏多,而且腾讯比360有钱得很,真不是一个等级的。

但是360很有智慧,当年网民需要3721时,他就做3721;当网民不需要3721时,他就不做3721;雅虎中途打个小算盘没玩明白,收了3721网民就开始骂了,把老本都搭进去了;最终360还是顺应网民的意愿,做360灭3721;他每次都是顺应自然,站在网民这一方挖掘市场。

尤其近几年的免费杀毒软件之争,每次360都是蚂蚁吃大象,这次对腾讯360是主动出手的,所以我认为凭借他的智慧,小胜一筹没有问题。

可事情并没有我前几天想得那么简单。

回想这几年,腾讯靠着庞大客户群,抄袭互联网有钱途的经营模块,把它做得更人性化,遍地捡钱,强行抢占了人家的市场。

360这次出击,无形之间表达了360要对战腾讯的决心,以前被腾讯欺负过的公司原本是一盘散沙,落日余晖,被360这么一刺激,瞬间拧成一股绳。

想想看,腾讯模仿他们的东西,反过来说腾讯能做的,他们也都能做,如果他们能合纵联横,加上360的战略指导,将是多么强大。

可以说360的产品比较少,无法和腾讯抗衡,但是他号召起来的那些集团大军,完全可以再造一个腾讯,其用户量加起来也远远超过腾讯,若能联合,他们每一个团队都是自己领域当中最专业的,而腾讯只是一个山寨而已。

腾讯为什么粘性那么大,因为我们的朋友都用它,但是,最亲密的朋友、最重要的伙伴,不用腾讯也能联系,这表明腾讯并不是必要的。

只要腾讯近期灭不了360,360必将鼓舞反腾讯阵营复仇之心,同仇敌忾共同抗击。

360也有仇家,但是360市场小,这也是他的优势,他的仇家只有浏览器和杀毒软件两个领域,和腾讯的仇家相比,真不是一个等级的。

战国交戎变成楚汉相争,成也抄袭,败也抄袭,做老板的,四面触敌走投无路的时候,反思一下自己是不是当年做得太过份了,这些债积攒到一起的时候就该吃报应了。

寡助之至,亲戚畔之。多助之至,天下顺之。以天下之所顺,攻亲戚之所畔,故君子有不战,战必胜矣。

posted @ 2010-10-29 13:49 柳晛 阅读(13532) 评论(126) 编辑

第二十一章  案例研究


21.1  价值驱动的体系结构:连接产品策略与体系结构

系统的存在是为了为利益相关方创造价值。

价值模型、体系结构策略。

定义完善的价值模型可以为提高折中方案的质量提供指导。


21.1.1  价值模型概述

这些利益相关者在其他系统中扮演着重要角色。

这些其他系统也是为了为其利益相关者创造价值。

系统的这种递归特性是分析和了解价值流的一个关键。

价格模型核心的特征 三种基本形式:

1、价值期望值:表示对某一特定功能的需求,内容(功能)、满意度(质量)。

2、反作用力:系统部署实际环境中,实现某种价值期望值的难度。

3、变革催化剂:环境中导致价值期望值发生变化的某种事件,或者是 导致不同结果的 限制因素。

反作用力和变革催化剂称为限制因素,把这三个统称为价值驱动因素。

传统方法,都是通过聚焦于系统 进行交互的参与者的类型开始的。

有如下几个突出的局限性:

1、对参与者的行为模型关注较多,而对其中目标关注较少。

2、往往将参与者固定化分成几种角色,其中每个角色所在的个体在本质上都是相同的。

3、往往忽略限制因素之间的差别。

4、结果简单。要求得到满足或未得到满足,用例成功完成或未成功完成。

这种方法 使用顺序推理和分类逻辑,因此易于教授和讲解,并能生成一组易于验证的结果。


效用曲线用于将每一个可选方案所得出的定量测量值映射到其对应值。然后,值级别用期望优先级加权,并进行叠加。

叠加值越高,方案越可取,该方法可能比较主观。


21.1.2  体系结构挑战

体系结构挑战 是因为一个或多个限制因素使得满足一个或多个期望值变得更困难。

在任何环境中,识别体系结构挑战都涉及评估。

1、哪些限制因素影响一个或多个期望值?

2、如果知道了影响,它们满足期望值更容易(积极影响)还是更困难(消极影响)?

3、影响程度如何?简单的 低、中、高 三个等级通常就已经够用了。


制订系统的体系结构策略始于:

1、识别合适的价值背景并对其进行优先化。

2、在每一背景中定义效用曲线和优先化期望值。

3、识别和分析每一背景中的反作用力和变革催化剂。

4、检测限制因素使满足期望值变难的领域。


建议对以下几点进行权衡:

重要性。

程度。

后果:大概多少种方案可供选择?难度或有效性是否有很大差异?

隔离:对最现实的方案的隔离情况如何?影响越广,该因素的重要性就越高。


尽管体系结构样式和模式技术非常有用,不过在该领域,在问题和解决方案领域的身后,经验仍具有无法估量的价值。


21.1.3  结论

价值模型 有助于了解和传达关于价值来源的重要信息。

如价值如何流动,期望值和外部因素存在的相似性和区别,要实现这些价值有哪些子集。


21.2  使用 RUP 和 UML 开发联邦企业体系结构框架

联邦企业体系结构框架(Federal Enterprise Architecture Framework,FEAF)


21.2.1  联邦企业体系结构框架概述

它把企业体系结构划分为 4部分:业务、数据、应用程序、技术。

FEAF 确定了开发和维护联邦企业体系结构所需的 8 中构件。这八种构件的分解进一步细化了 FEAF 的 4个层次。


第一层是联邦企业体系结构框架的最高层,它引入了开发和维护联邦企业体系结构所需要的 8种构件。

1、体系结构推动者(Architecture Drivers)

2、战略方向(Strategic Direction)

3、当前体系结构(Current Architecture)

4、目标体系结构(Target Architecture)

5、过程转换(Transitional Processes)

6、体系结构片段(Architectural Segments)

7、体系结构模型(Architectural Models)

8、标准(Standards)


第二层在更详细的层次上说明了联邦企业体系结构的业务和设计方面以及两者之间的关联。

业务体系结构和设计体系结构之间的关系是 推/拉 关系——业务推动设计以满足自身的需要,设计(既新开发的数据、应用程序和技术)通过支持业务运作来拉动业务到新的服务交付水平。


第三层展开了框架设计部分,显示三种设计体系结构:数据、应用程序、技术。


第四层(最详细视图)三种设计体系结构如何支持业务体系结构开始逐渐明确起来。


21.2.2  FEAF 矩阵概述

36个单元的矩阵,涵盖了企业中的 谁(who)、什么(what)、何处(where)、何时(when)、为何(why)、如何(how)。


21.3  Web 服务在 HL7 上的应用——Web 服务 基础实现框架

Health Level Seven(HL7)是美国国家标准化协会(ANSI)认可的标准化开发组织中的一个,它正在全世界保健行业里运行着(Level Seven 引用了开放系统互联模型 OSI 的最高层——应用层)。


21.3.1  HL7 模型概念

1、参考信息模型

2、消息结构

所有的 HL7 消息都被放在 Transmission Wrapper,Wrapper 的目的是 支持应用软件之间消息的传输(和确认)。

3、交互

4、应用程序角色

一个角色就体现了应用程序的职责。

5、Storyboard

一个 Storyboard 是由一小段记叙了它本身的目的及交互作用图表的描述所组成的(在应用层)应用程序角色间相互作用的级数。


21.3.3  开发 HL7 Web 服务适配器

为了高效地开发 HL7 Web 服务适配器,需要按如下步骤来做。

1、消息和数据类型的设计。

2、适配器模式的选择。

3、HL7 Web 服务契约开发。

4、生产 Web服务 Stub 和 代理的实现。

5、开发适配器业务逻辑。

posted @ 2010-09-06 09:20 柳晛 阅读(3177) 评论(1) 编辑

第二十章  面向服务的架构


服务是一个由服务提供者提供的,用于满足使用者请求的业务单元。

在 SOA中,服务的概念有了延伸,泛指系统对外提供的功能集。


20.1  SOA 的相关概念

20.1.1  SOA 的定义

面向服务的体系结构(Service-Oriented Architecture,SOA)

从应用的角度定义:是一种应用框架,着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。

从软件的基本原理定义:是一个组件模型,将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。


20.1.2  业务流程 与 BPEL

由于业务流程来源于现实世界,传统上是通过复杂的语言进行描述。

BPEL(Bussess Process Execution Language For Web Services)面向Web服务的业务流程执行语言。

提供了一种相对简单易懂的方法,可将多个Web服务组合到一个新的服务服务(称作业务流程)中。

将现有的 Web Services 按照要求的业务流程整理成为一个新的 Web Services,形成一个从外界看来和单个 Service 一样的 Service。


20.2  SOA 的发展历史

为了能够将公司的业务打包成独立的、具有很强伸缩性的基于因特网的服务,人们提出了 Web服务的概念,这可以说是 SOA 的起源。

1、萌芽阶段

以 XML 技术为标志,XML 的出现无疑为 SOA 的兴起奠定了稳固的基石。

2、标准化阶段

2000年以后,出现了三个著名的 Web 服务标准和规范:简单对象访问协议(Simple Object Access Protocal,SOAP)、Web 服务描述语言(Web Services Descriptin Language,WSDL)、通用服务发现和集成协议(Universal Discovery Description and Integration,UDDI)。

Web 服务也是因特网 Web 2.0 时代的一项重要特征。

3、成熟阶段

从2005年开始,体现在三个重量级规范上:SCA/SDO/WS-Policy,标志着 SOA进入了实施阶段。

美国实现 SOA 架构的关键任务是:对已有系统中的功能进行提取和包装,形成标准的“服务”。

大量“服务”需要全新构造才是中国 SOA 的主要任务。


20.3  SOA 的参考架构

以服务为中心的企业集成采用“关注分离(Separation of Concern)”的方法规划企业集成中的各种架构元素。

从服务为中心的角度来看,企业集成的架构 分为 6大类:

1、业务逻辑服务(Business Logic Service)

2、控制服务(Control Service)

3、连接服务(Connectivity Service)

4、业务创新和优化服务(Business Innovation and Optimization Service)

5、开发服务(Development Service)

6、IT 服务管理(IT Service Management)


1、连接服务——企业服务总线(Enterprise Service Bus,ESB)

采用了“总线”这样一种模式 来管理和简化 应用之间的集成拓扑结构。


2、业务逻辑服务

1. 整合已有应用——应用和信息访问服务

2. 整合新开发的应用——业务应用服务

3. 整合客户和业务伙伴(B2C/B2B)——伙伴服务


3、控制服务

1. 数据整合——信息服务

2. 流程整合——流程服务

3. 用户访问整合——交互服务


4、开发支持

企业集成的开发工具需要有标准的工具框架,这些工具能够以即插即用方式支持来自多家厂商的开发工具,支持整个软件开发周期,以提高开发过程中各种角色的生产力。


5、业务创新和优化

业务创新和优化服务以业务性能管理(Business Process Management,BPM)技术为核心提供业务事件发布、收集、关键业务指标监控能力。

业务创新和优化服务与开发服务是紧密相连的。

6、管理支持


20.4  SOA 主要技术和标准

Web 服务作为实现 SOA 中服务的最主要手段。


20.4.1  UDDI 协议

UDDI(统一描述、发现和集成协议)计划是一个广泛的、开放的行业计划,它使得商业实体能够彼此发现;定义它们怎样在 Internet 上互相作用,并在一个全球的注册体系架构中共享信息。

UDDI 规范利用了 W3C 和 Internet 工程任务组织的很多标准作为其实现基础,如 XML、HTTP、DNS 等协议。


20.4.2  WSDL 规范

WSDL(Web Services Description Language,Web 服务描述语言),用来描述 Web 服务 和 说明如何与 Web服务通信的 XML 语言。

通过 WSDL,可描述的三个基本属性:

1、服务做些什么

2、如何访问服务

3、服务位于何处

WSDL 文档被分为两种类型:服务接口(Service Interface)和服务实现(Service Implementations)


20.4.3  SOAP 协议

SOAP 是在分散或分布式的环境中 交换信息的简单的协议,是一个基于 XML 的协议。


20.5  SOA 的特性

20.5.1  文档标准化

20.5.2  通信协议标准

20.5.3  应用程序统一登记与集成


20.5.4  服务品质(Quality of Service,QoS)

关键元素有:安全需求(例如认证和授权)、可靠通信。


1、可靠性

仅且仅仅传送一次(Once-and-only-once Delivery)

最多传送一次(At-most-once Delivery)

重复消息过滤(Duplicate Message Elimination)

保证消息传送(Guaranteed Message Delivery)


2、安全性

认证交换、消息完整性、消息保密性,它借助现有的安全标准。


3、策略

服务提供者有时候会要求服务消费者与某种策略通信。

这些要求被定义为策略断言(Policy Assertions),一项策略可能会包含多个断言。


4、控制

整合应用意味着 像 异步通信、并行处理、数据转换,以及校正等进程请求必须被标准化。


5、管理

随着企业服务端增长,所使用的服务和业务进程的数量也随之增加,一个用来让系统管理员管理所有,运行在多种环境下的服务的管理系统就显得尤为重要。


20.6  SOA 的作用

在一个企业内部,可能存在不同的应用系统,由于开发的时间不同,开发工具不同,这些已有应用系统是孤立的,也就是我们常说的“信息孤岛”。

从头建立一个新的基础环境是不可能的。

SOA 凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要。

在 SOA 得以普及之前,解决企业内部信息系统“信息孤岛”的问题通常采用 EAI(企业应用整合)的方式。

EAI Server 就好像一个“翻译”,让每两个应用之间可以对话,会带来 EAI Server 呈几何倍数的增长。


SOA 对实现企业资源共享,打破“信息孤岛”的步骤如下:

1、把应用和资源转换成服务。

2、把这些服务变成标准的服务,形成资源的共享。

SOA 不仅仅是 一个技术,而是一个软件架构。


20.7 SOA 设计原则

SOA 架构中,继承了来自对象和组件设计的各种原则,如 封装、自我包含等。保证服务的灵活性、松散耦合、重用能力的设计原则。

常见和讨论的设计原则如下:

1、无状态。以避免服务请求着依赖与服务提供者的状态。

2、单一实例。避免功能冗余。

3、明确定义的接口。服务的接口由 WSDL 定义,用于指明服务的公共接口与其内部专用实现之间的界限。

XML 模式(Schema)用于定义所交换的消息格式(即服务的公共数据)。服务定义必须长时间稳定,一旦发布,不能随意更改,服务的定义应尽可能明确,减少使用者的不适当使用。

4、自动包含和模块化。封装了那些业务上稳定、重复出现的活动和组件,实现服务的功能实体是完全独立自主的。

5、粗粒度。服务数量不应该太大。

6、服务之间的松耦合性。其位置、实现技术和当前状态等对使用者是不可见的,服务私有数据对服务使用者是不可见的。

7、重用能力。

8、互操作性、兼容和策略声明。


20.8  SOA 的设计模式

20.8.1  服务注册表模式

服务注册表(Service Registry)主要在 SOA 设计时段使用,虽然它们常常也具有运行时段的功能。

注册表支持驱动 SOA 治理的服务合同、策略、元数据 的开发、发布、管理。

因此,他们提供一个主控制点,或者称为策略执行点(Policy Enforcement Point,PEP)。在这个点上,服务可以在 SOA 中注册和发现。

注册表可以包括有关服务和相关软件组件的配置、遵从性和约束配置文件。任何帮助注册、发现和检索服务合同、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。


主要的服务注册厂商:

一个阵营是提供服务、策略、元数据 注册表 及 信息库的纯 SOA 厂商。

另一个阵营是 SOA 平台厂商,这些厂商将注册表作为集成产品套件的一个组件。

1、注册服务:应用开发者,也叫服务提供者,向注册表公布他们的功能。

2、服务位置:也就是服务应用开发者,帮助他们查询注册服务,寻找符合自身要求的服务。

3、服务绑定:服务的消费者利用检索到的服务合同来开发代码,开发代码将与注册的服务绑定、调用注册的服务以及与他们实现互动。


20.8.2  企业服务总线模式

采用点对点的集成方式存在着复杂度高,可管理性差,复用度差,系统脆弱 等问题。

企业服务总线(Enterprise Service Bus,ESB)提供一种标准的软件底层架构,各种程序组件能够以服务单元的方式“插入”到该平台上运行,并且组件之间能够以标准的消息通信方式来进行交互。

支持异构环境中的服务以基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。

本质上是以中间件形式支持服务单元之间进行交互的软件平台。

这种交互过程不再是点对点的直接交互模式,而是由事件驱动的消息交互模式。

ESB最大限度上解耦了组件之间的依赖关系,降低了软件系统互联的复杂性。

ESB 以中间件的方式,提供服务容错、负载均衡、QoS保障和可管理功能。


ESB 的核心功能如下:

1、提供位置透明性的消息路由和寻址服务。

2、提供服务注册和命名的管理功能。

3、支持多种消息传递泛型(如 响应/请求、发布/订阅 等)。

4、支持多种可以广泛使用的传输协议。

5、支持多种数据格式及其相互转换。

6、提供日志和监控功能。

由于采用了基于标准的互联技术,ESP 使得企业内部以及外部系统之间可以很容易地进行异步或同步交互。具有很强的灵活性和扩展性。

服务总线层为整个 EAI 应用环境提供底层支持。


20.9  构建 SOA 架构时应该注意的问题

20.9.1  原有系统架构中的集成需求

一定要注意对原有系统架构中集成需求进行细致的分析和整理。

可以在系统的开发和维护中缩短产品上市时间,因而可以降低企业系统开发的成本和风险。

因此,当SOA 架构师遇到一个十分复杂的企业系统时,首先考虑的应该是如何重用已有的投资而不是替换遗留系统。

当 SOA 架构师分析原有系统中的集成需求时,不应该只限定为基于组件构建的已有应用程序的集成,必须考虑一些更加具体的集成的类型,主要包括:

应用程序集成的需求;终端用户界面集成的需求;流程集成的需求;已有系统信息集成的需求。

因而,SOA 架构师在着手设计新的体系结构框架时,必须要全面地考虑所有可能的集成需求。


20.9.2  服务粒度的控制以及无状态服务的设计

构建一个企业级的 SOA 系统架构时,关于系统中最重要的元素,首先是:服务粒度的控制;其次是:无状态服务的设计。


1、服务粒度的控制

通常来说,对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。

粗粒度服务接口保证了服务请求着将以一致的方式使用系统中所暴露出的服务。

2、无状态服务的设计

SOA 系统架构中的具体服务应该都是独立的、自包含的请求,在实现这些服务的时候不需要前一个请求的状态,也就是说服务不应该依赖于其他服务的上下文和状态。

当负载增加时,可以向群集中增加机器。(无状态就可以热插拔)


20.10  SOA 实施的过程

20.10.1  选择 SOA 解决方案

选择最佳的解决方案,是保证 SOA 实施成功的前提条件。

总体来说,必须从以下三个方面进行选择:

1、尽量选择能进行全面规划的方案

既需要选择适当的工具,还需要有专业的技术人才。

2、选择时充分考虑企业自身的需求

必须认识到,用于构建 SOA 项目的前期投资将产生巨大效益。

3、从 平台、实施 等技术方面进行考察

首先要考虑的是平台的开放性和对标准的支持。

以往的成功经验总结有6个方面:业务战略和流程、基础架构、构件模块、项目和应用、成本和效益、规划和管理。


20.10.2  业务流程分析


1、建立服务模型

1. 自顶向下分解法

自上而下的领域分解方式从业务着手进行分析,选择端到端的业务流程进行逐层分解至业务活动,并对其间涉及的业务活动和业务对象进行变化分析。

2. 业务目标分析法

通过关键性能指标分析来验证已有业务候选者以及发现遗漏的服务候选者,这可以叫做“目标服务建模(Goal Service Modeling)”。

它的思想是:从企业的业务目标触发,目标分解为子目标,子目标再分派给相关的服务来实现,这样就形成了一颗“目标服务树”。

3. 自底向上分析法

利用已有资产来实现服务,已有资产包括已有系统、套装或定制应用、行业规范或业务模型等。

这也叫做“遗留资产分析”,可以方便地发现哪些在不同的系统中被重复实现的功能模块以及可以复用的功能模块。


2、建立业务流程

1. 建立 业务对象(Business Object,BO)是对数据进行检索和处理的组件,是简单的真实世界的软件抽象。通常位于中间层或业务逻辑层。

业务对象的分类如下:

a. 实体业务对象。表达了一个人、地点、事物或者概念。

b. 过程业务对象。

c. 事件业务对象。

2. 建立服务接口

服务之间的交换可以为有状态、也可以为无状态。

在构建 SOA 的过程中,将无状态接口视为最好的选择,可以方便地供很多服务者应用程序重用。

3. 建立业务流程

流程是指定的活动顺序,包含明确确定的用于提供业务值的输入和输出。

对流程进行建模应当确保捕获的相关信息的一致性及完整性。

posted @ 2010-09-05 15:03 柳晛 阅读(1906) 评论(0) 编辑

第十九章  嵌入式系统设计


19.1  嵌入式系统

19.1.1  嵌入式系统的概念

以应用为中心,以计算机技术为基础,可以适应不同应用对功能、可靠性、成本、体积、功耗 等方面的要求,集可配置可裁剪的软件、硬件 于一体的专用计算机系统。

存储方案的选择就是在嵌入式Linux系统的可靠性、尺寸、功能、成本之间寻求最佳的平衡点。


19.1.3  嵌入式操作系统

嵌入式操作系统主要由应用程序接口、设备驱动和操作系统内核等几个方面组成。

嵌入式操作系统是一个按时序方式调度执行、管理系统资源并为应用代码提供服务的基础软件。

每个嵌入式操作系统都有一个内核,大多数内核都包含以下三个公共部件:调度器、内核对象、内核服务。

大多数内核支持两种普遍的调度算法:基于优先级的抢占调度、时间轮转调度算法。


19.1.5  嵌入式数据库管理

嵌入式数据库也称为移动数据库或嵌入式移动数据库,主要是解决移动计算机环境下数据的管理问题,移动数据库是移动计算机环境中的分布式数据库。

实际应用中必须解决好数据的一致性(复制性)、高效的事务处理和数据的安全性等问题。


19.1.6  嵌入式网络及其他

现场总线 主要有 总线型、星型 两种拓扑结构。

家庭信息网的拓扑结构有总线型、星型等。

常见的无线网络标准以 IEEE 802.11x 系列 为主。


19.2  嵌入式系统的设计

19.2.1  嵌入式系统分析与设计

嵌入式系统的核心技术有三种:处理器技术、IC技术、设计/验证技术。

单用途处理器是设计用于执行特定程序的数字电路,也指协处理器、加速器、外设等。

项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固化、测试、运行。


19.2.2  嵌入式软件设计模型


1、状态机模型

有限状态机(FSM)是一种描述系统状态及其状态转换的节点网,包括节点和边,节点表示状态,边表示状态之间的转换关系。

缺乏并发和层次化支持。


2、数据流模型

数据流图允许系统作为操作网进行建模,特别适合于对实现进行分区的系统模型。

布尔数据流、层次化流图、Petri网。


3、并发进程模型

并发进程包括 CSP 与 CCS 等。

CSP模型将输入、输出操作列为程序语言的基本要素,而将实现顺序进程间通信的并行组合作为基本的程序控制结构。

一个程序,就是一组进程,它们通过一个通信网络彼此通信。

面向对象的基本结构可用6个术语来描述,对象、类、属性、消息、操作、关系。


19.2.3  嵌入式系统软件开发环境

交叉平台开发方法(Cross Platform Development),即软件在一个通用平台上开发,而在另一个嵌入式目标平台上运行。

通用平台通常叫做宿主机系统,被开发的嵌入式系统称为目标机系统。

执行环境和开发环境一致时的开发过程称为 本地开发(Native Delelopment)。

posted @ 2010-09-03 21:27 柳晛 阅读(668) 评论(0) 编辑

第十八章  面向方面的编程


AOP(Aspect Oriented Programing)面向方面的编程。


18.1  方面编程的概念

18.1.1  AOP 产生的背景

1、面向过程编程面临的问题

面向过程编程是一种自顶向下的编程方法,其实质是对软件进行功能性分解。

2、传统面向对象编程面临的问题

对象模型可以很好地映射到实际领域。

完成某个特定需求的代码分散到各个类中,很难把它们全部找到,这就给程序的健壮性带来了隐患。

将传统的按功能或按对象划分程序模块的方法 转化为按系统特征划分程序模块,这就是 AOP的基本思想。


18.1.2  面向方面的编程

某些操作较难实现模块化,称涉及到这些操作的代码是分散的。

方面的定义:一个设计来用于捕捉应用程序横切面功能的程序单位。

方面与类的不同在于它实现了横切程序的功能。

程序中包括类和方面意味着模块性可以在两个因素上实现:类实现基本的功能性(这个因素叫做结构性);方面实现横切的功能性(这个因素叫做可操作性)。

方面由两个部分组成:切入点和通知代码。

通知代码包括要执行的代码,切入点定义了程序重要执行的代码处的点。

一个服务可以在一个程序中是非功能性的,但在另一个程序中却是功能性的。


18.1.3  AOP 技术

AOP可以说是OOP(Object-Oriented Programming)面向对象编程 的补充和完善。

它利用一种称为“横切”的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为Aspect,即方面。

实现 AOP 采用动态代理技术/采用静态织入的方式。


18.1.4  AOP 特性

改善了软件的 可扩展性、重用性、易理解性、易维护性。

通过将实现基本功能的组件和特定于应用的系统特性分离,使得组件(包括类或者函数)的重用性得到提高。

posted @ 2010-09-03 19:00 柳晛 阅读(896) 评论(0) 编辑
摘要: 第十七章 企业集成架构设计企业集成平台的核心是企业集成架构,包括 信息、过程、应用集成的架构。17.1 企业集成平台企业集成平台(Enterprise Integration Platform,EIP)目的是:能够根据业务模型的变化 快速地进行信息系统的配置和调整,保证不同系统、应用、服务、操作人员 之间 顺畅地互操作,进而提高企业适应市场变化的能力,使企业能够在复杂多变的市场环境中生存。良好的软...阅读全文
posted @ 2010-09-02 23:46 柳晛 阅读(7522) 评论(29) 编辑
摘要: 第十六章 层次式架构设计16.1 体系结构设计整个软件系统结构的设计与规格说明 比算法选择和计算问题的数据结构 更为重要。因此,代码级别的软件复用已经远远不能满足大型软件开发的需求。软件体系结构可定义为:为软件系统提供了 结构、行为、属性 的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统...阅读全文
posted @ 2010-09-01 00:09 柳晛 阅读(11473) 评论(20) 编辑
摘要: 第十五章 架构师的管理实践软件架构师的主要障碍 往往在于组织方面 而非技术,技术上出色的架构往往由于 没有全面地处理好组织管理因素而失效。15.1 VRAPS 组织管理原则VRAPS 包括 构想、节奏、预见、协作、简化 5个相关联的原则。受益人 是指 建立并长期保持 架构的价值 有重要影响的人或组织。1、构想原则:描述一副 一致的、有约束力和灵活的未来图景。2、节奏原则:协调程度,根据可预测的 速...阅读全文
posted @ 2010-08-30 23:12 柳晛 阅读(14246) 评论(16) 编辑
摘要: 第十四章 基于ODP的架构师实践14.1 基于ODP的架构开发过程系统架构 反映了功能在系统系统构件中的 分布、基础设施相关技术、架构设计模式 等,它包含了架构的 原则 和 方法、构件关系 与 约束,并能支持 迭加或增量开发。以软件架构为中心的开发过程是以 质量 和 风险 驱动的,最终提供一个稳定、低风险的 系统架构,并满足客户的需求(包含潜在需求)。开放分布进程的参考模型(RM-ODP)是一个I...阅读全文
posted @ 2010-08-25 23:12 柳晛 阅读(6958) 评论(1) 编辑
摘要: 13.2 软件可靠性建模13.2.1 影响软件可靠性的因素软件可靠性模型(Software Reliability Model)是指 为预计或估算软件的可靠性 所建立的可靠性框图和数学模型。模型 将复杂系统的可靠性 逐级分解为简单系统的可靠性,以便 定量预计、分配、估算、评价 复杂系统的可靠性。影响软件可靠性的主要因素:缺陷的引入、发现、清除。缺陷的引入 主要取决于 软件产品的 特征和软件的开发过...阅读全文
posted @ 2010-08-24 23:23 柳晛 阅读(7763) 评论(4) 编辑
摘要: 第十三章 系统的可靠性13.1 软件可靠性目前,硬件可靠性测试技术和评估手段日趋成熟,已经得到了业界的认可。软件可靠性模型的研究多集中在 开发阶段、测试阶段、评估阶段 的可靠性模型。13.1.2 软件可靠性的定义可靠性(Reliability)是指产品在 规定的条件下 和 规定的时间内 完成规定功能 的 能力。按照产品可靠性的形成,分为 固有可靠性、使用可靠性。固有可靠性是通过 设计、制造 赋予产...阅读全文
posted @ 2010-08-22 23:08 柳晛 阅读(9565) 评论(0) 编辑
摘要: 第十二章 系统安全架构设计12.1 信息系统安全架构的简单描述信息安全的特征 是为了保证信息的 机密性、完整性、可用性、可控性、不可抵赖性。以风险策略为基础。12.1.1 信息安全的现状及其威胁计算机和网络的普及,会产生两个方面的效应:其一,各行各业的业务运转几乎完全依赖于计算机和网络。其二,大多数人对计算机的了解更加全面。常见的安全威胁有如下几种:1、信息泄露。2、破坏信息的完整性。3、拒绝服务...阅读全文
posted @ 2010-08-20 23:13 柳晛 阅读(8068) 评论(1) 编辑
摘要: 11.1.4 访问控制自动、有效 地 防止 对 系统资源进行 非法访问或者不当使用。它是建立在身份认证的基础之上的。1、身份认证技术识别用户的身份有两种不同形式:身份认证、身份鉴定。认证的方法 归结为 3大类:知道什么、拥有什么、是什么。是什么,是一种基于生物识别技术的认证。1. 用户名和口令认证,三种简单的认证方式:明文传送、单向散列、单向散列函数和随机函数。2. 使用令牌认证,密钥存储于令牌中...阅读全文
posted @ 2010-08-19 19:28 柳晛 阅读(6499) 评论(2) 编辑
摘要: 第十一章 信息安全技术11.1 信息安全关键技术11.1.1 加密和解密有意的计算机犯罪 和 无意的数据破坏被动攻击:非法地从传输信道上截取信息,或从存储载体上 偷窃、复制 信息。主动攻击:对传输或存储的数据进行 恶意的删除、篡改 等。密码技术是防止数据攻击的一种有效而经济的方法。信源、信宿、明文、密文。传输消息的通道称为信道,参数 称为 密钥,解密算法是加密算法的逆运算。加密密钥与解密密钥相同,...阅读全文
posted @ 2010-08-18 21:05 柳晛 阅读(6089) 评论(0) 编辑
摘要: 1、对对方的看法Java程序员都看不起.NET认为没技术含量。.NET程序员大都仰慕Java,认为很NB。2、对新技术的看法Java社区发明一个新技术会被Java程序员拿来到处炫耀,说这是世界上最NB技术,完全不用了解这玩意儿干什么的。MS发明一个新技术会被.NET程序员说自己又贬值了,完全不用考虑这个技术能给自己带来什么。3、解决问题的方式Java程序员遇到无法解决的问题后,会认为是自己的思想有...阅读全文
posted @ 2010-08-18 09:10 柳晛 阅读(5248) 评论(7) 编辑
摘要: 第十章 构建平台与典型架构10.1 OMG 方式对象管理组 OMG,通过规范化对象 开放市场的 所有层次上的互操作性。10.1.1 对象请求代理CORBA 的主要目标就是 使用不同语言、不同实现、不同平台 能进行交互。CORBA 三个基本部分:一套调用接口、对象请求代理 ORB、一套对象适配器。10.1.2 公共对象服务规范两类服务:一类服务应用于企业计算系统。一类服务应用于细粒度的对象操作,但目...阅读全文
posted @ 2010-08-17 19:19 柳晛 阅读(4733) 评论(1) 编辑
摘要: 第九章 面向构件的软件设计9.1.1 术语、概念1、构件构件的特征如下:独立部署单元。 作为第三方的组装单元。没有(外部的)可见状态。独立可部署,意味着 必须能 跟他所在的环境 及 其他构件 完全分离。原子性,构件不但必须具备足够好的内聚性,还必须将自己的依赖条件和所提供的服务说明清楚。缓存具有这样的特征:当它被清空时,除了可能会降低性能以外,没有其它后果。构建本质上没有状态,同一操作系统进程中 ...阅读全文
posted @ 2010-08-16 19:42 柳晛 阅读(5015) 评论(3) 编辑
摘要: 8.1 XML 概述可扩展标记语言(xml)是标准通用标记语言(SGML)的一个子集;可以用XML来开发一种标记语言,它的元素和属性多是为专门行业和产业而定义的。支持统一字符编码 UCS,使得 XML 成为了国际标准,XML 和 HTML 都支持 样式表(style sheet)。8.1.2 标签语法XML 元素的结构与 HTML基本相同,使用尖括号来界定标签,但二者相同点也就仅此而已。与 HTM...阅读全文
posted @ 2010-08-14 17:46 柳晛 阅读(4733) 评论(0) 编辑
摘要: 7.1 设计模式概述重复遇到的典型问题,描述这些共同问题 和 解决这些问题的方案 就形成了所谓的 模式。7.1.1 设计模式的历史模式分为几个部分:特定的情景(Context),指模式在 何种情况下发生作用;动机(System of Force),指问题或预期的目标;解决方案(Solution),平衡各动机 或 解决所阐述问题的 构造或配置。每个模式描述了一个在某种特定情境下不断重复发生的问题,以...阅读全文
posted @ 2010-08-12 22:01 柳晛 阅读(6813) 评论(4) 编辑
摘要: 6.3 基于 UML 的软件开发过程6.3.1 开发过程概述UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用。迭代的渐进式软件开发过程包含四个阶段:初启、细化、构件、部署。1、初启项目的发起人 确定项目的 主要目标 和 范围,初步的可行性分析 和 经济效益分析。2、细化细化阶段的开始 标志着 项目的正式确立。1.初步的需求分析,比较重要、比较有风险的用例。2.初步的高层设计,用...阅读全文
posted @ 2010-08-11 19:04 柳晛 阅读(4803) 评论(0) 编辑
摘要: UML 建模与架构文档化方法种类的膨胀,极大地妨碍了用户的使用和交流。UML通过统一的表示法,使不同知识背景的 领域专家、系统分析、开发人员、用户 可以方便地交流。6.1.2 UML 体系结构演变UML 是用 元模型 描述的,元模型是 4层元模型体系结构模式中的一层,其他层次分别是 元-元模型、模型层、用户对象曾。其中元模型层 由 元-元模型层 导出。元模型的体系结构模式 可以用来定义 复杂模型 ...阅读全文
posted @ 2010-08-02 19:18 柳晛 阅读(1836) 评论(0) 编辑
摘要: 5.3 软件架构风格体系结构设计 核心目标是 重复的体系结构模式,体系结构级的 软件重用。5.3.1 软件架构风格概述一个体系结构 定义 一个词汇表 和 一组约束。词汇表中包含 构件和连接件类型约束指出 如何 组合起来。体系结构风格 反映了 共有的结构和语义特性,并指导如何 组织成一个完整的系统。5.3.2 经典软件体系结构风格每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输...阅读全文
posted @ 2010-08-01 17:59 柳晛 阅读(3060) 评论(6) 编辑
摘要: 第五章 软件架构设计Software Architecture 简称 SA5.1.2 软件架构设计与生命周期1、需求分析阶段需求 和 SA设计 面临的是不同的对象:一个是问题空间;另一个是解空间。保持二者的可跟踪性和转换。2、设计阶段1.传统的设计概念只包括 构件,随着研究的深入,构件间的 互联机制 逐渐独立出来,成为与构件同等级别的实体,称为 连接子。2.体系结构描述语言(Architectur...阅读全文
posted @ 2010-07-25 22:29 柳晛 阅读(1835) 评论(0) 编辑
摘要: 4.2 需求管理需求 最终文档 经过评审批准后,则定义了需求基线 Baseline;构筑了 功能需求 和 非功能需求 的一个 约定Agreement。约定是需求开发和需求管理之间的桥梁。需求管理是一个 对系统 需求变更、了解和控制 的过程,初始需求导出的同时 就启动了需求管理规划。4.2.1 需求管理原则过程能力成熟度模型 CMM,指导软件过程改进,5个成熟级别,6个关键过程域KPA。一旦需求 文...阅读全文
posted @ 2010-07-17 19:03 柳晛 阅读(1888) 评论(0) 编辑
摘要: 4.1 软件开发方法4.1.1 软件开发生命周期传统的软件生命期 是指软件产品 从形成概念(构思)开始,经过定义、开发、使用、维护、废弃,的全过程。可以把软件生命期划分为 软件定义、软件开发、软件运行与维护,三个阶段。1、软件定义时期1.问题定义,目标系统“是什么”,系统的定位以及范围。2.可行性研究,技术可行性、经济可行性、操作可行性、社会可行性。3.需求分析,确定软件系...阅读全文
posted @ 2010-07-08 22:12 柳晛 阅读(2060) 评论(0) 编辑
摘要: 1975年,意大利学者 朗高(G·Longo)提出:信息是反映事物的形式、关系相差别的东西,它包含在事物的差异之中,而不在事物本身。目前,关于信息 比较科学和统一的定义是:信息是对客观事物 变化和特征 的反映,是客观事物之间 互相作用和联系 的表征,是客观事物经过 感知或认知后 的再现。3.1.2 信息的特征1、客观性:反映了事物的 运动状态和方式,既事实性。2、普遍性:信息无所不在...阅读全文
posted @ 2010-07-06 22:31 柳晛 阅读(2391) 评论(0) 编辑
摘要: 《计算机网络基础知识》计算机系统 由 硬件和软件组成,软件通常分为 系统软件和应用软件。系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它。常用的系统软件有 操作系统、语言处理程序、连接程序、诊断程序、数据库 等。应用软件指 计算机用户利用 软硬件资源 为某一专门的应用目的而开发的软件。2.1 操作系统基础知识操作系统 Operating System,是计算...阅读全文
posted @ 2010-07-05 21:38 柳晛 阅读(2565) 评论(0) 编辑
摘要: 1.1.1 系统架构师的概念现代信息系统“架构”三要素:构件、模式、规划;规划是架构的基石,也是这三个贡献中最重要的。架构本质上存在两个层次:概念层,物理层。1.2.1 系统架构师的定义负责 理解、管理 并最终确认和评估 非功能性系统需求,给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构建、接口 进行总体设计 并澄清关键技术细节。主要着眼于系统的“技...阅读全文
posted @ 2010-07-04 18:22 柳晛 阅读(3894) 评论(3) 编辑
摘要: 事件类型:警告事件来源:ASP.NET 4.0.30319.0事件种类:Web 事件 事件 ID:1309日期:2010-6-28事件:13:28:39用户:N/A计算机:CNPOMO-T描述:事件代码: 3003 事件消息: 发生了验证错误。 事件时间: 2010-6-28 13:28:39 事件时间(UTC): 2010-6-28 5:28:39 事件 ID: a4dab4bd3ebd4a9d...阅读全文
posted @ 2010-06-28 15:33 柳晛 阅读(5064) 评论(9) 编辑
摘要: 前天晚上从Ubuntu群里讨论,居然很多人认为所有的软件都应该免费。从不在Linux阵营说话的我突然喊出一句“硬件为什么不免费。”按今年的价格,河沙30元一吨,最好的河沙可以提炼25%的纯硅(六九),按20%算,30元可以加工成200千克的纯硅,一个针头的面积可以容纳三千万个晶体管...如果这么算成本,看看CPU的原材料吧,一车皮沙子能满足全球的CPU供给。阅读全文
posted @ 2010-06-27 20:44 柳晛 阅读(345) 评论(0) 编辑
摘要: 四大发明是指中国古代对世界具有很大影响的四种发明。即造纸术、指南针、火药、活字印刷术。——百度百科。凭什么把“活字印刷”排在最后!我认为顺序应该是这样的:活字印刷、造纸术、指南针、火药。火药自发明以来,主要有量大作用,第一是军事,第二是烟花。没有推动人类文明发展,在我看来根本就算不上伟大的发明。两个团伙,只要发展到动干戈的地步,无论胜负,双方都是失败...阅读全文
posted @ 2010-06-20 20:12 柳晛 阅读(219) 评论(0) 编辑
摘要: 前几天是个神奇的日子,博客园里咣咣咣地出现了三篇文章,都包含了“跨平台”和“谎言”这两个关键字。从Java开始谈到.NET,最后哐地一下,“跨平台”本身也变成一种谎言了。从文章内容上看,我个人觉得基本不靠谱,主要论述方式是用“气势”或是“自信”来压倒对方…&hell...阅读全文
posted @ 2010-06-02 14:00 柳晛 阅读(310) 评论(0) 编辑
摘要: 前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的,而且无论谁倒了对双方阵营的粉丝们也是有害无益。我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。既然话题已经抄起,我打算今晚发篇博文再引导一下舆论...阅读全文
posted @ 2010-06-01 17:55 柳晛 阅读(10999) 评论(66) 编辑
摘要: 实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。&rdquo...阅读全文
posted @ 2010-05-30 17:40 柳晛 阅读(16229) 评论(112) 编辑
摘要: 近几周,一份反映 Netflix 公司企业文化的报告在网上广为流传。这份报告里列举了很多Netflix公司里令人称赞的做法,包括这个公司是如何的招聘和辞退员工的。里面有大量的信息是描述Netflix公司是怎样对待员工的,这使Netflix公司变成了一个很有吸引力的工作场所。报告里面提到过有一个关于员工所期望的内容的清单,但没有把清单列出来。报告的开始部分就谈及了企业价值问题,而且是按照员工的立场角...阅读全文
posted @ 2010-05-23 15:39 柳晛 阅读(1025) 评论(0) 编辑
摘要: 因为公司要经营GroupON,下载了一个开源PHP模板打算一试,俺到底是MS阵营的,三天都没部署好Linux + Apache2.0 + PHP5.0 + MySQL5.0 + Zend Optimizer3.3.0。 直到今天,我才亲身体会到为什么linux免费、开源,用户群这么少。 正是因为开源,所以它的应用软件开发者大多是为了满足自己的开发兴趣、解决自己想解决的问题,而非站在用户立场上开发软...阅读全文
posted @ 2010-05-22 17:30 柳晛 阅读(322) 评论(0) 编辑
摘要: 一直很喜欢用goto,它很灵活,但是教材、网上,都说goto不好...一次性跳出多重循环不但能保证某些情况下的数据正确运算,而且显著提高执行效率,跳出多重循环不用goto怎么办呢...周五晚上正好需要处理一个多重循环的问题,想到调用函数执行运算,然后return。使用goto方式:不使用goto方式:阅读全文
posted @ 2010-05-16 17:12 柳晛 阅读(637) 评论(0) 编辑
摘要: 又到了满园春色的季节,我曾经答应过程鸣写一篇散文留念,因为我在电大毕业时写过一篇。老了,散文写不动了,写点回忆录吧。刚入学时,父母和我一起来的,顺便看看这座占地近两千亩的校园,当时正在施工,也没玩好,其实我们学校每年都施工。接待我的是一个网络班的同学,想不起名字了;到了宿舍,依次认识的是崔明、张则顺、张家旭...那天晚上还去国际文化中心看了场电影,坐在崔明、张则顺中间,崔明教我如何将手机调成震动,...阅读全文
posted @ 2010-05-05 18:37 柳晛 阅读(209) 评论(0) 编辑
摘要: MSSQL 2005 提供了一个动态管理函数 sys.dm_db_index_physical_stats,可以方便直观地查看到指定表或视图的数据和索引的大小和碎片信息。下面这条语句,可以查看当前数据库中所有索引的碎片情况:SELECTobject_name(a.object_id) [TableName],a.index_id,name [IndexName],avg_fragmentation...阅读全文
posted @ 2010-04-28 12:55 柳晛 阅读(339) 评论(0) 编辑