Zhiyong's profileIvan's spacePhotosBlogListsMore Tools Help

Blog


    Colt - a set of Open Source Libraries for High Performance Scientific and Technical Computing in Java

    Colt provides a set of Open Source Libraries for High Performance Scientific and Technical Computing in Java.

    Scientific and technical computing, as, for example, carried out at CERN, is characterized by demanding problem sizes and a need for high performance at reasonably small memory footprint. There is a perception by many that the Java language is unsuited for such work. However, recent trends in its evolution suggest that it may soon be a major player in performance sensitive scientific and technical computing. For example, IBM Watson's Ninja project showed that Java can indeed perform BLAS matrix computations up to 90% as fast as optimized Fortran. The Java Grande Forum Numerics Working Group provides a focal point for information on numerical computing in Java. With the performance gap steadily closing, Java has recently found increased adoption in the field. The reasons include ease of use, cross-platform nature, built-in support for multi-threading, network friendly APIs and a healthy pool of available developers. Still, these efforts are to a significant degree hindered by the lack of foundation toolkits broadly available and conveniently accessible in C and Fortran.

    http://dsd.lbl.gov/~hoschek/colt/index.html

    JAMA : A Java Matrix Package

    JAMA : A Java Matrix Package

    Background

    JAMA is a basic linear algebra package for Java. It provides user-level classes for constructing and manipulating real, dense matrices.  It is meant to provide sufficient functionality for routine problems, packaged in a way that is natural and understandable to non-experts.  It is intended to serve as the standard matrix class for Java, and will be proposed as such to the Java Grande Forum and then to Sun.  A straightforward public-domain reference implementation has been developed by the MathWorks and NIST as a strawman for such a class.  We are releasing this version in order to obtain public comment. There is no guarantee that future versions of JAMA will be compatible with this one.

    A sibling matrix package, Jampack, has also been developed at NIST and the University of Maryland. The two packages arose from the need to evaluate alternate designs for the implementation of matrices in Java. JAMA is based on a single matrix class within a strictly object-oriented framework. Jampack uses a more open approach that lends itself to extension by the user. As it turns out, for the casual user the packages differ principally in the syntax of the matrix operations. We hope you will take the time to look at Jampack along with JAMA. There is much to be learned from both packages.

    Capabilities. JAMA is comprised of six Java classes: Matrix, CholeskyDecomposition, LUDecomposition, QRDecomposition, SingularValueDecomposition and EigenvalueDecomposition.

    The Matrix class provides the fundamental operations of numerical linear algebra.  Various constructors create Matrices from two dimensional arrays of double precision floating point numbers.  Various gets and sets provide access to submatrices and matrix elements.   The basic arithmetic operations include matrix addition and multiplication, matrix norms and selected element-by-element array operations.  A convenient matrix print method is also included.

    Five fundamental matrix decompositions, which consist of pairs or triples of matrices, permutation vectors, and the like, produce results in five decomposition classes.  These decompositions are accessed by the Matrix class to compute solutions of simultaneous linear equations, determinants, inverses and other matrix functions.  The five decompositions are

    • Cholesky Decomposition of symmetric, positive definite matrices
    • LU Decomposition (Gaussian elimination) of rectangular matrices
    • QR Decomposition of rectangular matrices
    • Eigenvalue Decomposition of both symmetric and nonsymmetric square matrices
    • Singular Value Decomposition of rectangular matrices
    The current JAMA deals only with real matrices. We expect that future versions will also address complex matrices. This has been deferred since crucial design decisions cannot be made until certain issues regarding the implementation of complex in the Java language are resolved.

    The design of JAMA represents a compromise between the need for pure and elegant object-oriented design and the need to enable high performance implementations.  

    Summary of JAMA Capabilities
    Object Manipulation constructors 
    set elements 
    get elements 
    copy 
    clone
    Elementary Operations addition 
    subtraction 
    multiplication 
    scalar multiplication 
    element-wise multiplication 
    element-wise division 
    unary minus 
    transpose 
    norm
    Decompositions Cholesky 
    LU 
    QR 
    SVD 
    symmetric eigenvalue 
    nonsymmetric eigenvalue
    Equation Solution nonsingular systems 
    least squares
    Derived Quantities condition number 
    determinant 
    rank 
    inverse 
    pseudoinverse
     

    Example of Use.  The following simple example solves a 3x3 linear system Ax=b and computes the
    norm of the residual.

                 double[][] array = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}};
          Matrix A = new Matrix(array);
          Matrix b = Matrix.random(3,1);
          Matrix x = A.solve(b);
          Matrix Residual = A.times(x).minus(b);
          double rnorm = Residual.normInf();

    Reference Implementation.  The implementation of JAMA downloadable from this site is meant to be a reference implementation only.   As such, it is pedagogical in nature.  The algorithms employed are similar to those of the classic Wilkinson and Reinsch Handbook, i.e. the same algorithms used in EISPACK, LINPACK and MATLAB.  Matrices are stored internally as native Java arrays (i.e., double[][]).  The coding style is straightforward and readable.  While the reference implementation itself should provide reasonable execution speed for small to moderate size applications, we fully expect software vendors and Java VMs to provide versions which are optimized for particular environments.

    Not Covered.  JAMA is by no means a complete linear algebra environment.  For example, there are no provisions for matrices with particular structure (e.g., banded, sparse) or for more specialized decompositions (e.g. Shur, generalized eigenvalue).  Complex matrices are not included.  It is not our intention to ignore these important problems.  We expect that some of these (e.g. complex) will be addressed in future versions.  It is our intent that the design of JAMA not preclude extension to some of these additional areas.

    Finally, JAMA is not a general-purpose array class.  Instead, it focuses on the principle mathematical functionality required to do numerical linear algebra.  As a result, there are no methods for array operations such as reshaping or applying elementary functions (e.g. sine, exp, log) elementwise.  Such operations, while quite useful in many applications, are best collected into a separate array class.


    The Package

    Version 1.0.2

    Previous version


    Request for Comments

    We plan to propose JAMA as the primary linear algebra package for Java.  Such standardization will insure wide availability, improving the portability and performance of Java applications with numeric components. Because of this we are interested in hearing any and all comments of potential users.  While we are cognisant that JAMA will not be suitable for all users, we hope it to be useful to the majority of routine applications.

    Discussion Group. A discussion group has been established for such comments. Comments and suggestions sent to jama@nist.gov will automatically be sent to the JAMA authors, as well as to all subscribers.  To subscribe, send email to listproc@nist.gov containing the text subscribe jama your-name in the message body.  A public archive of the discussion can be browsed.

    [Note: NIST will not use the email addresses provided for any purpose other than the maintenance of this discussion list. Participants may remove themselves at any time by sending an email message to listproc@nist.gov containing the text unsubscribe jama in the message body. See the NIST Privacy Policy.]


    Authors

    JAMA's initial design, as well as this reference implementation, was developed by
    Joe Hicklin
    Cleve Moler
    Peter Webb
    ... from The MathWorks    
    Ronald F. Boisvert
    Bruce Miller
    Roldan Pozo
    Karin Remington
    ... from NIST      

    Copyright Notice This software is a cooperative product of The MathWorks and the National Institute of Standards and Technology (NIST) which has been released to the public domain. Neither The MathWorks nor NIST assumes any responsibility whatsoever for its use by other parties, and makes no guarantees, expressed or implied, about its quality, reliability, or any other characteristic.


    Related Links


    Identification of commercial products on this page is for information only, and  does not imply recommendation or endorsement by the National Institute of Standards and Technology.

    Last change in this page : July 13, 2005. Comments welcome.

    DataMining Web Servies - FAEHIM

    http://users.cs.cf.ac.uk/Ali.Shaikhali/faehim/index.htm

    FAEHIM

    The availability of Web Service standards (such as WSDL, SOAP), and their adoption by a number of communities, including the Grid community as part of the Web Services Resource Framework (WSRF) indicates that development of a data mining toolkit based on Web Services is likely to be useful to a significant user community. Providing data mining Web Services also enables these to be integrated with other third party services, allowing data mining algorithms to be embedded within existing applications.

    The aim of the (Federated Analysis Environment for Heterogeneous Intelligent Mining) project is to present a data mining toolkit that makes use of Web ervices composition, with the widely deployed Triana workflow environment. more

     Data is currently being collected and accumulated at a dramatic pace in a number of different scientific areas. This data accumulation can vary from the long time archiving of the entire collection of raw data, to the persistent storage of summary statistics only. The type of data being analysed can also vary in content from text-based data streams to numeric data (and increasingly image -based data), managed in distributed file systems or structured databases. There is often a distinction made between machine learning algorithms/statistical analysis and data mining; the former is seen as the set of theories and computational methods needed to deal with a variety of different analysis problems, whereas the latter is seen as a means to encode such algorithms in a form that can be efficiently used in real world applications. Often data mining applications and toolkits contain a variety of machine learning algorithms that can be used alongside a number of other components, such as those needed to sample a data set, read/write output from/to data sources, and visualise the outcome of analysis algorithms in some meaningful way.

    Visualisation is also often seen as a key component within many data mining applications, as the results of data mining applications/toolkits are often used by individuals not fully conversant with the details of the algorithm deployed for analysis. Further, users of results of data mining are generally domain experts (and not algorithm experts) , and often some (albeit limited) support is needed to allow such a user to chose an algorithm. The basic problem addressed by the data mining process is one of mapping low-level data (which are typically too voluminous to understand) into other forms that might be more compact (for example, a short report), more abstract (for example, a descriptive approximation or model of the process that generated the data), or more useful (for example, a predictive model for estimating the value of future cases). At the core of the process is the application of specific data-mining methods for pattern discovery and extraction. This process is often structured from interactive and iterative stages within a discovery pipeline/workflow. At these different stages of the discovery pipeline , a user needs to access, integrate and analyse data from disparate sources, to use data patterns and models generated through intermediate stages, and feed those models to further stages in the pipeline. Consider, for instance, a breast-cancer data set acquired by a cancer research centre, where a physician carries out a series of experiments on breast cancer cases and records the results in a database. The data now needs to be analysed to discover knowledge of the possible causes (ortrends) of breast cancer. One approach is to use a classification algorithm. However, applying an appropriate classification algorithm requires some preliminary understanding of the approach used in the classification algorithm, and in the instance where the size of data is large, for processing of the data to be carried out on computational resources suitable to handle the large volume of data.

    The availability of Web Service standards (such as WSDL, SOAP), and their adoption by a number of communities, including the Grid community as part of the Web Services Resource Framework (WSRF) indicates that development of a data mining toolkit based on Web Services is likely to be useful to a significant user community. Providing data mining Web Services also enables these to be integrated with other third party services, allowing data mining algorithms to be embedded within existing applications.

    The project presents a data mining toolkit that makes use of Web Services composition, with the widely deployed Triana workflow environment. Most of the Web Services are derived from the WEKA data mining library of algorithms, and contain approximately 75 different algorithms (primarily classifiers, clustering algorithms and association rules). Additional capability is provided to support attribute search and selection within a numeric data set, and 20 different approaches are provided to achieve this (such as a genetic search operator). Visualisation capability is provided by wrapping the GNUPlot software; additional capability is supported through the deployment of a Mathematica Web Service (developed using the MathLink software). Other visualisation routines include a decision tree and a cluster visualiser.

     

    The Following Web services are Available for use:  
    Classification Web services  
    Clustering Web services  
    Plotting Web services  

     


     


     

    Data Mining Improves Decision Making

    Data mining uncovers patterns in data using predictive techniques. These patterns play a critical role in decision making because they reveal areas for process improvement. Using data mining, organizations can increase the profitability of their interactions with customers, detect fraud, and improve risk management. The patterns uncovered using data mining help organizations make better and timelier decisions.

    Most analysts separate data mining software into two groups: data mining tools and data mining applications. Data mining tools provide a number of techniques that can be applied to any business problem. Data mining applications, on the other hand, embed techniques inside an application customized to address a specific business problem. Regardless of whether we are aware of it, our daily lives are influenced by data mining applications. For example, almost every financial transaction is processed by a data mining application to detect fraud. Both data mining tools and data mining applications are valuable, however. Increasingly, organizations are using data mining tools and data mining applications together in an integrated environment for predictive analytics.

    So what do data mining tools add? Data mining tools are used to ensure flexibility and the greatest accuracy possible. Essentially, data mining tools increase the effectiveness of data mining applications. Since no two organizations or data sets are alike, no single technique delivers the best results for everyone. Not only do data mining tools deliver in-depth techniques, but data mining tools also deliver flexibility to use combinations of techniques to improve predictive accuracy.

    Because data mining tools are so flexible, a set of data mining guidelines and a data mining methodology have been developed to help guide the process. The Cross-Industry Standard Process for Data Mining (CRISP-DM) ensures your organization's results with data mining tools are timely and reliable. This methodology was created in conjunction with practitioners and vendors to supply data mining practitioners with checklists, guidelines, tasks, and objectives for every stage of the data mining process.

    Flex自动化测试&功能测试&回归测试

    以前习惯了用Java开发,现在用Flex写的东西感觉自动化测试的资源有些匮乏(可能是刚接触Flex的缘故吧,还要不断学习),看到有个名为QTP的软件可以结合Adobe提供的扩展来做自动化测试&功能测试&回归测试,甚是兴奋,下载一个来试用一下,如果好用的话就不用自己写框架和工具了,以后就设法用它了。呵呵,等待软件下载的间隙,转一段关于QTP软件的介绍。

    Mercury QuickTest Professional™是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。
    Mercury QuickTest Professional为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。
    QuickTest Professional是新一代自动化测试解决方案,采用了关键词驱动(Keyword-Driven)测试的理念,能完全简化测试的创建和维护工作。QuickTest关键词驱动方式独有之处在于,测试自动化专家可以通过一个整合的脚本和纠错环境,拥有对基础测试脚本和对象属性的完全访问权限,这些脚本和纠错环境与关键词视图(Keyword View)可以互为同步。
    QuickTest Professional同时满足了技术型和非技术型用户的需求,让各个公司有能力部署更高质量的应用,同时部署的速度更快,费用更低,风险也更小。QuickTest Professional和我们新的测试自动化系统Mercury Business Process Testing™的紧密结合,可以将非技术型的业务专家(SME, Subject-Matter Experts)引入质量流程,这一意义重大的引入可以将IT和业务更好地融合,最终建立起更出色的应用。
    有了该产品,您的QA机构可以获取多方面的优势:
            用最少的培训赋予整个小组创建成熟测试方案的能力。
            确保跨所有环境、数据包和业务流程的正确功能点。
            为开发人员全面记录和复制缺陷,使他们能更快地修复缺陷,满足最后上线期限。
            对不断变化的应用和环境展开便捷的回归测试。
            成为帮助整个机构实现高质量产品和服务、提高总收入和收益率的关键角色。
    QuickTest Professional是如何工作的
    QuickTest Professional易于操作,即使是初级的测试人员也能在短时间内对其驾轻就熟。您可以使用无需脚本的关键词视图来表现测试的每个步骤,仅由此就可创建一个测试。您还可以通过QuickTest Professional所集成的录制能力来捕获测试步骤。该产品用简单的英语以文档形式记录每个步骤,并通过活动屏幕将文档与一个集成截屏相结合。传统的脚本记录工具所生产的脚本不易修改,与此不同的是,QuickTest Professional的关键词驱动方式能让您便捷地插入、修改、数据驱动(data-drive)和移除测试步骤。
    QuickTest Professional可以自动引入检查点来验证应用的属性和功能点,比如确认输出量或检查链接的有效性。在关键词视图的每一步骤中,活动屏幕可显示被测应用在该步骤中的确切状态。您还可以为任意对象加入几种检查点,仅仅在活动屏幕中点击该对象,就可以验证该组件行为是否达到了期望值。
    然后您可以将测试数据输入数据表(Data Table),它拥有和Excel同样完善的功能特性,是一个集成的电子数据表格。您可以使用数据集并创建多种重复测试,无需编程就可以扩展测试案例的覆盖面。数据可以通过键入的方式输入或从数据库、数据表格或文本文档中导出。
    高级测试人员可以在专家视图(Expert View)中查看和修改他们的测试,在专家视图中显示了由QuickTest Professional自动生成的基于行业标准的基本VBScript语言。在专家视图中所做的任何改动将自动与关键词视图同步。
    一旦测试人员运行了一个脚本,TestFusion报告将显示测试运行各方面的信息,包括:高水平的结果纵览;一个可扩展的测试脚本树状视图(Tree View),其明确指出了应用错误的发生位置;被使用的测试数据;每个步骤的应用截屏,其中并标明了所有的差异;以及通过或未通过每个检查点的详细解释。您可以将TestFusion报告和QuickTest Professional结合,从而与整个QA和开发小组分享这些报告。
    QuickTest Professional处理一些应用的新版本问题。当一个被测应用发生变化时,比如把一个”Login”按钮被改名为”Sign in”,您可以在共享对象容器(Shared Object Repository)中做一次更新,接着此次更新将扩展到所有涉及这个对象的脚本。您可以将测试脚本公布给Mercury Quality Management,使其它的QA小组成员也可以使用您的测试脚本,从而减少了重复工作。
    通过与Business Process Testing的整合,在一个基于Web的系统中,QuickTest Professional被用于实现自动化操作,使非技术型用户可以便捷地在一个完全的无脚本环境中也能够建立起测试。
    QuickTest Professional支持多种企业环境的功能测试,包括Windows、Web、.NET、 Java/J2EE、SAP、Siebel、Oracle、PeopleSoft、Visual Basic、ActiveX、Mainframe terminal emulators和Web services。
    Mercury功能测试
    那些在Mercury WinRunner®测试工具上投入大量资金,并想转入Mercury QuickTest Professional™的用户,可以使用Mercury Functional Testing™来实现这种转变。Mercury Functional Testing将QuickTest Professional和WinRunner结合成一种集成产品,它不仅可以使用WinRunner脚本,也可以使用QuickTest Professional脚本,使测试资源得到极大地利用。质量工程师可以使用Mercury Functional Testing来创建“复合脚本”测试,这些脚本是在WinRunner和QuickTest Professional中建立的。Mercury Functional Testing是WinRunner和QuickTest Professional的集成,产品间可以相互调用脚本,测试结果可以在一个共有的报告界面上呈现。
    Mercury质量中心的组成部分之一
    Mercury QuickTest Professional是Mercury质量中心(Mercury Quality Center™)的组成部分之一,Mercury质量中心集成了一整套软件、服务和最佳实践,用于自动化关键质量活动,包括需求管理、测试管理、缺陷管理、功能测试和业务流程测试。
    特点和优势
            具有行业 Mercury QuickTest Professional™是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。
    Mercury QuickTest Professional为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。
    QuickTest Professional是新一代自动化测试解决方案,采用了关键词驱动(Keyword-Driven)测试的理念,能完全简化测试的创建和维护工作。QuickTest关键词驱动方式独有之处在于,测试自动化专家可以通过一个整合的脚本和纠错环境,拥有对基础测试脚本和对象属性的完全访问权限,这些脚本和纠错环境与关键词视图(Keyword View)可以互为同步。
    QuickTest Professional同时满足了技术型和非技术型用户的需求,让各个公司有能力部署更高质量的应用,同时部署的速度更快,费用更低,风险也更小。QuickTest Professional和我们新的测试自动化系统Mercury Business Process Testing™的紧密结合,可以将非技术型的业务专家(SME, Subject-Matter Experts)引入质量流程,这一意义重大的引入可以将IT和业务更好地融合,最终建立起更出色的应用。
    有了该产品,您的QA机构可以获取多方面的优势:
            用最少的培训赋予整个小组创建成熟测试方案的能力。
            确保跨所有环境、数据包和业务流程的正确功能点。
            为开发人员全面记录和复制缺陷,使他们能更快地修复缺陷,满足最后上线期限。
            对不断变化的应用和环境展开便捷的回归测试。
            成为帮助整个机构实现高质量产品和服务、提高总收入和收益率的关键角色。
    QuickTest Professional是如何工作的
    QuickTest Professional易于操作,即使是初级的测试人员也能在短时间内对其驾轻就熟。您可以使用无需脚本的关键词视图来表现测试的每个步骤,仅由此就可创建一个测试。您还可以通过QuickTest Professional所集成的录制能力来捕获测试步骤。该产品用简单的英语以文档形式记录每个步骤,并通过活动屏幕将文档与一个集成截屏相结合。传统的脚本记录工具所生产的脚本不易修改,与此不同的是,QuickTest Professional的关键词驱动方式能让您便捷地插入、修改、数据驱动(data-drive)和移除测试步骤。
    QuickTest Professional可以自动引入检查点来验证应用的属性和功能点,比如确认输出量或检查链接的有效性。在关键词视图的每一步骤中,活动屏幕可显示被测应用在该步骤中的确切状态。您还可以为任意对象加入几种检查点,仅仅在活动屏幕中点击该对象,就可以验证该组件行为是否达到了期望值。
    然后您可以将测试数据输入数据表(Data Table),它拥有和Excel同样完善的功能特性,是一个集成的电子数据表格。您可以使用数据集并创建多种重复测试,无需编程就可以扩展测试案例的覆盖面。数据可以通过键入的方式输入或从数据库、数据表格或文本文档中导出。
    高级测试人员可以在专家视图(Expert View)中查看和修改他们的测试,在专家视图中显示了由QuickTest Professional自动生成的基于行业标准的基本VBScript语言。在专家视图中所做的任何改动将自动与关键词视图同步。
    一旦测试人员运行了一个脚本,TestFusion报告将显示测试运行各方面的信息,包括:高水平的结果纵览;一个可扩展的测试脚本树状视图(Tree View),其明确指出了应用错误的发生位置;被使用的测试数据;每个步骤的应用截屏,其中并标明了所有的差异;以及通过或未通过每个检查点的详细解释。您可以将TestFusion报告和QuickTest Professional结合,从而与整个QA和开发小组分享这些报告。
    QuickTest Professional处理一些应用的新版本问题。当一个被测应用发生变化时,比如把一个”Login”按钮被改名为”Sign in”,您可以在共享对象容器(Shared Object Repository)中做一次更新,接着此次更新将扩展到所有涉及这个对象的脚本。您可以将测试脚本公布给Mercury Quality Management,使其它的QA小组成员也可以使用您的测试脚本,从而减少了重复工作。
    通过与Business Process Testing的整合,在一个基于Web的系统中,QuickTest Professional被用于实现自动化操作,使非技术型用户可以便捷地在一个完全的无脚本环境中也能够建立起测试。
    QuickTest Professional支持多种企业环境的功能测试,包括Windows、Web、.NET、 Java/J2EE、SAP、Siebel、Oracle、PeopleSoft、Visual Basic、ActiveX、Mainframe terminal emulators和Web services。
    Mercury功能测试
    那些在Mercury WinRunner®测试工具上投入大量资金,并想转入Mercury QuickTest Professional™的用户,可以使用Mercury Functional Testing™来实现这种转变。Mercury Functional Testing将QuickTest Professional和WinRunner结合成一种集成产品,它不仅可以使用WinRunner脚本,也可以使用QuickTest Professional脚本,使测试资源得到极大地利用。质量工程师可以使用Mercury Functional Testing来创建“复合脚本”测试,这些脚本是在WinRunner和QuickTest Professional中建立的。Mercury Functional Testing是WinRunner和QuickTest Professional的集成,产品间可以相互调用脚本,测试结果可以在一个共有的报告界面上呈现。
    Mercury质量中心的组成部分之一
    Mercury QuickTest Professional是Mercury质量中心(Mercury Quality Center™)的组成部分之一,Mercury质量中心集成了一整套软件、服务和最佳实践,用于自动化关键质量活动,包括需求管理、测试管理、缺陷管理、功能测试和业务流程测试。
    特点和优势
            具有行业领先的便于使用的特性,以及支持提前配置环境的功能,确保了快速的投资回报。
            可独立运行,也可以同Mercury Business Process Testing和Mercury质量中心集成。
            引进了QuickTest Professional 8.0中新一代的“零配置”关键词驱动测试技术,从而实现了快速建立测试、测试脚本更易维护,和更强大的数据驱动能力。
            使用独特智能对象识别(Unique Smart Object Recognition)来发现对象,即使对象创建不断在改变,但仍可保证无监控方式脚本执行的可靠性。
            恢复管理器(Recovery Manager)可处理不可预知的应用意外事件,实现24x7的不间断测试,赶上测试项目的最后期限。
            自动文档技术把测试文档的建立与测试脚本的建立同步。
            通过集成的数据表,可数据驱动任意对象、方式、检查点和输出值。
            为QA工程师提供全面的集成开发环境。
            通过使用QuickTest Professional和WinRunner集成的TSL资源,使您在Mercury WinRunner测试脚本上的投资得以保值。
            TestFusion报告可快速隔离和诊断缺陷。
            通过完善检查点,实现应用的全面验证。
    领先的便于使用的特性,以及支持提前配置环境的功能,确保了快速的投资回报。
            可独立运行,也可以同Mercury Business Process Testing和Mercury质量中心集成。
            引进了QuickTest Professional 8.0中新一代的“零配置”关键词驱动测试技术,从而实现了快速建立测试、测试脚本更易维护,和更强大的数据驱动能力。
            使用独特智能对象识别(Unique Smart Object Recognition)来发现对象,即使对象创建不断在改变,但仍可保证无监控方式脚本执行的可靠性。
            恢复管理器(Recovery Manager)可处理不可预知的应用意外事件,实现24x7的不间断测试,赶上测试项目的最后期限。
            自动文档技术把测试文档的建立与测试脚本的建立同步。
            通过集成的数据表,可数据驱动任意对象、方式、检查点和输出值。
            为QA工程师提供全面的集成开发环境。
            通过使用QuickTest Professional和WinRunner集成的TSL资源,使您在Mercury WinRunner测试脚本上的投资得以保值。
            TestFusion报告可快速隔离和诊断缺陷。
            通过完善检查点,实现应用的全面验证。
    QuickTest Professional 9.2 下载

    2007年商业智能的三个发展趋势

     
    随着商业智能市场的日益成熟,将有三个新的发展趋势。今年商业智能领域,仍然是盘整上升的趋势。这种趋势是良性还是恶性呢?目前已经能够看出一些端倪。在所有发展中有三个发展趋势将对未来技术产生巨大的影响,尽管目前还无法判断到底有多大影响。
    趋势一:BI公司的合并
           目前,人们不得不面对商业智能市场的剧烈震荡,每个商业智能公司都狼吞虎咽般的收购小公司,在市场上形成了高傲的形象。这些收购可以分为三类:
    数据质量厂商被收购。最近有一些独立的数据质量供应商,变成了全线BI平台的供应商(包括从ETL到BI分析的所有组件)的一部分,或者变成了ETL包的一部分。这些购买者增加了数据集成和整合的能力。
    企业信息集成厂商也被收购或者成为其它BI供应商的战略联盟。这些战略联盟提高了数据集成范围和能力,不论是对ETL厂商或者具有全线BI服务的厂商,都增加了实时数据集成的能力。
    小厂商在出名前已经被收购。尤其是IBM和Oracle,非常倾向于收购这些富有创新解决方案的小厂商。这些收购让大公司具有主数据管理(MDM)或者客户数据集成(CDI)应用的快速解决方案。
    那么这些收购对BI产业有益吗?单纯来讲,BI厂商巩固了商业智能解决方案,让实施变得更简单。一个厂商的界面让人更容易接受。这是毫无疑问的“一站式”方案。
           具有全线服务的厂商的目标是能够提供集成的、端到端的解决方案,能够满足你的所有要求。这些厂商最重要的就是减少了成本和实施时间。这些产品易于维护,对于实施者来说学习时间更短,更容易上手。
           另一方面,一个公司买了一种技术并不意味着这个技术会立即集成完毕。或许几年后你仍然在集成问题上挣扎。还有一个值得关注的问题,某类最佳的厂商只有一个使命,或者成为这个特殊领域的最好解决方案?他们的方案通常是简单打包,或者是全线的、快速的和一流的?具有全线服务的厂商通常扩展一个点的解决方案去发挥最大的力量,尤其是努力集成到他们的技术中。当他们将许多特性集中时,他们通常在一个套件中采用折衷方案,这种折衷方案有可能满足你大部分的需求,但不是全部需求。当购买某类最佳厂商或者全线服务厂商的产品时,还需要了解该公司的合作伙伴,这样能做出更明智的选择。
    最后,没有任何一个商业智能厂商处于市场份额的绝对领导地位。这意味着对于各种类型的厂商来说还有很大的发展空间。在一些小的、创新的技术上仍然有市场容纳竞争和巩固厂商地位。
    趋势二:从战略型的BI到操作型或者实时型的BI
    目前,企业日益要求减少从发现问题到采取行动的反应延迟,这大大推动了BI分析应用的发展。根据决策专家的观点,这种反应的延迟有三个组成部分。数据准备的延迟(获取要分析的数据的时间),分析延迟(通过分析得到结果的时间),决策延迟(理解分析结果并且采取行动的时间)。对于操作性的BI是非常有意义的,这三种延迟几乎可以减少到忽略不计。
         为了减少数据准备的延迟,我们看到大家采用EII技术开发了越来越多的虚拟BI组件,包括虚拟操作数据存储(ODS)和数据集市。如果你的操作型数据非常规范(仅需要很少的数据集成和清洗),虚拟的操作数据存储(ODS)或者自由的数据集市是缩短数据延迟的较好的解决方案。但是,这必须对操作型的业务系统的事件进行监控。
           为了减少分析的延迟,我们看到操作型分析引擎中的企业活动监控(BAM)或者操作仪表盘,它们能及时的让业务人员看到分析结果,并且超出阈值时发出报警。关键绩效指标(KPI),每隔几个小时或者更频繁的发送给业务人员,整理当前的操作型结果并且在企业门户以仪表盘的形势展现出来,给业务人员深入分析关键事件的机会。
    分析和展现操作型数据是非常有意义的,但是商业智能中不是所有数据都要包括。许多IT实施者不能明确在操作型BI应用中包括哪些数据。他们觉得应该包含尽可能多的数据,强迫所有数据都是实时的。这样就会出现一个无边界的难管理的BI项目。
         我们应该非常仔细的评估实时分析的数据。完全理解业务需求,才能找出海量数据中真正需要的那一小部分。更多的分析可以每隔几个小时、几天或者几个月做一次,这取决于决策的需要。
         趋势三:更成熟的数据分析和展现技术
           起初,BI只有简单的报表和查询,然后有了多维分析。目前多维立方体和星型模型仍然非常流行。现在有了更复杂的方向,那就是使用数据挖掘进行深入分析,支持自定义查询的统计方法和技术,不规则的查询。或许这是商业智能的自然演化。当然,业务专家比起十年前越来越成熟,甚至不是业务高手也要执行复杂的分析,因此促进商业智能日益普及。这些技术提升了预测分析和决策能力,并且可以嵌入到操作流程中。目前有些公司能够实施操作型或者实时BI,给于前台人员访问分析结果的能力,他们的日常业务都可以与数据的分析相结合。
           我们必须肯定BI的能力。我们应该采取企业级的BI架构和技术,否则一定会遇到混乱。操作型的BI也需要彻底的理解业务流程以及变化,离开了这些需求,BI实施就不可能深入到最有价值的地方。
           在商业智能市场还有一些其他的发展趋势,但是这三个趋势是影响最大的。我们在半年后再次重新审视BI发展,看看是否还有其他的发展趋势引起我们的注意,或者改变仍然年轻的快速发展的BI产业。(ChinaBI 焦有章 编译)

    Data Ming and BI

         何为数据挖掘和商业智能?

      与数据挖掘相关的词汇有例如数据仓库,数据装载(ETL),数据挖掘(Data Mining), 客户关系管理(CRM),SAS,PeopleSoft, SAP等。到上个世纪九十年代,以数据存储为目的的联机分析处理系统(OLTP)已经发展得相当成熟,关系型数据库的应用已经非常普及,大型企业或部门积累了大量原始数据。这些数据是按照关系型结构存储,在更新,删除,有效存储(少冗余数据)方面表现出色,但在复杂查询方面效率却十分低下。为充分利用已有数据,提供复杂查询,提供更好的决策支持,出现了数据仓库(Data Warehouse)。数据仓库与数据库(这里的数据库指关系型数据库)的区别在于,数据仓库以方便查询(称为主题)为目的,打破关系型数据库理论中标准泛式的约束,将数据库的数据重新组织和整理,为查询,报表,联机分析等提供数据支持。数据仓库建立起来后,定期的数据装载(ETL)成为数据仓库系统一个主要的日常工作。

      在数据仓库发展的同时,一项从大量数据中发现隐含知识的技术也在学术领域兴起,这就是数据挖掘。数据挖掘也称为数据库知识发现(Knowledge Discovery in Databases, KDD),就是将高级智能计算技术应用于大量数据中,让计算机在有人或无人指导的情况下从海量数据中发现潜在的,有用的模式(也叫知识)。最初的数据挖掘应用一般需要从组织数据做起,经历算法设计(建模),挖掘,评价,改进等步骤。其中组织整理数据占据大部分时间,大约占到整个数据挖掘项目80%的时间。数据挖掘的真正普及是建立在数据仓库的成功应用之上。一个设计完善的数据仓库已经将原始数据经过了整理和变换,在此基础上再进行深入挖掘就是顺理成章的事情。

      数据挖掘是近年来信息爆炸推动下的新兴产物,是从海量数据中提取有用知识的热门技术。传统的交易型系统,九十年代兴起的互连网技术及ERP系统在越来越廉价的存储设备配合下,产生了大量的数据。但与之相配合的数据分析和知识提取技术在相当长一段时间里没有大的进展,使得存储的大量原始数据没有被充分利用,转化成指导生产的“知识”,形成“数据的海洋,知识的荒漠”这样一种奇怪的现象。

      数据挖掘(Data Mining)就是从大量数据中发现潜在规律、提取有用知识的方法和技术。因为与数据库密切相关,又称为数据库知识发现(Knowledge Discovery in Databases,KDD)。数据挖掘不但能够学习已有的知识,而且能够发现未知的知识;得到的知识是“显式”的,既能为人所理解,又便于存储和应用,因此一出现就得到各个领域的重视。从80年代末的初露头角到90年代末的广泛应用,以数据挖掘为核心的商业智能(BI)已经成为IT及其它行业中的一个新宠。当前数据挖掘应用主要集中在电信(客户分析),零售(销售预测),农业(行业数据预测),网络日志(网页定制),银行(客户欺诈),电力(客户呼叫),生物(基因),天体(星体分类),化工,医药等方面。当前它能解决的问题典型在于:数据库营销(Database Marketing)、客户群体划分(Customer Segmentation & Classification)、背景分析(Profile Analysis)、交叉销售(Cross-selling)等市场分析行为,以及客户流失性分析(Churn Analysis)、客户信用记分(Credit Scoring)、欺诈发现(Fraud Detection)等等,在许多领域得到了成功的应用。如果你访问著名的亚马逊网上书店(www.amazon.com),会发现当你选中一本书后,会出现相关的推荐数目“Customers who bought this book also bought”,这背后就是数据挖掘技术在发挥作用。

      提到数据挖掘,就不能不提商业智能(Business Intelligence),简称BI,就是将智能计算技术应用于传统商业领域,从而提高数据分析能力,优化业务过程,提高企业竞争力。虽然商业智能的普及仅仅是最近几年的事情,但已经渗透到金融,电信,零售,医药,制造,政府等各个行业和领域,成为大中型企业经营决策的重要组成部分。

      数据挖掘是一项技术,由许许多多的算法构成,如决策树,聚类,关联算法,分类算法,神经网络等,这些算法可以有多种实现方式。数据挖掘渗透到某些行业,产生了一些特定的应用,比如现在经常会听到的客户关系管理(Customer Relationship Management, CRM)。客户关系管理的概念由来已久,但现代的客户关系管理一般指以客户数据为处理对象的一类商业智能应用。通过挖掘客户信息,发现潜在的消费趋势或动向。比如电信公司通过分析用户通话模式(通话时间,时段,通话量等),制订不同的计费方案,满足用户的同时也提高自己的利润。

      据IDC对欧洲和北美62家采用了商务智能技术的企业的调查分析发现,这些企业的3年平均投资回报率为401%,其中25%的企业的投资回报率超过600%。调查结果还显示,一个企业要想在复杂的环境中获得成功,高层管理者必须能够控制极其复杂的商业结构,若没有详实的事实和数据支持,是很难办到的。因此,随着数据挖掘技术的不断改进和日益成熟,它必将被更多的用户采用,使更多的管理者得到更多的商务智能。

      数据挖掘和商业智能职业发展前景

      规划个人职业发展的时候,在众多考虑因素中有两个是非常重要的:所要投入的技术所处的发展阶段和能否结合已有专业知识。

      每种技术从提出到广泛应用(或失败被抛弃)有一定的发展周期,称为科学技术的生命周期(Technological life cycle)。该周期大致分为创新(Innovators),早期成长(Early adopters),分歧点(Chasm),早期流行(Early majority),晚期流行(Late majority)和衰退阶段(Laggards)。对于应用型技术人员来说,早期流行阶段是进入一个新技术领域的最佳时机, 因为该技术已经通过分歧点的考验,又处于上升阶段,风险最小,竞争最少,更容易脱颖而出。数据挖掘技术现在就处在这样一个早期流行阶段。

      数据挖掘的对象是某一专业领域中积累的数据;挖掘过程是一个人机交互、多次反复的过程;挖掘的结果要应用于该专业。因此数据挖掘的整个过程都离不开应用领域的专业知识。“Business First, technique second”是数据挖掘的特点。因此学习数据挖掘不意味着丢弃原有专业知识和经验。相反,有其它行业背景是从事数据挖掘的一大优势。如有销售,财务,机械,制造,call center等工作经验的,通过学习数据挖掘,可以提升个人职业层次,在不改变原专业的情况下,从原来的事务型角色向分析型角色转变。

      Gartner在2000年的报告中列举了在3-5年内对工业将产生重要影响的五项关键技术,其中KDD和人工智能排名第一。同时,这份报告将并行计算机体系结构研究和KDD列入今后5年内公司应该投资的10个新技术领域:宽带、无线、Linux、内容管理、实时分析、数据挖掘、安全、中间件、认证技能、商业智能以及知识管理。

      根据IDC(International Data Corporation)预测说2004年估计BI行业市场在140亿美元。现在,随着我国加入WTO,我国在许多领域,如金融、保险等领域将逐步对外开放,这就意味着许多企业将面临来自国际大型跨国公司的巨大竞争压力。国外发达国家各种企业采用商务智能的水平已经远远超过了我国。美国Palo Alto 管理集团公司1999年对欧洲、北美和日本375家大中型企业的商务智能技术的采用情况进行了调查。结果显示,在金融领域,商务智能技术的应用水平已经达到或接近70%,在营销领域也达到50%,并且在未来的3年中,各个应用领域对该技术的采纳水平都将提高约50%。现在,许多企业都把数据看成宝贵的财富,纷纷利用商务智能发现其中隐藏的信息,借此获得巨额的回报。国内暂时还没有官方关于数据挖掘行业本身的市场统计分析报告,但是国内数据挖掘的在各个行业都有一定的研究。据国外专家预测,在今后的5—10年内,随着数据量的日益积累以及计算机的广泛应用,数据挖掘将在中国形成一个产业。

      众所周知,IT就业市场竞争已经相当激烈,而上述数据处理系列的就业则一枝独秀,数据处理的核心技术---数据挖掘更是得到了前所未有的重视。数据挖掘和商业智能技术位于整个企业IT-业务构架的金字塔塔尖,目前国内数据挖掘专业的人才培养体系尚不健全,人才市场上精通数据挖掘技术、商业智能的供应量极小,而另一方面企业、政府机构和和科研单位对此类人才的潜在需求量极大,供需缺口极大。如果能将数据挖掘技术与个人已有专业知识相结合,您必将开辟职业生涯的新天地!
     

    Data Binding Tips- Useful feature in Flex

     

    Data Binding Tip

    Here's a simple way to enable/disable controls based on selection. For example, suppose you have a DataGrid and a number of buttons which operate on the data. Some buttons can only be used when a row is selected. Other buttons can only be used when there are no selections. Still others can only be used on certain selections.

    The Problem

    To handle this you may be tempted to code a number of if-statements or to use data binding to set up a variable and then set the variable at various times in your code. Something like this:

    [Bindable] private var somethingSelected:Boolean = false;

    <mx:Button label="Publish" click="publishItem()" enabled="{somethingSelected}" />

    This is a good attempt. All the controls which depend on the selection state of the DataGrid are bound to this one variable. Changing the variable changes the controls' enabled state. However, you still have to decide when to change the variable. For example:

    private function publishItem() : void {
         // get the selected item
         // publish it
         grid.selectedItem = -1; // clear the selection
         somethingSelected = false;
    }

    To complicate things, suppose another button should be enabled if the selection contains a specific value. You not only have to worry about the somethingSelected variable, you also have to worry about this other test. In other words, in the publishItem() function you have to include setting the other variable. This gets more complex the more conditions you have.

    An Easier Way

    There is an easier way. Right now the Publish button has a binding with the somethingSelected variable. What is needed is a binding between the somethingSelected variable and the selection state of the DataGrid. You can set that up with the <mx:Binding> tag:

    <mx:Binding source="grid.selectedIndex >= 0" destination="somethingSelected" />

    Now the value of somethingSelected is tied to the selection state of the DataGrid. Select a row and somethingSelected turns true and all of the buttons with enabled="{somethingSelected}" are enabled and all the buttons with enabled="{!somethingSelected}" are disabled.

    The source of the Binding does not have to be a variable. It can be an expression as shown here. The source is simply the condition of the grid's selectedIndex being greater than or equal to zero.
    Here is a slightly more complex example:

    <mx:Binding source="grid.selectedItem.code == 1" destination="codeOnePicked" />

    Now a record in the DataGrid while a field whose value is 1 will turn the variable codeOnePicked true.

    <mx:CheckBox label="Code One?" selected="{codeOnePicked}" />
    <mx:Button label="Publish" enabled="{somethingSelected && !codeOnePicked}" />

    Here, the CheckBox is selected whenever any record from the DataGrid is selected that as a code field of 1; the Publish button is disabled when that happens.

    Conclusion

    If you have controls that depend on selections or other conditions in the UI, see if the <mx:Binding> tag can clean up your code and make it easier to read and extend.

    (Reference from http://weblogs.macromedia.com/pent/archives/2007/02/data_binding_ti.cfm)

    Special days

    Some special days of mine.
    Nov.2, 2004
    Nov. 24, 2004
    Dec. 18
    just a log. Do not forget them.

    Flex

    ■Flex Themes
    ScaleNine 这个站点有不少站长本人创作的Flex皮肤,看起来都很不错,而且站长还提供了一些有关皮肤制作的资源,包括文章和图库等。这个站点很值得一看。

    Dynamic class in Flex/ActionScript

    Dynamic class defines an object that can be altered at run time by adding or changing properties and methods. A class that is not dynamic, such as the String class, is a sealed class. You cannot add properties or methods to a sealed class at run time. You create dynamic classes by using the dynamic attribute when you declare a class.

    1.You can add properties or method to dynamic class outside the class definition. Properties that you add to an instance of a dynamic class are run-time entities, so an type checking is done at run time. You caanot add a type annotation to a property that you add in this manner.

    2.The methods, you added to the dynamic class, do not have access to any private properties or methods of the class. Moreover, even references to public properties or methods of the class must be qualified with keyword this or class name(for some static method).

    paper life start

    Finished a lot of designing and coding work, I should write my idea in the paper.
    one paper in a month.