精华内容
下载资源
问答
  • 软件体系结构基本概念汇总

    千次阅读 2015-07-28 00:36:08
    构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元;连接件也是可预制和可重用的软件部件,是构件之间的连接单元;构件和连接件之间的关系用约束来描述。这样即可以把软件体系结构写成:...

          这门课与UML建模,程序设计方法学一样,都是站在比较高的角度来看整个软件结构。并不是对算法,或者语言的关注。如果以后有志于成为软件架构师,就应该好好学这门课。现在我把自己整理的这门课的资料与大家分享。

    二、名词解释(每题2分,共20分)
    1、B/S(期中)    
    答:浏览器/服务器风格,是三层应用结构的一种实现方式。
    具体结构:浏览器/Web服务器/数据库服务器。

    2、C/S(期中)   
    答:客户/服务器风格,是基于资源不对等,且为共享而提出来的,定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络 。

    3、HMB     
    答:层次消息总线的软件体系结构风格(Hierarchical Message Bus—based Style)。HMB风格基于层次消息总线,支持构件的分布和并发,构件之间通过消息进行通信。

    4、DSSA   
    答:特定领域的软件体系结构(Domain Specific Software Architecture)就是在一个特定的领域中为一组应用提供组织结构参考的标准软件体系结构。

    5、ADL(期中)    
    答:软件体系结构描述语言(Architecture Description Language)是一种形式化语言,它在底层语义模型的支持下,为软件的概念体系结构建模提供了具体语法和框架。  

    6、XML   
    答:可扩展标记语言(Extensible Markup Language),XML是W3C制定的作为Internet上数据交换和表示的标准语言,是一种允许用户定义自己的标记的元语言(Meta)。

    7、ATAM   
    答:体系结构权衡分析方法(Architecture Tradeoff Analysis Method),它是针对系统所使用或修改活动的支持程度,来判断该体系结构针对这一场景所代表的质量需求的满足程度的体系结构评估方法。

    8、Web Service  
    答:Web服务(Web Service)是一种新的面向服务的体系结构,其中定义了一组标准协议,用于接口定义、方法调用、基于Internet的结构注册以及各种应用的实现。

    9、MTTF    
    答:平均失效前时间(Mean Time To Failure)指软件在失效前正常工作的平均统计时间。

    10、SOAP   
    答:简单对象访问协议(Simple Object Access Protocol),SOAP是一个基于XML的在松散分布式环境中交换结构化信息的轻量级协议,它为在一个松散的、分布式环境中使用XML交换结构化的和类型化的信息提供了一种简单的机制。

    11、WSDL  
    答:Web服务描述语言(Web Services Description Language)。定义了一套基于XML的语法,用来将Web Services描述为能够进行消息交换的服务访问点的集合。

    12、UDDI   
    答:(Universal Description Discovery Integration) 统一描述、发现和集成协议。是一套基于Web的分布式的Web Services信息注册中心的实现标准规范,同时也包含一组访问协议的实现标准,使得企业能将自身的Web Services注册上去,并让别的企业能够发现并访问这些Web Services。

    13、SAAM  
    答:(Software Architecture Analysis Method) 软件体系结构分析方法是最早精心设计并形成文档并得到广泛使用的软件体系结构分析方法 ,它最初是为了评估体系结构的可修改性而设计。

    14、MVC   
    答:(Model-View-Controller style)模型—视图---控制器 风格。主要处理软件用户界面开发中所面临的问题。MVC风格将交互式应用划分为3种构件:视图、模型和控制器,允许为一个模型建立多个视图。

    15、Artifact-Driven    
    答:制品驱动的体系结构设计方法从方法的制品描述中提取体系结构描述。它的例子包括广为流行的面向对象分析和设计方法OMT和OAD。

    16、Use-Case-Driven
    答:用例驱动的体系结构设计方法主要从用例导出体系结构抽象。统一过程使用的就是一种用例驱动的体系结构设计方法。

    17、Domain-Driven   
    答:领域驱动,体系结构是从领域模型导出的,领域模型是在领域分析阶段开发的。 

    18、Pattern-Driven  
    答:模式驱动,该方法从模式导出体系结构抽象

    19、构件(期中)  
    答:构件是指语义完整,语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统。

    20、连接件(期中)
    答:Connectors 是用来建立构件间的交互以及支配这些交互规则的体系结构构造模块。

    21.、MTBF
    答:(Mean Time Between Failure)平均无故障时间,是指相邻两次故障之间的平均工作时间,也称为平均故障间隔,它反映了产品的时间质量,是体现产品在规定时间内保持功能的一种能力。

    22、敏感点
    答:是指会由于体系结构元素的修改而发生显著变化的系统模型参数。

    23、权衡点  
    答:与多个敏感点有关的体系结构元素。

    24、直接场景
    答:直接场景指当前体系结构不经修改即可支持的场景。

    25、间接场景
    答:不能直接被当前体系结构支持,为了满足间接场景,需对体系结构进行某种修改。

    26、质量属性效用树
    答:以树的形式表现质量属性的细化。根是效用,接下来是质量属性层,再下一层是质量属性具体描述分类,最后一层是具体的场景。

    三、问答题(40分)
    1、构件描述模型有哪几种?
    答:3C模型、REBOOT模型、青鸟构件模型。

    2、理解并比较构件分类的三种方法:关键字分类法、刻面分类法和超文本组织方法,它们是如何组织的?如何在其中检索构件?每种方法各有什么优缺点?
    答:
    (1)关键字分类法:是一种最简单的构件库组织方法,其基本思想是:根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构;
    如何检索:系统在图形用户界面上将构件库的关键字树形结构直观的展示给用户,用户通过对树形结构的逐级浏览寻找需要的关键字并提取相应的构件;
    优点是简单,易于实现。缺点是在某些场合没有应用价值,因为用户往往无法用构建库中已有的关键字描述期望的构件功能或行为,对库的浏览也容易使用户迷失方向;

    (2)刻面分类法:主要思想来源于图书馆学,在刻面分类机制中,定义若干用于刻画构件特征的“面”,每个面包含若干概念,这些概念表述构件在面上的特征。刻面可以描述构件执行的功能,被操作的数据,构件应用的语境或任意其他特征;
    如何检索:构造查询、检索构件、对构件进行排序;
    优点是易于实现相似构件的查找。缺点是查询时比较麻烦;

    (3)超文本组织方法:其主要思想是所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联想思维方式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字说明文档中的文字进行匹配,实现构件的浏览式检索;
    如何检索:用户首先给出一个或数个关键字,系统在构件的说明文档中进行精确或模糊的语法匹配,匹配成功后,向用户列出相应的构建说明;
    优点是超文本组织方法为构造构件和重用构件提供了友好,直接的多媒体方式。由于网状结构比较自由,松散,因此,超文本组织方法比前两种方法更易于修改构件库的结构。缺点是在某些情况下用户难以在超文本浏览过程中正确选取构件;

    3、了解软件体系结构的四个发展阶段。
    答:
    (1)“无体系结构”设计阶段:开发主要采用汇编语言,规模较小;
    (2)萌芽阶段:主要采用解耦固化的开发技术;
    (3)初级阶段:主要采用面向对象的开发技术。从多种角度对系统建模(如UML);
    (4)高级阶段:该阶段以Kruchten提出的“4+1”模型为标志。软件开发的中心是描述系统的高层抽象类型;

    4、根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成?(期中)
    答:软件体系结构定义为构件,连接件和约束。构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元;连接件也是可预制和可重用的软件部件,是构件之间的连接单元;构件和连接件之间的关系用约束来描述。这样即可以把软件体系结构写成:体系结构=构件+连接件+约束。

    5、至少掌握三种经典软件体系结构风格。
    答:
    仓库风格和黑板风格
    仓库风格的体系结构由两种构件组成:中央数据结构和独立构件集合。
    黑板体系结构由三部分组成:知识源、黑板数据结构、控制器
    黑板体系结构是仓库体系结构的特殊化,便于共享大量数据,也便于扩展共享的黑板数据结构。
    MVC风格
    将模型与视图、控制器分开,从而允许为一个模型建立多个视图。将各方面问题分解开来考虑,简化了系统设计,保证了系统的可扩展性。
    C2风格
    由构件和连接件两种元素组成。构件可实现应用需求,并能将任意复杂度的功能封装在一起。所有构件之间的通信是通过以连接件为中介的异步消息交换机制来实现的。

    6、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。
    答:二层C/S体系结构将应用一分为二,服务器负责数据管理,客户机完成与用户的交互任务。优点:
    (1)C/S体系结构具有强大的数据操作的事务处理能力,模型思想简单,易于人们理解和接受;(2)对软硬件的变化有极大的适应性和灵活性,易于对系统进行扩充和缩小;
    (3)将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用;
    缺点:
    (1)开发成本较高;
    (2)客户端程序设计复杂;
    (3)信息内容和形式单一;
    (4)用户界面风格不一,使用繁杂不易推广;
    (5)软件移植困难;
    (6)软件维护和升级困难;
    (7)新技术不能轻易应用;

    三层CS在上面的基础上进行了改造,并增加了一个应用服务器。
    优点:
    (1)允许合理的划分三层结构的功能,能提高系统和软件的可维护性和可扩展性;
    (2)具有良好的可升级性和开放性;
    (3)应用的各层可以并行开发,可以选择各自最适合的开发语言;
    (4)为严格的安全管理奠定了坚实的基础;

    B/S风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。
    优点:
    (1)基于B/S体系结构的软件,系统安装,修改和维护全在服务器端解决;
    (2)提供了异种机,异种网,异种应用服务的联机,联网;
    缺点:
    (1)缺乏对动态页面的支持能力,没有集成有效的数据库处理能力;
    (2)在数据查询等响应速度上,要远远低于C/S体系结构;
    (3)系统扩展能力差,安全性难以控制;

    7、请对MVC风格体系结构进行介绍,并说明该风格的优缺点。
    答:模型-视图-控制器风格常被称为MVC风格,主要处理软件用户界面开发中所面临的问题。将模型与视图、控制器分开,从而允许为一个模型建立多个视图
    具有如下优点:
    (1)将各方面问题分解开来考虑,简化了系统设计,保证了系统的可扩展性;
    (2)改变界面不影响应用程序的功能内核,使得系统易于演化开发,可维护性好;
    (3)易于改变,甚至可以在运行时改变,提供了良好的动态机制;
    缺点:主要是仅局限在应用软件的用户界面开发领域中。

    8、在正交软件体系结构中,什么是完全正交结构?在实际使用时是不是必须严格遵守结构正交?使用正交软件体系结构有什么优点?(期中)
    答:如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。在实际使用时不是必须严格遵守结构正交。
    优点:
    (1)结构清晰,易于理解;
    (2)易修改,可维护性强;
    (3)可移植性强,重用粒度大;


    9、层次系统结构和基于消息的层次系统结构有什么区别?
    答:层次结构将系统进行分级组织,其组织思想是:在层次结构中,每一层向上层提供服务,并作为客户向下层请求服务。分层系统的优点:支持基于抽象程度递增的系统设计;支持功能增强;支持重用。分层系统的缺点:并不是每个系统都可以很容易的划分为分层的模式,甚至即使是层次化的,出于性能的考虑,也不得不把一些低级或高级的功能综合起来;很难找到一个合适的、正确的层次抽象方法。
    消息总线是系统的连接件、负责消息的分派、传递和过滤以及处理结果的返回。消息是构件之间通信的唯一方式。由于构件通过总线进行连接,并不要求各个构件具有相同的地址空间或局限在一台机器上,因此该风格可以很好的刻画分布式开发系统,以及CORBA.DCOM和EJB规范的系统。

    10、体系结构描述语言与程序设计语言有什么区别?
    答:ADL与其他的语言比较具有以下能力:
    (1)构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统;
    (2)抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注他们的抽象特性,而不管其具体的实现细节;
    (3)重用能力:ADL使得组成软件系统的构件,连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;
    (4)组合能力:ADL使得其描述的每一系统元素都有其自己的布局结构,这种描述布局结构的特点使得ADL支持软件系统的动态变化组合;
    (5)异构能力:ADL允许多个不同的体系结构描述关联存在;
    (6)分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析;

    11、ACME中定义了哪七种体系结构实体?ACME中的类型和风格是什么含义?
    答:七种体系结构实体:构件、连接件、系统、端口、角色、表述和表述映射。
    体系结构描述一个重要能力就是能够定义系统的风格或族。风格允许我们定义领域特定或应用特定的设计词汇,以及如何使用这些词汇的约束,在ACME中,设计师可以定义三种类型,分别是属性类型、结构类型和风格。

    12、了解基于XML的软件体系结构描述语言。
    答:由于XML在体系结构描述上的许多优点,已经开发出不同的基于XML的体系结构描述语言,如XADL 2.0 、XBA、XCOBA。
    XADL 2.0:具有很好的扩展性,不是为了描述某一模型而建立的单一语言,而是对模型描述的集合;
    XBA:把XML应用于软件体系结构的描述。利用XML的可扩展性,对现有的各种ADL进行描述及定义;
    XCOBA:可以动态的反映系统在运行时体系结构的相关信息,支持系统的精华和演化,支持基于构件的软件开发方法和实现异构构件之间的通信;

    13、简要介绍Krutchten的“4+1”视图模型。
    答:Krutchten “4+I“视图模型从5个不同的视角包括逻辑视图,开发视图,进程视图,物理视图和场景视图来描述软件体系结构。
    (1)逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务;
    (2)开发视图要考虑软件内部的需求,如软件开发的容易性,软件的重用和软件的通用性;
    (3)过程视图侧重于系统的运行特性,主要关注一些非功能性的需求;
    (4)物理视图主要考虑如何把软件映射到硬件上,解决系统拓扑结构,系统安装,通讯等问题 ;
    (5)场景,通过它可以将各种视图联系起来,描述不同视图构件之间是如何作用的;

    14、设计模式的基本成分有哪几个?请简单介绍其各个基本成分。
    答:设计模式的四个基本成分:名称,问题,解决方案,后果。名称通常用来描述一个设计问题,它的解法和后果,由1~2个词组成。问题告诉我们什么时候使用设计模式、解释问题及其背景。解决方案是描述设计的基本要素,它们的关系、各自的任务以及相互之间的合作。后果描述应用设计模式后的结果和权衡。

    15、为什么要评估软件体系结构?从哪些方面评估软件体系结构?
    答:
    原因:
    软件体系结构反映了系统最初始的设计决策,对同样一个问题,在初始阶段纠正所带来的花费和在测试或部署阶段纠正导致的开销不在一个数量级;
    评估是挖掘隐形需求并将其补充到设计中的最后机会;
    体系结构是开发过程的中心,不良体系结构会带来糟糕的结果;
    从以下几方面进行评估:
    (1)性能是指系统的影响能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数;
    (2)可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力;
    (3)可用性是系统能够正常运行的时间比例;
    (4)安全性是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力;
    (5)可修改性是指能够快速的以较高的性能代价比对系统进行变更的能力;
    (6)功能性是系统所能完成所期望的工作的能力;
    (7)可变性是指体系结构经扩充或变更而成为新体系结构的能力;
    (8)可集成性是指系统能与其他系统协作的程度;
    (9)互操作性是指与其他环境或者系统本身相互作用的能力;

    16、软件体系结构评估的主要方法有哪三种?请简单解释每种方法。
    答:(1)基于调查或检查表的评估方式:比较灵活,可以用来评估多种质量属性,也可以在体系结构设计的多个阶段进行。但是由于评估的结果很大程度来自评估人员的主观推测,因此不同的评估人员可能会产生不同的甚至是截然不同的结果,而且评估人员的对领域的熟悉程度、是否具有丰富的相关经验也将是评估结果的重要因素;
    (2)基于场景的评估方式:这种体系结构评估方式分析软件体系结构对场景也就是对系统的使用或改变活动的支持程度,从而判断该体系结构对这一场景所代表的质量需求的满足程度;
    (3)基于度量的评估方式:涉及三个基本活动:首先需要建立质量属性和度量之间的映射原则,即确定怎样从度量结果推出系统具有什么样的质量属性;然后从软件体系结构文档中获取度量信息;最后根据映射原则分析推导出系统的某些质量属性。基于度量的评估方式提供更为客观和量化的质量评估;


    17、SAAM和ATAM评估方法的基本步骤分别是什么?
    答:SAAM步骤:
    场景生成;
    体系结构描述;
    场景的分类和优先级确定;
    间接场景的单独评估;
    对场景关联的评估;
    形成总体评估;

    ATAM步骤:
    介绍ATAM;
    介绍商业动机;
    介绍体系结构;
    识别体系结构方法;
    生成质量属性效用树;
    分析体系结构方法;
    头脑风暴和设定场景优先级;
    分析体系结构方法;
    提供评估结果;

    18、Web服务有哪些核心技术,这些技术是如何在Web服务中发挥作用的。
    答:Web服务技术核心基于可扩展标记语言XML的标准。包括SOAP、WSDL、UDDI。
    SOAP:采用HTTP作为底层通信协议,以RPC作为一致性的调用途径,用XML作为数据传输格式,允许服务提供者和服务请求者通过防火墙在Internet环境下进行交互;
    WSDL:定义了一套基于XML的语法,用来将Web Services描述为能够进行消息交换的服务访问点的集合;
    UDDI:基于Web的分布式的Web Services信息注册中心的实现标准规范,同时也包含一组访问协议的实现标准,使得企业能将自身的Web Services注册上去,并让别的企业能发现并访问这些Web Services;

    四、看图答题(30分)
    1、请根据P38图3-5介绍黑板系统的组成。

    答:
    (1)知识源:特定应用程序知识的独立散片;
    (2)黑板数据结构:反映应用程序求解状态的数据;
    (3)控制器:控制(即对知识源的调用)是由黑板的状态决定的;

    2、请根据P59图3-26解释HMB风格的构件模型。(期中)

    答:在图3-26所示的构件模型中,左上方是构件的接口部分,一个构件可以支持多个不同的接口,每个接口定义了一组输入和输出的消息,刻画了构件对外提供的服务以及要求的环境服务,体现了该构件同环境的交互。右上方是用带输出的有限状态自动机刻画的构件行为,构件接收到外来消息后,根据当前所处的状态对消息进行响应,并可能导致状态的变迁。下方是复合构件的内部结构定义,复合构件时由更简单的子构件通过局部消息总线连接而成。消息总线为整个系统和各个层次的构件提供了统一的集成机制。

    3、请根据P60图3-27解释消息总线的属性和服务。(期中)

    答:消息总线属性:构件实例表,构件-消息响应登记表,消息过滤表。服务:消息登记,消息分派,消息传递,消息过滤。该图的描述中,构件1向消息总线登记感兴趣的消息,形成构件消息响应登记表,消息总线根据收到的消息的类型和构件——消息响应登记表的信息,定位传递该消息给相应的响应者,并负责返回处理结果。必要时,如果所接受的消息不是消息总线感兴趣的消息时,消息总线还可以对这些消息进行过滤和阻塞。
    构件只对消息本身感兴趣,并不关心消息是如何产生的,消息的发出者和接收者不必知道彼此的情况。这使得构件之间的耦合度低,构件重用性好,构件的更换更容易。在一般的互联接口定义的系统中,构件之间的连接是在要求的服务和提供的服务之间进行固定的匹配,而在HMB中,构件对外来消息进行响应后,可能会引起状态的变迁。因此,一个构件在收到同样的消息后,在不同时刻所处的不同状态下,可能会有不同的响应。

    4、请根据P147图5-2介绍体系结构设计方法的元模型。

    答:元模型是对各种体系结构设计模型的抽象。图中用圆角矩形表示概念,用连线表示概念之间的关联,用菱形符号表示3~4个概念之间的关联。
    客户:表示那些关心体系结构设计的系统相关人员;
    需求规格说明:描述了所要开发的体系结构的系统需求;
    制品:表示某一方法的制品描述;
    解决方案抽象:定义了子结构的概念表示;
    体系结构描述:定义了体系结构的规格说明;
    领域知识:用于表示在解决某一问题中所用的知识范围;

    5、请根据P167图6-1简要介绍基于体系结构的软件开发过程的各个步骤。并说明各个步骤的必要性何在?或者说,它们在软件生命周期中都起到了什么作用?

    答:本过程由以下步骤组成:
    (1)导出体系结构需求:体系结构需求由开发组织创建,并受技术环境和体系结构设计师个人经验的影响。该步骤的输出有3个:列举功能需求;列举特定体系结构需求;列举质量场景集合,它为体系结构需求提供具体测试;
    (2)设计体系结构:一个体系结构设计师在开发体系结构时,先做出一些设计决定,然后通过考虑不同的体系结构构造和视图来对这些设计决定进行分析。体系结构设计是一个迭代的过程,首先做出某些决策并进行分析,然后重新考虑并重新作决定,直到设计达到封闭;
    (3)文档化体系结构:体系结构的文档是为支持程序设计人员和分析人员而设计的。它是加深各种系统相关人员之间通信交流程度的有效工具,并能从中导出体系结构需求。创建并维护体系结构文档是长期性的软件体系结构取得 成功的关键因素之一;
    (4)分析体系结构:确定潜在的风险,验证所给出的设计能够处理所提出的质量需求,之所以要求外部评估人员的参与,是为了确保能够毫无偏见地进行检查,并保证评估结果的可信性;
    (5)实现体系结构:当把一个体系结构转变成代码,要考虑到各种常用的软件工程和项目管理知识:详细设计、编码实现、测试、配置管理等;
    (6)维护体系结构:对于体系结构来说,良好的文档、良好的发布和良好的维护都非常重要。如果缺少任何一方面的活动,那么体系结构将不可避免地偏离其初始原则;

    6、请根据P207图8-1分析服务提供者、服务请求者和服务注册中心三者的作用,以及它们之间的工作流程。

    答:
    作用:
    (1)服务提供者:发布自己的服务,并且对服务请求进行响应;
    (2)服务注册中心:注册已发布的Web Services,对其进行分类,并提供搜索服务;
    (3)服务请求者:利用服务注册中心查找所需的服务,然后使用该服务;
    工作流程:服务提供者托管可通过网络访问的软件模块,定义Web Services的服务描述并把它发布到服务注册中心;服务请求者使用查找操作来从服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web Services实现或同它交互。

    7、请根据P229图8-11介绍 UDDI的具体工作步骤。  

    答:
    (1)软件公司、标准化组织和程序员定义了企业如何在UDDI中注册的规划后,开始向UDDI注册中心发布这些规则的描述信息。这些规则被称为技术模型;
    (2)企业向UDDI注册中心注册关于该企业及其提供的Web Services的描述;
    (3)UDDI注册中心会给每个实体指定一个在相关程序中唯一的标识符,从而可以随时了解所有这些实体的当前情况;
    (4)电子交易场所和搜索引擎等其他类型的客户和商务应用程序使用UDDI注册中心来发现他们感兴趣的Web Services;
    (5)其他的企业就可以调用这些服务,方便、迅速地进行商务应用程序的动态集成;


    一.填空题(10分)——自己整理
    构件描述模型:
    3C模型、REBOOT模型、青鸟构建模型。
    构件分类方法:
    关键字分类法、刻面分类法、超文本组织法。
    软件体系结构的发展历程:
    “无体系结构”设计阶段、萌芽阶段、初级阶段、高级阶段。
    经典软件体系结构风格:
    管道—过滤器风格;
    数据抽象和面向对象风格;
    基于事件的隐式调用风格;
    层次系统风格;
    仓库风格和黑板风格;
    MVC风格;
    解释器风格;
    C2风格;
    典型的软件体系结构描述语言:
    UniCon
    C2
    Wright
    ACME
    基于XML的体系结构描述语言:
    XADL 2.0
    XBA
    XCOBA
    “4+1”模型由5个视图组成:
    逻辑视图
    过程视图
    物理视图
    开发视图
    场景
    设计模式的基本成分:
    模式名称、问题、解决方案、后果。
    体系结构设计方法:
    制品驱动的方法;
    用例驱动的方法;
    领域驱动的方法;
    模式驱动的方法;
    软件体系结构评估普遍关注的质量属性:
    性能
    可靠性
    可用性
    安全性
    可修改性
    功能性
    可变性
    可集成性
    互操作性
    软件体系结构评估的主要方式:
    基于调查问卷或检查表的评估方式;
    基于场景的评估方式;
    基于变量的评估方式;
    软件体系结构定义:
    软件体系结构={构件,连接件,约束}
    Web Services体系结构基于三种角色:
    服务提供者、服务注册中心、服务请求者。
    SOA(面向服务的体系结构)是一个Web Services的体系结构,共有三种角色:服务提供者、服务注册中心、服务请求者。
    3C模型:
    Concept:概念
    Content:内容
    Context:语境
    软件体系结构描述方法:(期中)
    图形表达工具
    模块内连接语言
    基于软构件的系统描述语言
    ADL
    软件体系结构描述框架标准


    github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

    展开全文
  • OKR管理体系基本框架

    千次阅读 2018-08-14 14:36:16
    一、什么是OKR体系? OKR体系的全称是Objectives & Key Results,即目标与关键成果。所谓OKR,O = Objective 可以理解为企业目标,KR =Key Results 可以理解为关键成果。浓缩在一起就是“为确保达成企业...

    一、什么是OKR体系?


    OKR体系的全称是Objectives & Key Results,即目标与关键成果。所谓OKR,O = Objective 可以理解为企业目标,KR =Key Results 可以理解为关键成果。浓缩在一起就是“为确保达成企业目标的关键成果分解与实施”。

    OKR是企业进行目标管理的一个简单有效的系统,能够将目标管理自上而下贯穿到基层。对一个项目来说,设定目标是非常重要的,因为这决定了如何去做,以及能做到何种程度。

    1、OKR 首先是沟通工具:团队中的每个人都要写 OKR,所有这些OKR都会放在一个文档里。任何员工都可以看到每个人在这个季度最重要的目标是什么,团队这个季度的目标是什么。

    2、OKR是努力的方向和目标:OKR代表你到底要去哪里,而不是你要去的地方具体在哪里。

    3、OKR必须可量化(时间&数量)。比如健身时设定锻炼目标,如果只是定义成「我们要努力提高身体素质」,肯定不是一个好的 OKR,因为无法衡量,好的OKR是「今年的跑步时间较去年增加一倍」。

    4、目标必须一致:制定者和执行者目标一致、团队和个人的目标一致。首先,制定公司的OKR;其次,每个团队定自己的 OKR;第三,每个工程师或设计师写各自的OKR。这三步各自独立完成,然后对照协调这三者的OKR。OKR跟个人绩效没有关系,因为OKR 系统的结果和每个人并不直接挂钩。

    5、目标要是有野心的,有一些挑战的,有些让你不舒服的。一般来说,“最佳”的 OKR 分数在0.6-0.7之间,如果某人只拿到1分,那么他 OKR 订的目标显然是野心不够的。但是低分数的人也不应该受到指责,而是应通过看他工作上的数据,帮助他改进下一季度的 OKR 目标。

    6、通过月度会议Review ,时时跟进OKR: 在月度会议上需要确定如何去达到目标,是一个帮助达到目标的过程。

    7、通过季度会议Review ,及时调整OKR:互联网的变化非常快,每季度有一个OKR 的 review,调整的原则是目标(Objectives)不变,只允许调整关键成果(Key Results)。

    为了更好的理解如何制定OKR体系,我们看个例子:

    目标(Objectives):为OKRs组织测评系统建立一个可实施的模型

    关键成果(Key Results):

    • 按时完成介绍OKR的presentation
    • 完成一个三个月的OKRs的案例
    • 让管理部门同意并制定一个3个月的测试机制

    二、OKR与KPI的区别


    OKR表示Objectives and Key Results,即目标和关键成果,是一套定义和跟踪目标及其完成情况的管理工具和方法。KPI表示Key Performance Indicators,即关键绩效指标,是一种可量化的、被事先认可的、用来反映组织目标实现程度的重要指标体系,也是企业绩效管理过程中一个实用而且有效的工具,更是绩效管理实现过程中的一个重要内容。KPI的本质是一种管理工具,它主要是从结果上来考察绩效,不关注过程,一切用指标来说话。

    OKR 主要的目的是为了更有效率的完成目标任务,并且依据项目进展来考核的一种方法。它的主要流程是这样的一个循环。

    1. 1、明确项目目标。
    2. 2、对关键性结果进行可量化的定义,并且明确达成目标的/未完成目标的措施。
    3. 3、共同努力达成目标。
    4. 4、根据项目进展进行评估。

    而对于国内来说,更熟悉的其实是 KPI (Key Performance Indicator),而 KPI 的流程则是这样的。

    1. 1、进行人事组织。
    2. 2、确定影响结果的关键性因素,并且确立 KPI 。
    3. 3、对关键绩效指标进行检测,并且进行实时监督。
    4. 4、对有错误行为的人进行监督,更甚者开除。

    通过两者的对比我们能够看到,OKR 主要强调的是对于项目的推进,而 KPI 主要强调的是对人事的高效组织,前者要求的是如何更有效率的完成一个有野心的项目,而后者则强调的是如何保质保量的完成预定目标。OKR相对于KPI而言,不是一个考核工具,而是一个更具有指导性的工具,说白了,是一个PLAN-DO-REVIEW的cycle。他存在的主要目的不是考核某个团队或者员工,而是时刻提醒每一个人当前的任务是什么。每个人都有自己的OKR,每个团队有团队的OKR,无论级别高低,团队大小,都需要制订和服从OKR。这个OKR在每个季度结束之后要做一个评分。评分高低并不直接决定一个员工的晋升和待遇,而更多的是提醒员工,这个季度工作完成的怎么样,未完成的工作为什么没有完成,下一阶段的工作重心是什么。 KPI 理论上是必须严格按照 SMART 标准制订的,是否达到甚至达到比例多少(小于 100% 还是大于 100%)都是要能测量的。但这就导致一个问题,有些事情值得去做,但在做出来一部分之前无法测量因此无法制订目标,这时候就陷入了先有鸡还是先有蛋的问题了。KPI 还有一个更严重的问题,那就是为了完成可测量的目标,有可能实际执行手段与该目标要达到的愿景正好相反。举个例子来说,我们希望用户更喜欢使用我们的产品,因为喜欢无法测量,所以把 PV 写进了 KPI 里面。但在实际执行过程中,我们可以把用户原本在一个页面上就能完成的事情分到几个页面上来完成,结果 PV 达到了 KPI 指定的目标,但用户其实更讨厌我们的产品了。大家如此应付 KPI 是因为 KPI 跟绩效考核挂钩。如果 KPI 达不到那就会影响奖金,所以就算违背公司利益,违背用户利益,也要把自己的 KPI 完成了,把部门的 KPI 完成了。

    KPI存在的缺陷:

    1. 1、没有人对最终结果负责,每个人只对自己的过程负责。
    2. 2、人的主观能动性被压抑。
    3. 3、结果高度依赖机器和管理者的指令。

    OKR 解决了 KPI 的这些缺陷。首先它和绩效考核分离,把绩效考核交给 peer review(相当于中国公司的 360 度评价)来做。然后它强调 Key Result 必须服从 Objective,所以如果你在 Objective 上写了要让用户喜欢我们的产品,但你实际执行 Key Result 的手段违反了这一点的话,谁都能看得出来。既然 Key Result 只是用来服务于 Objective 的,那就没必要像 KPI 那样一早制订好然后强制执行了。你可以在做的过程中随意更改 Key Result,只要它们还是服务于原本的 Objective 就行。

    OKR 最重要的作用就是帮助你「stay focus」,「stay focus」又能帮助你「make impact」。总的来说,绩效考核的核心都是 impact(Google的impact文化。衡量的是员工为Google做出了多大的impact,而不是员工是不是很努力地干了很多活,也不是员工是不是听老板的话完成了老板布置的任务。),而测量的手段都是 peer review。其实在没有 OKR 的情况下,这套绩效考核机制还是完全能操作的,但参与者就可以因为缺乏引导而没办法实现他们能实现的最大 impact。OKR 就是让你在每个季度开始之前想一想,有哪些事情从 impact 的角度来说是值得做的,有哪些事情是你想做的,然后取个交集,再列举若干有一定概率(通常建议是 2/3)能达成目标的手段。除了 make impact,OKR 还能用来引导你 stay focus 在别的事情上。 如果要说 OKR 和 KPI 的区别,区别就在于 KPI 只能让驴使劲走,而 OKR 用于保证驴头朝正确的方向。有些驴拼命想往前走,不希望落后于别人,这时候 OKR 用于帮助驴少走曲线。有些驴本来就不想走,这时候就需要 KPI 充当鞭子了。一家公司能不能用 OKR,首先要看有没有正确的驴。

    OKR考核:“我要做的事”,KPI考核:“要我做的事”,理解不同,但二者都强调有目标,同时也需要有执行力。OKR的思路是先制定目标,然后明确目标的结果,再对结果进行量化,最后考核完成情况。KPI 的思路也是先确定组织目标,然后对组织目标进行分解直到个人目标,然后对个人目标进行量化。

    OKR 和 KPI 两者谁都无法真正的替代对方,因此谁取代谁并不重要,找到适合的绩效评估方法,这才是重要的事情。比如说对于销售来讲,它更在意的是如何保持持续稳定的收入,因此就需要的是更硬性的标准来约束销售人员能够完成任务,所以其需要的是 KPI 而不是 OKR 。而对于营销团队来讲,他们最需要的是如何将影响最大化,而过于刻板的 KPI 就限制了营销团队的灵活性,因此其更适合的是 OKR ,而不是 KPI 。

    三、如何实施OKR?


    基本的要求:

    1.最多5个O,每个O最多4个KRs。

    2.百分之六十的O最初来源于底层。下面的人的声音应该被听到,这样大家工作会更有动力。

    3.所有人都必须协同,不能出现任何命令形式。

    4.一页写完最好,两页是最大限值了。

    5.OKRs并不是绩效评估的工具。对个人来说,它起到很好的回顾作用。能快速明了地让自己看到我做了什么,成绩是怎么样。

    6.分数0.6-0.7是不错的表现,因此0.6-0.7将是你的目标。如果分数低于0.4,你就该思考,那个项目究竟是不是应该继续进行下去。要注意,0.4以下并不意味着失败,而是明确什么东西不重要及发现问题的方式。分数永远不是最重要的,除了是作为一个直接的引导作用。OKR不是绩效考核的武器!每个季度末对关键成果进行考核,完成60-70%就算好,如果100%完成,说明你的目标设定过于简单。

    7.只有在KRs仍然很重要的情况下,才持续为它而努力。

    8.有个联合会组织来保证每个人都向同样的目标行进。(事实上OKRs实施过程中,你能够获得大家的认可和帮助,这是很有趣的事情)

    基本的流程:

    1.设定目标。(从战略开始确定年度目标,季度目标) 目标务必是具体的、可衡量的,例如不能说笼统地说“我想让我的网站更好”,而是要提出诸如“让网站速度加快30%”或者“融入度提升15%”之类的具体目标;不能说“使gmail达到成功”而是“在9月上线gmail并在11月有100万用户”。

    目标要是有野心的,有一些挑战的,有些让你不舒服的。一般来说,1为总分的评分,达到0.6-0.7是较好的了,这样你才会不断为你的目标而奋斗,而不会出现期限不到就完成目标的情况。员工通常每季度会制定4到6个目标,目标太多也会令人焦头烂额。

    目标必须达成共识,目标必须是在管理者与员工直接充分沟通后的共识。没有达成共识的目标不能算作目标,目标的设定以达成共识为终点。

    实施的关键流程:从上至下,目标的设立顺序应该是公司到部门到组到个人。个人自己想做什么,和管理者想他做什么一般来说是不会完全相同的。那他可以通过先查阅上层的目标,在自己想做的事情范围内找到能对公司目标有利的部分,将他拿出来和自己的管理者进行讨论,做权衡取舍。某种情况下,很有可能这个自己想做的东西,会变成公司今后改变的发展方向。

    2.明确每个目标的KRs(从季度目标到“关键成果”的分解)所谓的KR就是为了完成这个目标我们必须做什么? KR是必须具备以下特点的行动:

    • 必须是能直接实现目标的;
    • 必须具有进取心、敢创新的可以不是常规的;
    • 必须是以产出或者结果为基础的、可衡量的,设定评分标准;
    • 不能太多,一般每个目标的KR不超过4个;
    • 必须是和时间相联系的。

    目标既要有年度KRs,也有季度KRs:年度KRs统领全年,但并非固定不变,而是可以及时调整,调整要经过批准;季度KRs则是一旦确定就不能改变的。在这里要切记可以调整的是KRs,而不是目标。目标不能调整,措施和方法(KRs)可以不断完善。同样KRs的设定也必须是管理者与员工直接充分沟通后的共识。

    3.推进执行(从关键成果到“行动计划“)

    当有了关键成果(期望的结果)后,就要围绕这个具体的目标来分解任务了。所以,每项关键成果就会派生出一系列的任务,交给不同的同事负责。关键成果负责人就成了名符其实的项目经理,来组织协调大伙。因此,关键成果的项目经理应当是团队非常重要的成员,他们能够调度和影响企业资源,如果他还不具备这个能力,就把这个权力给他。至少,项目经理和企业决策者之间应当保持绝对通畅的沟通。

    4.定期回顾。

    每个季度做回顾。到了季度末,员工需要给自己的KRs的完成情况和完成质量打分——这个打分过程只需花费几分钟时间,分数的范围在0到1分之间,而最理想的得分是在0.6到0.7之间。如果达到1分,说明目标定得太低;如果低于0.4分,则说明可能存在问题。

    每个员工在每个季度初需要确定自己本季度的 OKR,在一个季度结束后需要根据自己这个季度的工作完成情况给 OKR 打分。每半年公司会进行一次 Performance Review,主要是 review 员工过去半年的绩效,并根据 Performance Review 的结果变更 Job Ladder(业务职级)和薪酬。值得一提的是,所有的个人Performance Review 的成就内容及级别都是全公司共享公开的。这个对于很多公司来说是不可想象的,因为一方面可以做到更为公平和透明,另一方面也给每位同事提供了更好学习和成长自己的样本,激励大家在产品研发中更高质量的挑战和要求自己。

    执行的关键:

    1.每个季度和年度都有OKRs,并保持这样一个节奏的。每个季度都打分。年度的OKRs不是一下就敲定了的。比如你在12月设了下季度和年度的OKRs,往后集中精力在实施季度OKRs上,毕竟这是眼前的目标。而过了一段时间,你可以验证年度OKRs是不是正确的,并不断修订它。年度的OKRs是指导性的,并不是约束。

    2.可量化的。O和KR的不同:O要是有挑战性的,如果是板上钉钉的事情就是不够的;KRs能很好的支持O的完成,是要明显可量化的,便于评分的

    3.个人、组、公司层面上均有,个人、组、公司OKRs的不同:个人OKRs是你个人展现你将会做什么;组的OKRs不是个人打包,是组优先做的事情;公司OKRs是高层对整个公司的展望

     

    最后总结下OKR的好处有哪些?

    1.规范思维,核心目标突出;

    2.沟通更精准,让每个人都很清楚什么对他们是最重要的;

    3.建立测量过程的指标,时刻了解我们距离目标还有多远;

    4.使组织的努力更聚焦。

    展开全文
  • 数据产品-指标标签体系构建

    千次阅读 2020-04-14 11:37:07
    数据产品-指标标签体系构建 作为刚毕业不到一年的数据产品经理,今天和大家分享一下我接触到和认知范围内的数据产品经理关于数据指标标签体系的构建过程是什么样子的 1、解读数据库数据 ①在我们公司(家居互联网...

    作为刚毕业不到一年的数据产品经理,今天和大家分享一下我接触到和认知范围内的数据产品经理关于数据指标标签体系的构建过程是什么样子的

    1、解读数据库数据

    ①在我们公司(家居互联网行业),我们作为数据部门,能够查看公司全部的数据,所以我们日常会接收到来自其他部门的提数申请,有简单的导出关于家居行业中设计方案的素材的使用情况、也有需要我们经过数据加工分析后的数据分析表等,说这个不是想说我们日常工作只是提数分析,而是想说,在一个数据中台和业务中台还没成体系化的公司中,开放这样一个数据出口,能够让我们快速接触到各条业务线中对于数据的需求情况,以及各业务线关注的业务信息。
    ②通过自己试用期期间的业务积累,当然不当当通过上面的提数通道了解到的,以及每次数据需求的积累,给我最大的感受就是:作为试用期的数据产品经理,最需要的就是对公司底层数据的熟悉度,已经能够运用sql查询出业务方所需要的数据,并能在excel进行分析。
    ③回顾自己对解读数据库数据的认知经历,大概就是:业务需求->业务对应的数据库是什么->不同库之间是怎么关联的,包括业务关联和字段关联->该库里面存放的表的业务是什么->表里面的字段含义是什么。对于前部分的业务和数据库、数据库和数据库之间的关联,在我入职时去年的师姐已经整理好了好几份比较详细的文档,我觉得这样的数据逻辑图非常重要,非常能够辅助我快速认知业务关系和数据库关系,样例如下图:
    在这里插入图片描述

    2、解读业务需求

    通过试用期期间对底层数据有了很好的认知之后,这里的很好认知我认为至少是你知道大部分数据库都是存放什么样子的业务数据,每个库里面经常用的表有哪些,这些表里面那些字段是比较常用的,并能够在不看相关的解释文档的前提下,运用sql快速查找出你想要的数据。有了数据认知后,我觉得对自己核心竞争力有帮助的不是你对底层数据的了解情况,更重要的是你能够把你接触到的数据需求汇总成为具体的业务共性,就比如:常用部门想知道某些东西的拖拽频率、使用频率。但他们的最终需求都是想要把更好的东西推荐给用户,这就是一个共性的东西,而作为数据产品经理,就是需要把这些共性的需求聚合成为整个能够指导业务发展的东西,并用相关的指标标签进行描述。下面这个是之前的一个项目中构建的一些指标标签的部分截图:
    在这里插入图片描述

    3、指标逻辑实现

    ①构建完相关业务的指标标签体系之后,就是又要回归底层数据了。像我之前做的项目,我们所有新构建的指标和标签,都是需要通过大数据部门,重新建立新的数据库和数据表,因此我们需要对每个字段的源数据逻辑和数据聚合逻辑进行详细的中文说明和sql说明,一方面是便于大数据进行开发建表,另一方面是方面后面内容推出后,其他部门的人对我们东西使用的方便性。在这个过程中,我才后知后觉原来数据产品已经是半个开发了,不仅要梳理底层指标sql,对于可视化在BI界面上面的sql也要我们来梳理。但是有个好处就是,作为数据产品,我暂时还不需要考虑到sql的效率问题,因为我们的sql只是辅助大数据的人员理解指标和标签,他们在新建表的时候会对你的sql进行优化提升。
    ②为了方便指标的实现,前期还是需要做很多相关的整理工作的,比如对指标进行分类整理,因为你不可能把所有的指标标签都建在一张表里面,所以还需要了解一下建表的一些简单事项,比如标关联、索引等,比如要是大数据的小伙伴人比较好的话,会帮你一起想这些东西。这里说下指标和标签的区别,指标可能就是最基础,常用用户认知的,比如使用量,近七天活跃这些,但是标签是对这些进行分层处理,比如使用量,那多少时高,多少是低,可能你就需要通过聚类算法,构建出一个能够衡量高低的定义了。比如我当初构建的其中一个标签:素材价值度,通过对历史使用数据的聚类分析,后面构建出的公式和定义为:

    价值度划分=>划分为五个等级:一星-两星-三星-四星-五星
    价值量=搜索次数0.3+在优秀方案中使用次数0.4+收藏数*0.3
    一星:价值量=0
    二星:0<价值量<=1.5
    三星:1.5<价值量<=10
    四星:10<价值量<=40
    五星:价值量>40

    接下来讲下指标标签的具体实现过程,这里我会拿一些例子来做解释,主要是讲解一下sql的实现,当然,其实我自己的sql也不是很好,但是我觉得够用就行,能够满足自己日常业务工作的数据提取需求,很多函数都是在业务中在慢慢去百度查找。之前的项目我是把全部构建的指标和在BI上面可视化的逻辑分成了五个表,下面只对部分进行说明:
    在这里插入图片描述
    数据逻辑分层表
    ①基本信息表中:主要是对一些不可或缺的字段的直接迁移,因为不管构建什么样子的标签,有些基本属性是不可或缺的,所以这一块 的逻辑一般是比较简单的,一般是直接从源库中把字段提取出来就行。这里有个建议就是:竟然我们的逻辑是写给大数据开发看的,所以就尽可能的解释的详细,可以减少很多后面的沟通工作

    #素材的基本信息#
    #放置位置:pmc.designmaterial#
    #字段:素材名称-素材id-素材url-上传时间-上传人员-上传部门-上传机构-产品id#
    #是否在3D中-是否公用-是否可渲染-素材标志-材质属性-使用区域#
    #-素材是否有商品-零售价格-批发价格-成本价格-搭配组合内容-放置规则-素材颜色-是否关联到组合#
    select materialid,materialname,imagepath,posttime,author,deptid,organid,
    productid,IS3D,ispublic,isrender,modelflag,property,usearea, 
    ishasproduct,retailprice,wholesaleprice,costprice,placeheight,placerule,color,isrelate
    from pmc_kudu.designmaterial
    

    ②使用信息表中:主要是对一些常用的使用情况进行统计,因为有很多业务部分会经常想知道某些商品素材的七天使用情况、30天使用情况、收藏情况等等,每次我们查询的时候都需要关联很多表才能够查出来,效率非常低下,所以就考虑直接构建相关字段,便于后面查找。当然,这里不是说想构建啥就能构建啥的哈,因为每个字段后台每天都回去更新,都会消耗服务器资源的呀,而且后面项目结束时,所有构建的字段都需要有合理的解释,说明你构建的意义的。所以还是回归产品的初心,做什么都要讲价值。

    #以下的使用信息都只统计一个时间段,其他时间段的只要改变时间信息就可以#
    #统计素材的拖拽信息,近30天拖拽次数#
    select materialid,sum(dragTimes) as darg_cnt30,substr(sendtime,1,10) as nowtime from 3D_point_kudu.materialDragInfo 
    where datediff(now(),sendtime )<=30
    group by materialid,substr(sendtime,1,10)
    
    #统计素材在UGC中的使用次数,近30天#
    select a.materialid,sum(a.dragtimes) as use_yx_cnt30,a.nowtime from
    (select materialid,dragtimes,schemeid,substr(sendtime,1,10) as nowtime from 3D_point_kudu.materialInfo
    where datediff(now(),sendtime )<=30)a
    left join 
    (select id,scheme_name from ugc_scheme_kudu.home_scheme)b
    on a.schemeid=b.id
    group by a.materialid,a.nowtime
    

    ③标签表:标签表是构建指标标签的核心,因为这里的所有标签的合理程度一定要明确,而且逻辑一定要说得通,要不很容易别人就质疑你构建的标签合不合理或者必不必要。特别是用了相关数据挖掘的东西的话,也需要做相关的技术说明。我觉得构建标签也是最难的一块,当你对业务认知不深的时候,你所构建的标签所描述的东西就很浅,这也是我在做完这个项目后一直在思考的问题。但是东西总是循序渐进的,那时候的自己也懂的很少。所以我建议以后再做相关的数据产品时,一定要多调研,不管是对自己公司内部的还是对公司外部竞品相关的,都要有足够的认知。还有就是标签的sql逻辑一般比较复杂,当初有好几个都是我中文描述逻辑,然后让同组的小伙伴帮忙写的,还好她们人都比较好,所以我学的sql很多也是她们教我的,还是挺感谢的。下面就只举两个标签吧,偷偷说下,查询效率超级低,要跑很久才能跑出数据哈哈,不过大数据的小伙伴会帮你优化的,不用管那么多。

    --1、素材价值度
    #价值度划分=>划分为五个等级:一星-两星-三星-四星-五星#
    #字段名:active_value#
    #价值量=搜索次数*0.3+在优秀方案中使用次数*0.4+收藏数*0.3
    #一星:价值量=0
    #二星:0<价值量<=1.5
    #三星:1.5<价值量<=10
    #四星:10<价值量<=40
    #五星:价值量>40
    select  z.materialid,
    case when (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)=0 then '一星'
         when (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)>0 and (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)<=1.5 then '两星'
         when (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)>1.5 and (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)<=10 then '三星'
         when (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)>10 and (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)<=40 then '四星'
         when (isnull(z.sc_cnt,0)*0.3+isnull(h.ss_cnt,0)*0.3+isnull(y.yxsy_cnt,0)*0.4)>40 then '五星'
         end as active_value
    from 
    (
    --统计素材的收藏次数,没有时间信息#
    select c.materialid,d.collectcount as sc_cnt from
    (select materialid,materialname from pmc_kudu.designmaterial)c
    left join 
    (select materialid,collectcount from pmc_kudu.modelcollectext)d
    on c.materialid=d.materialid
    )z
    left join
    (--统计素材在优秀方案总的使用次数,近30天#
    select a.materialid,sum(a.dragtimes) as yxsy_cnt from
    (select materialid,dragtimes,schemeid from 3D_point_kudu.materialInfo
    where datediff(now(),sendtime )<=90)a
    inner join 
    (select id,scheme_name from ugc_scheme_kudu.home_scheme)b
    on a.schemeid=b.id
    group by a.materialid
    )y
    on z.materialid=y.materialid
    left join 
    (--统计被搜索次数
    select d.materialid,a.cnt as ss_cnt from pmc_kudu.designmaterial d 
    left join 
    (select value,count(uuid) cnt from 3d_point_kudu.datainfo 
    where value in (select materialid from pmc_kudu.designmaterial) and datediff(now(),sendtime )<=90
    group by value)a
    on d.materialid = a.value
    )h
    on z.materialid=h.materialid
    
    --20、优推指示
    #字段名:advantage_level
    #一级指示(近7天都被拖拽)-二级指示(近14天都被拖拽)-三级指示(近21天都被拖拽)-四级指示(近28天都被拖拽)-五级指示(近35天都被拖拽)
    select materialid,
    case when max(cnt)=7 then '一级指示'
         when max(cnt)=14 then '两级指示'
         when max(cnt)=21 then '三级指示'
         when max(cnt)=28 then '四级指示'
         when max(cnt)=35 then '五级指示'
         end as advantage_level
    from (
    select materialid,count(distinct substr(sendtime,1,10)) as cnt from 3D_point_kudu.materialDragInfo 
    where datediff(now(),sendtime )<=7 group by materialid having count(distinct substr(sendtime,1,10))=7
    union all
    select materialid,count( distinct substr(sendtime,1,10))as cnt from 3D_point_kudu.materialDragInfo 
    where datediff(now(),sendtime )<=14 group by materialid having count(distinct substr(sendtime,1,10))=14
    union all
    select materialid,count( distinct substr(sendtime,1,10))as cnt from 3D_point_kudu.materialDragInfo 
    where datediff(now(),sendtime )<=21 group by materialid having count(distinct substr(sendtime,1,10))=21
    union all
    select materialid,count( distinct substr(sendtime,1,10))as cnt from 3D_point_kudu.materialDragInfo 
    where datediff(now(),sendtime )<=28 group by materialid having count(distinct substr(sendtime,1,10))=28
    union all
    select materialid,count( distinct substr(sendtime,1,10))as cnt from 3D_point_kudu.materialDragInfo 
    where datediff(now(),sendtime )<=35 group by materialid having count(distinct substr(sendtime,1,10))=35
    )a
    group by materialid
    

    4、可视化产品

    经过上面的指标和标签逻辑梳理后,就是要可视化成数据产品了。在对于一个数据中台还很不完善的公司来说,要想让别人看到我们的价值,最好的方式就是拿出实际的产品出来,因此作为数据产品,我们需要想数据将构建的指标和标签通过业务方所需要的方式进行可视化,而且数据产品和传统的产品有很大的不同,在我认为哈,就是我们的数据产品面向的群里是很分散的,因此我看可视化的东西要很有共性并能够满足绝大部分的需求,而且数据产品最注重的就是逻辑性,这点也是我现在在不断学习的。这里涉及到相关隐私问题,就不把我们最后实现的产品放出来了哈。

    5、对外输出

    通过这段时间的工作,我深深感受到对外输出的重要性,需要准备好相对应的材料,而且一定要让别人看到你的专业性,因为其实公司很多人都不知道你的水平,你只有准备的足够充分,东西做的足够好,他们才会感受到你的专业性,才会认同你。像我们当初的上线会发很正式的邮件,画出对应的逻辑图,我觉得当初画的这个还挺好看的哈哈
    在这里插入图片描述
    最后,这篇文章是基于我毕业不到一年的认知所写的,有写得不对的地方欢迎和我交流。因为自己认识的做数据产品经理的朋友也比较少,不太清楚别人的数据产品经理是什么样子的。所以有想一起学习成长的朋友可以加个qq:624488342 ,一起交流沟通哈!

    展开全文
  • ESB 企业服务总线基本内容概述

    千次阅读 热门讨论 2016-10-09 15:26:18
    整个架构体系里面分为三个组件或子系统,即偏开发态的设计器,偏运行态的ESB核心引擎和SOA治理管控平台三个方面的内容。以上三者组合和集成形成一款完整的ESB服务总线产品。对于三者之间的关系可以简单的描述为:

    ESB全称为Enterprise Service Bus,即企业服务总线。

    它是传统中间件技术与XML、Web服务等技术结合的产物。

    ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

    这里写图片描述

    整个架构体系里面分为三个组件或子系统,即偏开发态的设计器,偏运行态的ESB核心引擎和SOA治理管控平台三个方面的内容。以上三者组合和集成形成一款完整的ESB服务总线产品。对于三者之间的关系可以简单的描述为:

    首先对于ESB总线引擎是一个完全相对独立的内容,即常说的ESB的Server端,一个完整的ESB引擎一般都会集成消息中间件的能力。类似ServiceMix的ESB可以看到核心是基于OSGI运行框架下的ActiveMQ+CXF组件来实现基础核心功能。没有设计器和管控平台,引擎也可以独立部署和运行,即可以自己写代码或写配置文件,将开发好的服务包部署到ESB引擎环境里面。

    其次是ESB设计器,设计器是属于开发和设计态的一个内容,重点则是对http,rest,已经服务+DB,消息等各种内容进行集成。

    最后一个内容是SOA管控平台,主要的作用是实现服务的全生命周期管理,包括服务的元数据管理,服务目录库,服务的申请,服务的开通和鉴权,服务运行日志审计和监控,服务运行分析,服务预警,服务SLA等各种功能。即SOA管控平台提升了对ESB引擎本身的管控和治理能力。

    一、ESB的五个基本功能:

      
    1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址进行管理。
     
    2)传输服务:确保通过企业总线互连的业务流程间的消息的正确交付,还包括基于内容的路由功能。   

    3)中介:提供位置透明的路由和定位服务;提供多种消息传递形式;支持广泛使用的传输协议。   

    4)多服务集成方式: 如JCA,Web服务,Messaging ,Adaptor等.   

    5)服务和事件管理支持: 调用服务的记录、测量和监控数据;提供事件检测、触发和分布功能。

    二、ESB的八个扩展功能:

     
    1) 面向服务的元数据管理: 他必须了解被他中介的两端,即服务的请求以及请求者对服务的要求,以及服务的提供者和他所提供的服务的描述;   

    2) Mediation :它必须具有某种机制能够完成中介的作用,如协议转换;   
    3) 通信:服务发布、订阅,响应 请求,同步异步消息,路由和寻址等;   

    4) 集成: 遗留系统适配器,服务编排和映射,协议转换,数据变换,企业应用集成中间件的连续等。   

    5) 服务交互: 服务接口定义,服务实现的置换,服务消息模型,服务目录和发现等。   

    6) 服务安全: 认证和授权、不可否认和机密性、安全标准的支持等;   

    7) 服务质量: 事务,服务的可交付性等;   

    8) 服务等级: 性能、可用性等。 ESB 中最常提到的两个功能是消息转换和消息路由。

    三、ESB的出现改变了传统的软件架构

    ESB 是传统中间件技术与XML、Web服务等技术相互结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
    

    四、企业服务总线(ESB)的用处

    ESB 不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法。
    

    五、企业服务总线(ESB)的应用特征

    大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来越复杂、繁琐的企业级信息系统平台。面向服务体系架构(SOA)是能够将应用程序的不同功能单元通过服务之间定义良好的接口和契约联系起来。SOA使用户可以不受限制地重复使用软件、把各种资源互连起来,只要IT人员选用标准接口包装旧的应用程序、把新的应用程序构建成服务,那么其他应用系统就可以很方便的使用这些功能服务。 
      
     支撑SOA的关键是其消息传递架构-企业服务总线(ESB)。ESB是传统中间件技术与XML、Web服务等技术相互结合的产物,用于实现企业应用不同消息和信息的准确、高效和安全传递。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务协调运作,实现不同服务之间的通信与整合。
    
    展开全文
  • 京东大数据平台产品体系揭秘

    千次阅读 2015-03-31 09:48:04
    对于刚刚成长起来的京东大数据平台来说,数据产品并不是一个...订单交易,仓储物流等众多京东系统都会产生数据,仅日志内容每天的大小约为100TB,大量的数据如何统一汇总到数据仓库来呢?这就需要调度产品来实现数据
  • 订单交易,仓储物流等众多京东系统都会产生数据,仅日志内容每天的大小约为1TB,大量的数据如何统一汇总到数据仓库来呢?这就需要调度产品来实现数据生产。京东调度平台发展至今已经是3.0版本,每一次的更新迭代都...
  • 他从行业背景及建设目标、业务中台的理念、技术体系与建议、产品体系与建议、案例分享五个方面进行了分享。在分享中,他主要介绍了客户管理系统、全渠道营销、泛电商、售后服务的解决方案。以下内容根据直播视频整理...
  • 发展到现在,做了几个产品的数据工作,对指标体系概念以及规划方法有一定的积累,总结出来作为知识储备。 What is指标体系 百度百科的专业定义“评价指标体系是指由表征评价对象各方面特性及其相互联系的多个指标,...
  • APP产品的数据分析体系

    千次阅读 2018-11-17 22:19:34
    在当前的互联网企业中,我们经常提到数据驱动,那么具体如何做好数据驱动,是产品部门,运营部门和数据部门相互协作相互支持共同面对的问题,主要的目标说白了就是拉新促活提留存。要通过数据进行驱动,那么必须要有...
  • 基于IPD的产品开发体系及实践

    千次阅读 2018-12-03 09:54:01
    导言:在自己从事产品研发实践和管理的十几年职业生涯里,经历过以瀑布式开发为主导的产品研发模式,经历过以敏捷开发为主导的产品研发模式,其相应的背景也是在软件项目和互联网软件平台为主导的情境下。...
  • 知识付费与内容变现是近两年的热词,自媒体平台让个人得以发声,优质IP积累了垂直领域的粉丝群后,如何变现与精耕运维成为了新一轮的聚焦,本文将探讨内容变现领域该如何做会员体系的设计。 结构图 一、 About ...
  • Intel多核程序设计培训的基本体系

    万次阅读 热门讨论 2006-07-26 12:16:00
    一般来说大公司的专项技术培训都经过精心的设计,体系比较完整,知识点覆盖比较全,强调实验和动手环节。Intel这次的多核技术培训也是这样,从线程基础知识到多线程程序设计的方法模型,从OpenMP到VTune工具,体系...
  • 今日头条的走红带动了“个性化推荐”的概念,自此之后,内容型的产品,个性化算法就逐渐从卖点变为标配。 伴随着“机器学习”,“大数据”之类的热词和概念,产品的档次瞬间提高了很多。而各种推荐算法绝不仅仅...
  • 微服务体系

    万次阅读 2019-12-19 17:14:04
    标题微服务体系 微服务 1.1     基本概念 1.1.1       什么是微服务? 微服务架构是SOA思想某一种具体实现。是一种将单应用程序作为一套小型服务开发的...
  • 上一篇文章《【推荐架构day2】微博怎么给你推荐信息的:背后基本原理》介绍了推荐产品,给大家有一个初步的认识:微博推荐的目标和使命、推荐产品有哪些以及推荐的分类角度。本文将会给大家描述当前微博推荐的体系...
  • 互联网公司的技术体系

    千次阅读 热门讨论 2016-09-29 23:40:25
    互联网,是个较为明确且范围有限的概念。因此,互联网技术相对也是有限的,互联网公司的技术体系也是有限的。 站得更高一点看,它也就“那么点技术”。
  • 售前培养体系

    千次阅读 2018-09-11 08:27:09
    售前培养体系 本文章针对产品型售前的培养思路进行梳理: 技术的基本功 售前的基本技能 *公司产品的掌握 产品的应用场景分析 产品的知识点问答 友商及产品对比分析 泛竞品对比分析 技术能力的升级 培养思路 ...
  • 软件体系结构基础

    千次阅读 2020-12-27 12:57:33
    软件体系结构基础,对软件体系结构做简要总结,通用模型可以应用于许多不同类型的系统。此部分选择有代表性的结构进行总结。体系结构的模式选择设计模式做阐述,风格选择典型的三种体系结构风格做阐述,框架选择MVC...
  • 分布式微服务架构体系详解

    万次阅读 多人点赞 2018-07-10 23:30:02
    微服务架构的技术体系、社区目前已经越来越成熟。在最初系统架构的搭建,或者当现有架构已到达瓶颈需要进行架构演进时,很多架构师、运维工程师会考虑是否需要搭建微服务架构体系。虽然很多文章都说微服务架构是复杂...
  • CMM体系

    千次阅读 2011-07-25 01:21:08
    第一级实际上是一个起点,任何准备按CMM体系进化的企业都自然处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,可以向下
  • PKI体系

    千次阅读 2018-07-09 17:07:30
    实际上,如何安全地管理和分发证书可以遵循 PKI(Public Key Infrastructure)体系来完成。 PKI 体系核心解决的是证书生命周期相关的认证和管理问题,在现代密码学应用领域处于十分基础和重要的地位。 需要注意,...
  • 软件体系结构

    千次阅读 2014-10-30 20:28:50
    软件体系结构笔记 L1.pdf 课程简介源起... 现状系统分析员遇到的困境解决之道 基于软件体系结构的开发 示意图软件体系结构的生命周期 体系结构的非形式化描述 通常使用自然语言描述概念和...
  • 了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。 1、Connectors指的是不同语言中与SQL的交互 2、Management Serveices & Utilities: 系统管理和控制工具 3、...
  • 会员体系的存在已经有了很长的历史,并且广泛应用于各行各业。本文以京东为例,分析其会员结构和激励策略,希望能给会员体系的构建与激励策略带来优化思路。
  • 软件体系结构 章一

    千次阅读 2006-12-26 21:27:00
    2)软件过程:是为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。又称软件生存周期过程,是在软件生存周期内达到一定目标而必须实施的一系列相关过程的集合。3)安装在软件生
  • 用户激励体系

    千次阅读 2020-05-06 13:52:44
    什么是用户激励体系 在互联网产品中,“通过给...设计激励体系,一方面是为了提升用户活跃度,增加留存率,使用户的粘性随之增加,另一方面也是为了度量每个用户在产品中的成长过程和价值,便于分群运营。 常见的...
  • 目标管理体系:OKR

    千次阅读 2016-09-09 14:09:01
    一、什么是OKR体系? OKR体系的全称是Objectives & Key Results,即目标与关键成果。所谓OKR,O = Objective 可以理解为企业目标,KR =Key Results 可以理解为关键结果。浓缩在一起就是“为确保达成企业目标的关键...
  • 信息安全保障体系规划方案

    万次阅读 多人点赞 2018-06-21 17:04:59
    一、 概述1.1引言本文基于对XX公司信息安全风险评估总体规划的分析,提出XX公司信息安全技术工作的总体规划、目标以及基本原则,并在此基础上从信息安全保障体系的视角描绘了未来的信息安全总体架构。本文内容为信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,322
精华内容 47,328
关键字:

产品体系的基本内容