精华内容
下载资源
问答
  • 软件设计的总体思路
    万次阅读
    2019-01-08 15:16:02

    参考博客原址:

    https://www.cnblogs.com/trendline/articles/how-to-create-design-doc.html

    软件设计的本质就是针对软件的需求,建立模型,通过将模型映射为软件,来解决实际问题。因此软件设计需要解决的核心问题是建立合适的模型,使得能够开发出满足用户需求的软件产品,并具有以下特性:

    • 灵活性(Flexibility)
    • 有效性(Efficiency)
    • 可靠性(Reliability)
    • 可理解性(Understandability)
    • 维护性(Maintainability)
    • 重用性(Reuse-ability)
    • 适应性(Adaptability)
    • 可移植性(Portability)
    • 可追踪性(Traceability)
    • 互操作性(Interoperability)

    因此,软件设计并没有一套放之四海而皆准的方法和模板,需要我们的设计开发人员在软件的设计开发过程中针对软件项目的特点进行沟通和协调,整理出对软件项目团队的行之有效的方式,进行软件的设计。并保障软件设计文档的一致性,完整性和可理解性。

     

    我们经常听到这样的话:

    • “设计文档没有用,是用来糊弄客户和管理层的文档”;
    • “用来写设计文档的时间,我的开发早就做完了”;
    • “项目紧张,没有时间做设计”;

    这些言论,并不是正确的观念,根据软件项目的实际情况,软件开发设计团队可以约定设计文档的详细程度。项目团队需要保障设计文档的完整性和一致性,在项目进度紧张的情况下,软件设计文档可以更初略一些;在项目时间充裕的情况下,相关文档可以更为详尽。但是在项目开发过程中,需要软件设计开发团队对于设计文档有共同的理解。

    设计文档分类与使用

    通常来说,作为软件项目,我们需要有这几类文档

    • 需求说明文档
    • 功能设计文档
    • 系统架构说明书
    • 模块概要设计文档
    • 模块详细设计文档

    就像我之前说到的,在某个软件团队,对于以上的文档的要求是可以完全不同的,在简单项目中,可能所有类型的文档放在一个文档中进行说明;在复杂项目中,每一类文档可能都要写几个文档;而在最极端的情况下,可能每一类文档都能装订成几册。因此,在我们软件设计和开发人员心目中需要明确的是:文档并不是我们进行设计的目标,也不是我们设计过程中额外的工作。

     

    软件设计文档是我们在软件设计开发过程中形成的,用来在软件设计开发团队内部以及与各干系人之间进行沟通的文档,这些文档记录了软件项目中的各种知识,方案的思路、以及各种决策意见。

    下面我们就软件设计开发过程中必须要完成的工作进行梳理,而我们需要注意到,这些需要完成的工作,在不同的开发流程模型的指导下可能有不同的时间要求,而我们需要关注的是在这个阶段内需要完成的工作,以及这个阶段内我们需要沟通的人员。

    需求分析

    需求分析是我们进行任何一个软件项目设计开发过程中都必须要完成的工作。

    这个工作通常与客户一起完成。在不同的项目中,这个“客户”可能来自真正的购买产品的用户,使用系统的用户,也有可能来自团队的某个人员,如产品经理等。软件设计开发团队的参与成员根据项目的不同规模,则参与的人员也有所不同。原则上,设计开发人员参与的时间点越早,对于需求的理解和把握会更好。这个阶段,通常需要软件架构师参与其中。从资源优化的角度来说,开发人员不必参与需求分析,但需要理解需求。

    需求分析的结果通常我们需要使用需求说明文档来描述,目前主流的需求描述方法包括:用户例图、用户故事等方式。这些方式有所不同的侧重,其核心思想就是描述清楚用户的使用场景。但无论采取何种方式,进行需求的描述,需求说明需要明确以下几点:

    • 所需要开发的软件系统边界
    • 系统所有的相关及使用人员角色
    • 系统关键的使用场景
    • 系统规模、性能要求以及部署方式等非功能性需求

    功能设计

    功能设计与需求分析差不多同时在开展,在很多软件项目中,对于功能设计不是特别重视。但对于某些软件项目而言,这是一个相当重要的工作。对于主要是用户界面的软件项目来说,功能设计可以看作是画出原型界面,描述使用场景,获得用户认可的过程。而对于没有界面的软件项目来说,则功能设计与需求分析的区分更为模糊。

    参与的人员与需求分析的参与人员类似,架构师更侧重于参与此类工作,并给与一些实现层面的判断和取舍。

    功能设计需要明确的核心是:

    • 系统的行为

    系统架构设计

    系统架构设计是一个非常依赖于经验的设计过程。需要根据软件项目的特定功能需求和非功能性需求进行取舍,最终获得一个满足各方要求的系统架构。系统架构的不同,将很大程度上决定系统开发和维护是否能够较为容易的适应需求变化,以及适应业务规模扩张。

    架构设计工作中,用户参与程度很低。软件开发团队中的需求人员参与程度很低,但团队中的所有核心设计和开发人员都应该参与其中,并达成一致意见。

    架构设计的主要成果,是将系统的不同视图予以呈现,并使之落实到开发中:

    • 系统开发视图及技术路线选择
    • 系统逻辑视图
    • 系统部署视图
    • 系统模块视图
    • 系统的领域模型

    在软件开发过程中,系统的架构不是一成不变的,随着设计人员和开发人员对于系统的理解不断深入,系统的架构也会发生演化。在软件项目中,架构设计是开发团队沟通的统一语言,设计文档必须要随着系统的变化进行更新,保障开发团队对于系统的理解和沟通的一致性。

    模块/子系统概要设计

    模块/子系统的概要设计,由架构师参与,核心设计和开发人员负责的方式进行。

    在概要设计工作中,我们需要在架构确定的开发路线的指导下,完成模块功能实现的关键设计工作。在概要设计阶段,需要关注于模块的核心功能和难点进行设计。这个过程中更多推荐的采用UML来进行概要设计,需要进行:

    • 模块实现机制设计
    • 模块接口设计
    • 关键类设计
    • 画出时序图
    • 交互图等。

    模块详细设计

    在瀑布式开发模型中,模块的详细设计会要求比较严格,将所有类进行详细设计。据我所知,除了一些对于系统健壮性要求非常严格的软件项目,如国防项目,金融项目还要求有详细设计文档之外。其他的项目大多采用其他方式来处理这样的工作,如自动化测试等。

    综上所述,软件设计文档作为软件开发团队的沟通、理解、知识共享的手段,具有非常重要的意义。而根据软件团队的规模,对于文档上承载的信息详细程度可以有不同程度的要求。我们软件团队对于*如何使用设计文档有一个统一的理解,并坚持更新设计文档*,这就是软件设计的最佳实践!

    软件设计所需要的知识与技能

    • UML 统一建模语言
    • 软件工程
    • 面向对象的编程 OOP
    • 操作系统
    • 数据库原理
    • 设计模式
    • 沟通能力

     

    更多相关内容
  • 2020年度人力资源部计划(总体工作思路和实施计划).pdf
  • 人力资源工作总体思路.doc
  • 公司信息化工作总体思路与目标.docx
  • 公司信息化工作总体思路与目标.zip
  • 公司信息化工作总体思路与目标.pdf
  • 公司信息化工作总体思路与目标.doc
  • 从全局的视角出发规划总体架构,保障规划能够全面有效地统筹新型智慧城市发展各方面工作的开展。xxxx市新型智慧城市建设对标国内先进城市发展模式,以 “一个体系架构、一张天地一体的栅格网、一个通用功能平台、一...
  • 2020工会工作总结及2021年工会工作思路.doc
  • 建设工程质量安全监督管理工作总体思路.doc
  • 两篇2021年物业公司防疫防控应急预案、乡镇工作总体要求及工作思路.docx
  • 为扎实推进张掖市不动产统一登记工作,同时规范市、县不动产登记信息管理基础平台建设,确保各级联动、协调配合、相互衔接,依据《不动产登记信息管理基础平台建设总体方案》等要求和不动产信息化建设的相关标准规范,...
  • 中国移动云计算总体策略;技术引入1X86架构/云存储;技术引入2资源池化;CMNET/IP专网;建设实施原则;标准研发策略;中国移动云计算 开展的工作;业务云建设思路;业务云近期工作;支撑系统云建设思路;支撑系统云建设思路;...
  • 中国移动云计算总体策略;技术引入1X86架构/云存储;技术引入2资源池化;三朵云 构建中国移动IT支撑云业务云公众服务云三大云计算平台三朵云对内实现资源的合理调配对外为全社会提供基于云计算的IT服务;CMNET/IP专网;...
  • 中国移动云计算总体策略;技术引入1X86架构/云存储;技术引入2资源池化;CMNET/IP专网;建设实施原则;标准研发策略;中国移动云计算 开展的工作;业务云建设思路;业务云近期工作;支撑系统云建设思路;支撑系统云建设思路;...
  • 忠 目录 回云计算工作总体思路 业务云相关工作汇报 支撑云相关工作汇报 公众服务云相关工作汇报 下一步工作建议 中国移动云计算发展愿景 忠 少 自动调度和分布式计算的云计算平台,以支撑下 建立新世界 T支撑服务 ...
  • 中国移动通信 CHINA MOBLE 目录 國四云计算工作总体思路 业务云相关工作汇报 支撑云相关工作汇报 0公众服务云相关工作汇报 下一步工作建议 中国移动云计算发展愿景 动通信 建设一个基于虚拟化集中管理自动调度和...
  • 大数据项目实践指南(总体思路

    万次阅读 2016-03-29 12:41:34
    做了三个完整的大数据项目后,我整理了一下大数据的项目实践思路,这里写下总体思路。如果加油的人多,我愿意将其详细编写为一本书,就叫《大数据项目实践指南》吧?哪个出版社有兴趣的话,可以联系我。徐建明 ...

    做了三个完整的大数据项目后,我整理了一下大数据的项目实践思路,这里写下总体思路。如果加油的人多,我愿意将其详细编写为一本书,就叫《大数据项目实践指南》吧?哪个出版社有兴趣的话,可以联系我。徐建明 18971024137


    为什么大多数企业都实施大数据项目?

        1,希望进行更有效的分析,他们认识到由此需要分析的数据量也会大幅增加。这些活动往往会由一个业务单位(如营销部门)∙来承担。
        2,企业意识到可以通过实时分析将其产品打包在一个服务层中,帮助客户更高效地使用其产品。
        3,企业希望通过大数据来传达某个业务单位或流程的所有决策,从而提升操作速度,提高操作质量并降低操作成本。
        4,企业意识到大数据对于每个业务单位都相当重要,它们尝试建立以数据为中心纵观全局的基础环境。
        5,企业认识到必须在大数据方面有所作为,不然就会落伍,但并未切实规划出如何开展这项工作。我们的目标就是了解并尝试开展这项工作。
        
    大数据项目为什么会失败?
        1,目标不明朗.此项调查得出的最常见失败原因是项目“范围不准确”。许多企业在项目伊始都雄心勃勃,但目标模棱两可,无法分清项目的轻重缓急。为了实施大数据项目而草率上马,必然会导致灾难。这类项目的复杂性要求企业具有坚定的信念,为取得一定成果而不懈努力。如果目标不确定,则显然是不可行的。
        2,预期目标不合理.在大数据纷纷扰扰的宣传之下,您会对项目的成果做出一下假设,而这些假设往往会产生不利影响。在很短的时间内冒然做出一些承诺虽然看起来会很诱人,但同样非常重要的是,您需要客观地估计项目可能会产生的成果、项目周期以及实现这些成果所需要付出的努力。如果对影响和洞察力的期望过高,则会像大海捞针一般茫然无措。如果对交付成果的期望不切实际,您就会发现您要遵从的截止日期和预算根本就不可行。
        
        3,项目超支和延误.由于对企业来说这方面仍然还是全新事物,您就不难理解大多数大数据项目都会成本超支或时间延误。造成这种问题的原因往往是期望目标不合理、加上对如何构建可扩展体系架构不了解在少数成本高昂的 Hadoop Java开发人员从事着大规模手动编码实施工作的同时,企业也很快认识到脱离沙盒环境而不出现任何错误是不可能的。大数据项目终归会沦落为一项科学实验
        
        4,无法扩展.要想找到五名优秀的 Hadoop Java 开发人员绝非易事。然而,随着项目的发展,一年需要扩充到30名 Java 开发人员,事情可能就变得愈加棘手。最糟糕的并非Hadoop 群集无用武之地而是白白浪费了时间并失去了动力。企业往往青睐短期的权宜之计,而忽视了长期的可持续发展。虽然我们可以不负责任地提醒您可以避免这种取舍,但我们还是要着重强调长期发展的重要性。为了让您的数据获得合理的保护和管理,您需要随时关注项目的长期影响。大数据项目失败的四个原因令人担忧,但的确很常见。所以,接下来让我们来看看如何避免这些因素,建立一个长久的实施方法。
        
    如何让大数据项目成功运行
        1, 制定清晰的目标并对期望目标进行管理如果您不确定该项目的目标,请参考您为现有数据基础设施制定的目标。如果企业的某些业务流程(如欺诈检测或市场分析)已经需要用到数据,请想想大数据如何才能改进这些流程或提升其价值。与其应对全新的问题,不如致力于改进现有流程或项目。如果没有明确的方向并向业务用户展示出价值,您的项目将难逃厄运。
        2,确定能够证明项目。价值的指标明确定义贴合项目目标的指标可以让您避免诸多麻烦。为自己制定一些可以衡量的现实目标,其他人就能够看出您所取得的进展。更重要的是,他们也可以看出您的长期目标是什么。问问自己,根据您的目标,您如何衡量项目的影响。这一点非常重要,因为您的业务用户需要为短期失败找到合理的原因,而可衡量的目标可以帮助您证明您正在实现更高的价值。
        3,从战略的角度使用工具和手动。编码避免直接在 Hadoop 中对所有内容进行手动编码。请记住,我们的目标并不是从零开始人工实施一个有效的环境——而是为企业提供大数据的价值。您不应尝试对每一次集成和所有分析进行手动编码并清理每一个数据集,而是应借助工具和自动化技术来加快这些流程的执行。尤其是,不要让少数成本高昂的Java 开发人才把时间浪费在无法让其他员工接手的工作上。您的职责是制定战略决策,将稀缺资源部署到能够实现您的目标的地方。借助现有 ETL、数据质量和商业智能专家的技能和知识,采用能够提高开发团队工作效率的工具,将 Java 高手解放出来,从事具体逻辑工作。此外,由于像 Hadoop 这样的技术日新月异,您就需要考虑采用一个抽象层来应对不断变化的基础技术规范。总之,请记住,您需要的技能是稀缺的——而工具随时可用。

    何谓正确的项目
        1,明确的价值。所谓正确的项目,就是要使 IT 与您尝试提供帮助的业务单位都能分享到项目所带来的价值。也就是说,需要为部门、业务单位或小组提供明确的价值,让他们都可以看得到。
        2,赞助方。高管能够支持您的愿景是项目取得成功的关键。大数据项目需要得到高层的拥护和赞同,愿意为您的工作提供支持。所以,如果您可以为物流部门打造超群的分析能力,而支持您这种想法的高管只有 CMO,您就应该三思而后行。如果营销部门拥护您的工作,您就应该优先满足营销部门的分析需求。您不能强迫任何人做出改变。顺势而为,尽力发挥最大价值。
        3,保龄球效应。您的首个战术项目具有至关重要的战略意义。您不仅要力排众议,证明大数据可以为您所在的业务单位提供帮助,还要确保它的价值可以轻松地传达给整个企业。因此,对于首个项目,您必须从战略的角度进行选择。举例来说,在您向营销部门展示出大数据的价值之后,争取获得可能持保留意见的物流团队的支持就会比较容易。
        4,可传授的技能。正如上面所说,您希望首个项目的价值能够让企业的其他部门信服。为此,您需要确保能够从首个项目中获得正确的技能、能力和经验教训。具体地说,就是您要确保将这些技能、能力和经验教训文档化,以便在下一个项目中加以运用。请记住,取得成功需要放眼未来。随时做好扩展的准备,这样您才能在将来处理更多的项目。这不只是扩展群集的问题,而是扩展您的技能和运营规模的问题。您需要召集更多的 Java/Hadoop高手,或者找到能够充分发挥现有资源潜能的方法。
        
    考虑产生的影响
        1,成本和干扰。从根本上说,项目成本取决于顺利开展项目所需要的时间和资金。实际上,您还应考虑项目可能会造成的干扰。有时,由于业务单位习惯自行掌控数据,而不希望将控制权转移给一个中央数据治理框架,这样就会在过程上造成干扰。而如果您需要将新技术集成到现有基础设施中并对技能进行重组或升级,则会在技术和技能方面造成干扰。无论哪种情况,您都应该想到并确保尽可能地避免干扰,或者说明避免干扰的重要性。
        2,产生收益和影响的时间。当考虑不同的启动项目时,您自然而然会倾向于能够产生最大业务影响和提升的项目。然而,对业务影响性质的考虑也很重要。项目的多数价值是在短期还是长期内实现?更重要的是,业务用户什么时候才能感受到这种业务影响?例如,您可以向数据仓库引入主数据管理并大幅提高您的商业智能效率。但是,只有您的业务分析师意识到无需再清理财务数据的时候,这种价值才能被感知。
        3,资源和限制。鉴于您对前述两个因素的分析,请考虑您能支配的资源。我们随后会更详细地探讨这一点,但现在,请记住一点,您当然是希望您的项目能不枉您的投入。实现这个目标涉及两个方面。一方面,您希望实现最大限度的业务影响。然而,同时您也必须战略性地使用您的预算。尽管您可能会有建立像 Google 那样的数据科学家团队的冲动,但您真的负担得起吗?在工具和人员之间做出明智的选择,对您项目的成功至关重要。

    战术性大数据项目示例
        1,一家大型科技公司希望通过结合 Hadoop 和传统的数据仓库技术,降低每 TB 的整体成本增长,从而节省几百万元的数据仓库成本增长。
        2,一家大型运输制造商计划在未来 10 年将汽车燃油消耗率降低 1%。这家制造商也希望通过将维护期延长 10% 并将里程提高 1%,从而降低有毒碳排放。
        3,一家机车制造商希望将日常路线提高每小时公里数,从而使客户每年可节省 2 亿元。
        4,一家支付服务公司希望通过改善客户个性化体验将数字业务增加 30%,作为其“零售全方位优化”大数据战略的一部分。对于任何大数据团队来说,这些都是不小的成就。

    基础大数据之旅
        1,数据仓库优化。这一步要求选择在最经济高效的平台上存储和处理数据。该步骤的开始,通常要将原始数据或不常用数据以及 ETL 工作负荷从昂贵的数据仓库硬件中移除。其目的是避免数据仓库昂贵的升级成本,并开始使用更便宜的硬件和 Hadoop 等分布式计算框架,因而使您做好处理大数据的量、种类以及速度的准备。
        2,管理数据湖。管理数据湖是管理您所有数据供需的单个位置。这里的关键词是“管理”。该步骤的目的是将多结构的杂乱数据变成适用、可靠和安全的信息。这意味着建立可以优化、治理和控制您数据的数据湖。这就需要有足够的远见,因为要建立数据湖,您需要融合严格、战略性的数据治理策略和流程。没有这些策略和流程,您的数据湖就会有基本陷入数据瘫痪境地的风险。
        3,实时运营智能。这一步,您将建立您的团队访问、分析和交付所有数据所需的技术(分析、需要大量数据的应用系统以及参与接口)。您在该步骤建立的应用系统必须易于使用并交付用户需要的信息。这可以是一个接口,供客户服务代表多渠道监控客户行为并确定未来两周最可能流失的客户。
        如前文所述,要获得最大的成本优势,我们建议按下面顺序执行这些步骤。降低您的基础设施成本并增强企业体系架构。
        1,数据仓库优化。建立管理您所有数据供需的单个位置。
        2,管理数据湖。建立可提供您的团队所需信息的前沿应用系统。
        3,实时分析。建立可提供您的团队所需信息的前沿应用系统。

    定制业务目标调研表,IT目标调研表

    五个关键数据考虑事项
        1,为海量数据做好准备。您必须做好应对需要“海量”数据的准备。从多个角度根据数据价值(如客户交易)、使用情况( 访问频率)、大小(GB,TB)、复杂度(机器数据、关系数据、视频……)以及允许访问数据的人员(只有数据科学家或任何临时业务用户)对数据进行分类。全面、有序的数据库存有利于您确定如何对所有数据进行管理。评估您的当前存储和处理能力,并寻找最经济高效的方式来扩展它。
        2,应对多样性。大数据最具挑战性的一面是,您必须在分析中统协多种不同的格式和结构。如果要在您已经习惯使用的数据源(旧式关系型大型机)之外增加新的数据类型和结构(社交、传感器、视频),则您必须集成大量的数据源。如果要对每次集成都进行手动编码,则会非常繁琐,它可能会耗费您的所有时间和资源。充分利用所提供的数据集成和数据质量工具,可以让更有价值的任务加快进度。
        3,处理速度。实时流数据和历史数据相结合往往能提高分析的预测能力。因此,您所需要的某些数据只有在不断涌入您的系统时才可能有价值。实际上,大多数实时分析都需要基于流数据进行 – 这种数据通常来自不同的源并采用不同的格式。为您的项目准备流分析技术和一个逻辑基础设施,以便管理所有数据。
        4,确保真实性。无论您的分析有多么重要,如果人们没有理由信任其中的数据,它就一文不值。您分析的数据越多,保持较高的数据质量就越重要。为使您的数据满足实际需要,您需要了解数据的用途。如果数据科学家要在聚合的客户数据中找到数据模式,则需要准备的数据就会大为减少。另一方面,财务报表和供应链数据需要进行精心组织、进行清洗并获得认证,才能确保准确性和合规性。根据需要准备的数据创建类别,包括原始数据以及由经过清洗的可靠权威数据组成的数据存储等,该数据存储已进行精心组织并会受到掌控。
        5,考虑合规性。您处理的不同数据集也会具有不同的安全规定和要求。对于每个数据集,您需要考虑需要采取什么措施来根据安全策略对数据进行匿名化处理。您的海量数据会分散在企业的数百个数据存储中。您需要熟悉敏感数据所在的位置,并通过加密来确保其数据源的安全性,然后对有权访问该数据的人员加以控制。除了对敏感数据进行安全、智能存档之外,还要随时在其迁移或进入开发和测试环境时使用预定义的规则使该数据脱敏。对要处理的每个数据集应用上述五个考虑事项,您就可以更现实地做好准备来迎接大数据的挑战。
        

    人员准备:
        1,数据科学家
        2,行业专家
        3,业务分析师
        4,数据分析师
        5,数据工程师
        6,数据库管理员
        7,企业架构师
        8,业务解决方案架构师
        9,数据架构师
        10,数据管理员
        11,ETL(数据集成)开发人员
        12,应用系统开发人员
        13,仪表盘开发人员
        14,统计数据建模人员



    工具:

    1,数据注入。以合理的方式采用合理的方法高效利用数据的过程。
        批量加载。您是否可以访问所需的各种数据,并高效地将批量加载的性能扩展至数据存储?
        变更数据捕获。您是否可以在不影响源系统的情况下捕获对源系统中的数据所做的更改?
        数据流。您是否可以可靠地收集实时数据并将其流式传输到数据存储?
        存档。您是否可以存档和压缩不常用的数据,同时确保可以在需要时轻松访问存档的数据?
        
    2,数据管理
        数据集成。您是否可以准备各种结构和数据源并将它们整合成一个统一的数据集进行分析?
        数据质量。您是否可以可靠地清洗数据、进行重复数据删除并删除错误?
        数据安全性。您是否可以通过分配使用、访问和权限规则来发现和保护所有数据存储中的数据?
        虚拟数据机。您是否可以为基础部署环境中松散处理的数据创建一个抽象层?
        主数据管理。您是否可以为各种数据域存储一个经过整合的完整而权威的真实数据版本?
        分布式数据框架。您是否可以使用 Hadoop 之类的技术经济高效地扩展您的存储和处理需求?
        数据仓库。您是否具有可以满足性能、使用和可扩展性要求的数据仓库技术,以实现 Hadoop 基础设施的大数据分析和集成?

    3,数据交付。将您的数据发送到需要该数据的系统和应用系统的过程。
        批量加载。您是否可以在源系统、分析系统和操作后端系统之间扩展数据批量加载的性能?
        实时流。您是否可以实时将数据流式传输到需要该数据的应用系统、分析系统和后端系统?
        数据集成中心。您是否可以使用发布-订阅模式之类的方法来提供数据,以避大量进行点对点集成?
        数据虚拟化。您是否可以在避免数据超载的情况下从您的系统交付数据?
        基于事件的处理。您是否可以实时检测、分析和响应威胁、机会和其他关键业务事件?

    4,分析。将原始数据转化为对要分析的域生成的洞见、模式、预测和计算的工具和流程。
        可视化。您是否可以用易于消化和理解的方式展示数据和结果?
        高级分析。您是否可以将前沿分析算法应用到数据集进行复杂的计算?
        机器学习。您是否可以在不必进行手动处理的情况下采用复杂的机器学习算法来识别模式并做出预测?
        

    展开全文
  • 项目目标和总体规划思路 流程优化和IT规划项目的主要成果 未来建设规划和下一步工作
  • 知识图谱总体构建思路(流程图)

    千次阅读 2019-04-25 16:49:42
    1 知识图谱的总体构建思路 如图所示,从原始的数据到形成知识图谱,经历了知识抽取、知识融合(实体对齐)、数据模型构建、质量评估等步骤。 原始的数据,按照数据的结构化程度来分,可以分为结构化数据、半结构...

    1 知识图谱的总体构建思路

    如图所示,从原始的数据到形成知识图谱,经历了知识抽取、知识融合(实体对齐)、数据模型构建、质量评估等步骤。

    原始的数据,按照数据的结构化程度来分,可以分为结构化数据、半结构化数据和非结构化数据,根据数据的不同的结构化形式,采用不同的方法,将数据转换为三元组的形式,然后对三元组的数据进行知识融合,主要是实体对齐,以及和数据模型进行结合,经过融合之后,会形成标准的数据表示,为了发现新知识,可以依据一定的推理规则,产生隐含的知识,所有形成的知识经过一定的质量评估,最终进入知识图谱,依据知识图谱这个数据平台,可以实现语义搜索,智能问答,推荐系统等一些应用。

    以下对知识图谱构建中的步骤进行详细的介绍。

    2 知识抽取

    我们将原始数据分为结构化数据、半结构化数据和非结构化数据,根据不同的数据类型,我们采用不同的方法进行处理。

    2.1 结构化数据处理

    针对结构化数据,通常是关系型数据库的数据,数据结构清晰,把关系型数据库中的数据转换为RDF数据(linked data),普遍采用的技术是D2R技术。D2R主要包括D2R Server,D2RQ Engine和D2RRQ Mapping语言。

    D2R Server 是一个 HTTP Server,它的主要功能提供对RDF数据的查询访问接口,以供上层的RDF浏览器、SPARQL查询客户端以及传统的 HTML 浏览器调用。 D2RQ Engine的主要功能是使用一个可定制的 D2RQ Mapping 文件将关系型数据库中的数据换成 RDF 格式。D2RQ engine 并没有将关系型数据库发布成真实的 RDF 数据,而是使用 D2RQ Mapping 文件将其映射成虚拟的 RDF 格式。该文件的作用是在访问关系型数据时将 RDF 数据的查询语言 SPARQL 转换为 RDB 数据的查询语言 SQL,并将 SQL 查询结果转换为 RDF 三元组或者 SPARQL 查询结果。D2RQ Engine 是建立在 Jena(Jena 是一个创建 Semantic Web 应用的 Java 平台,它提供了基于 RDF,SPARQL 等的编程环境)的接口之上。 D2RQ Mapping 语言的主要功能是定义将关系型数据转换成 RDF 格式的 Mapping 规则。

    2.2 半结构化数据处理

    半结构化数据,主要是指那些具有一定的数据结构,但需要进一步提取整理的数据。比如百科的数据,网页中的数据等。对于这类数据,主要采用包装器的方式进行处理。

    包装器是一个能够将数据从HTML网页中抽取出来,并且将它们还原为结构化的数据的软件程序。网页数据输入到包装器中,通过包装器的处理,输出为我们需要的信息。

    对于一般的有规律的页面,我们可以使用正则表达式的方式写出XPath和CSS选择器表达式来提取网页中的元素。但这样的通用性很差,因此也可以通过包装器归纳这种基于有监督学习的方法,自动的从标注好的训练样例集合中学习数据抽取规则,用于从其他相同标记或相同网页模板抽取目标数据。

    2.3 非结构化数据处理

    对于非结构化的文本数据,我们抽取的知识包括实体、关系、属性。对应的研究问题就有三个,一是实体抽取,也称为命名实体识别,此处的实体包括概念,人物,组织,地名,时间等等。二是关系抽取,也就是实体和实体之间的关系,也是文本中的重要知识,需要采用一定的技术手段将关系信息提取出来。三是属性抽取,也就是实体的属性信息,和关系比较类似,关系反映实体的外部联系,属性体现实体的内部特征。

    非结构化数据的抽取问题,研究的人比较多,对于具体的语料环境,采取的技术也不尽相同。举个例子,比如关系抽取,有的人采用深度学习的方法,将两个实体,他们的关系,以及出处的句子作为训练数据,训练出一个模型,然后对于测试数据进行关系抽取,测试数据需要提供两个实体和出处的句子,模型在训练得到的已知关系中查找,得出测试数据中两个实体之间的关系。这是一种关系抽取的方法。还有人用句法依存特征,来获取关系,这种方法认为,实体和实体之间的关系可以组成主谓宾结构,在一个句子中,找出主谓关系和动宾关系,其中的谓词和动词如果是一个词,那么这个词就是一个关系。比如说“小明吃了一个苹果”,主谓关系是“小明吃”,动宾关系是“吃苹果”,那么就认为“吃”是一个关系。

    当然,还有其它很多方法,可以在一定程度上实现实体抽取,关系抽取和属性抽取,效果可能会有差异,这需要在实践中测试和完善。

    3 知识融合

    知识融合,简单理解,就是将多个知识库中的知识进行整合,形成一个知识库的过程,在这个过程中,主要需要解决的问题就是实体对齐。不同的知识库,收集知识的侧重点不同,对于同一个实体,有知识库的可能侧重于其本身某个方面的描述,有的知识库可能侧重于描述实体与其它实体的关系,知识融合的目的就是将不同知识库对实体的描述进行整合,从而获得实体的完整描述。

    比如,对于历史人物曹操的描述,在百度百科、互动百科、维基百科等不同的知识库中,描述有一些差别,曹操所属时代,百度百科为东汉,互动百科为东汉末年,维基百科为东汉末期;曹操的主要成就,百度百科为“实行屯田制,安抚流民消灭群雄,统一北方,奠定曹魏政权的基础,开创建安文学,提倡薄葬”,互动百科为“统一北方”,维基百科为“统一了东汉帝国核心地区”。

    由此可以看出,不同的知识库对于同一个实体的描述,还是有一些差异,所属时代的描述差别在于年代的具体程度,主要成就的差别在于成就的范围不同,等等,通过知识融合,可以将不同知识库中的知识进行互补融合,形成全面、准确、完整的实体描述。 知识融合过程中,主要涉及到的工作就是实体对齐,也包括关系对齐,属性对齐,可以通过相似度计算,聚合,聚类等技术来实现。

    4 数据模型构建

    上一篇文章,我们阐述过知识图谱的构建方法,提到知识图谱的数据整体上可以分为数据模型和具体数据,数据模型就是知识图谱的数据组织框架,不同的知识图谱,会采用不同的数据模型。对于行业知识图谱来说,行业术语、行业数据都相对比较清晰,可以采用自顶向下的方式来建设知识图谱,也就是先确定知识图谱的数据模型,然后,根据数据模型约定的框架,再补充数据,完成知识图谱的建设。 数据模型的构建,一般都会找一个基础的参考模型,这个参考模型,可以参照行业的相关数据标准,整合标准中对数据的要求,慢慢形成一个基础的数据模型,再根据实际收集的数据情况,来完善数据模型。也可以从公共知识图谱数据模型中抽取,将与行业有关的数据模型从公共知识图谱数据模型中提取出来,然后结合行业知识进行完善。

    5 知识推理

    知识推理,就是根据已有的数据模型和数据,依据推理规则,获取新的知识或者结论,新的知识或结论应该是满足语义的。知识推理,依据描述逻辑系统实现。描述逻辑(Description Logic)是基于对象的知识表示的形式化,也叫概念表示语言或术语逻辑,是一阶谓词逻辑的一个可判定子集。

    一个描述逻辑系统由四个基本部分组成: 最基本的元素:概念、关系、个体;TBox术语集:概念术语的公理集合; Abox断言集:个体的断言集合;TBox 和 ABox上的推理机制。

    描述逻辑涉及到的内容也比较多,此处举几个例子,比如实体的分类包含关系,一个电脑椅是椅子,椅子是家具,可以说,一个电脑椅是家具。常识规则的推理,一个男人的孩子是A,一个女人的孩子是A,可以知道,这个男人和女人是配偶。

    通过推理发现新的知识,应用比较多,说明知识图谱的时候也经常不自觉的会应用推理,比如前两年比较受人关注的王宝强离婚案,为什么会聘用张起淮做律师,通过知识图谱可以很清楚知道,王宝强和冯小刚关系比较密切,冯小刚聘用张起淮作为律师顾问,所以王宝强很容易和张起淮建立关系,这也可以看作是知识推理的范畴。当然,更确切地说,应该是规则的范畴。推理更强调的是固有的逻辑,规则一般是和业务相关的自定义逻辑,但推理和规则都是通过逻辑准则,获取新的知识或发现,在这里先不做区分。

    6 质量评估

    质量评估,就是对最后的结果数据进行评估,将合格的数据放入知识图谱中。质量评估的方法,根据所构建的知识图谱的不同,对数据要求的差异而有所差别。总的目的是要获得合乎要求的知识图谱数据,要求的标准根据具体情况确定。 比如对于公共领域的知识图谱,知识的获取采用了众包的方法,对于同一个知识点,可能会有很多人来完成,如果这个知识点只有一个答案,可以采用的一种策略是,将多人的标注结果进行比较,取投票多的结果作为最终的结果。当然,这是不严谨的,因为真理往往掌握在少数人的手里,特别是针对一些行业的知识图谱,表现尤为突出。行业内的一条知识,可能只有行业专家能够给出权威正确的答案,如果让大众投票来决定,可能会得到一条错误的知识。所以,针对行业知识图谱,可能会采用不同于公共知识图谱的策略,来进行知识的质量评估。

    以上零零散散的将知识图谱的构建过程,大体做了一个描述,知识图谱的构建是一个复杂的系统工程,涉及到的知识和技术都很多,肯定会有很多知识或技术没有说到,或者是描述的比较浅显,没有把握住一些构建方法的本质,希望大家补充,我会在后面做项目的过程中,不断细化构建过程,将构建中碰到的具体问题,再进行详细的描述说明。

    展开全文
  • 近年来煤炭矿区总体规划环评工作开展情况良好,到目前为止,已有80余个国家规划矿区编制了总体规划环境影响报告书,部分评价结论被规划编制和审批部门采纳,发挥了积极作用。但总体来看,报告书编制仍普遍存在宏观性不足...
  • 文章发后,接受不少朋友的建议和意见,做了修改,现整理发给大家新版: ...要做好运维服务工作就得围绕用户满意度,推进“扎根”工作,“扎根”就是服务更加贴近用户实际,急用户所急,想用户所想,加强主动服务,

    文章发后,接受不少朋友的建议和意见,做了修改,现整理发给大家新版:

    一、 运维工作目标

    运维工作的目标是以行业用户满意度为导向,展开运维服务工作。企业需要发展,发展离不开我们的用户,用户满意度为导向能时刻提醒我们怎么做好运维服务工作,做好了运维服务工作,才能发展;要做好运维服务工作就得围绕用户满意度,推进“扎根”工作,“扎根”就是服务更加贴近用户实际,急用户所急,想用户所想,加强主动服务,帮用户解决实际工作中的困难与问题,让用户“放心、舒心、开心”。扎根是行动,结果是成长,让运维始于“扎根”,长于“大树”。这样的发展是有根基的,是持久的、有潜力的。

    在此过程中,每位运维人员都将是公司发展的受益者,也都将成为运维这棵参天大树的主干,成为公司的骨干。

    二、 运维工作理念

    运维服务工作要扎好根,秉承“科学化、透明化、人本化”的运维理念十分重要。

    日常工作中,运维人员应严格遵守ISO20000流程要求开展运维,这是运维科学化的具体体现;在此基础上,要让用户和公司了解并掌握运维在做什么、做得怎么样,使运维工作完全是透明的,内外部均可视、可见;同时,无论是对外部客户的服务,还是设计内部工作流程,均应坚持以人为本,和谐共进。落实理念,日常工作中可记住这六句话重承诺、守纪律、遵规范、讲计划、抓执行、求效率。

    (1)重承诺:对于用户的任何承诺,包括:服务的目标与级别要求、提供的资源或方案、应给予的回复等,运维人员都应在约定的时间内、按约定的要求予以提供或实现,严格履行承诺,做到守信用,在客户中树立良好口碑。确因特殊原因导致无法履行时,应提前和用户进行说明和解释,获得对方的谅解;并提出补救措施,以尽量接近当初的承诺。

    (2)守纪律:作为一名IT运维人,应该严格遵守公司规章制度和运维体系规范,这是公司对每位运维人员的基本要求。工作中,我们必须时刻督促自己,努力做到严格遵守公司制度和运维规范,从着装到言谈举止,从出勤到运维操作,都应遵循相应的制定与规范要求,实现与公司共同发展。

    (3)遵规范:运维工作尤其需要注重规范性,规范是质量的保证,也是效率的前提。规范包括行为规范、作业规范、流程规范,这些规范是我们运维工作的保障,在我们这集中体现在ISO20000和5S等各项制度中。

    (4)讲计划:工作计划是整个运维工作展开的龙头,工作计划依据公司要求及对用户的承诺而制定,各项运维服务将围绕计划展开。在实际工作中,计划就等同于策划,更等同于创造。是发挥自己聪明才智的窗口,每个月的工作计划实际都是在设计一项工程,把每个月的工作根据实际设计好得到公司和用户的认可,做到胸有成竹,只有这样不断的PDCA,才能一步一个台阶的让运维工作前进,同时也实现了自我价值的提升,得到公司和客户的认同。要注意的是,计划制定和质量的改进都要依据实际情况。无论是制定计划还是进行质量改进都必须依据实际情况,不能闭门造车,僵化的根据公司要求制定计划,教条的根据公司要求进行改进,这都是违背科学化的。特定情况下,可以选择特殊的方法,但是一定要合理,经得住推敲。

    (5)抓执行:计划做的好,更要的是执行的好,而规范和质量是计划执行的保障,按照既定的工作计划,在接受工作后尽一切努力、想尽一切办法把工作做好,以用户满意为目标来要求自己。对于布置的工作抓执行就要着眼于细节,要把工作展开,想好每一个细节,做好每一个细节,同时要把控好时间和质量。在执行过程中发现计划需要变化,应按规范及时做好变更。作为运维人员,对于用户的关切点、重大事件处理进展、用户提出的需求与建议,要及时给予报告与反馈,让用户的知情权得到充分体现,这也是对用户的尊重。

    (6)求效率:效率是我们日常工作中保障客户满意度的重要条件之一。效率就是生命,因此,运维人员必须强化时间观念和效率意识,树立“迅速反应、立即行动、马上就办”的工作理念,坚决克服工作懒散、办事拖拉的恶习,在日常工作中我们应当通过创造和改进不断的提升我们的服务效率;均应树立“想用户之所想,急用户之所急“的观念,将用户对运维的迫切性放在首要位置,并想一切办法(包括储备必要的备品备件、做好应急预案等)让用户的故障或需求能在最短的时间内得到解决或满足。

    当然,任何规范制度不一定都能覆盖我们遇到的所有运维工作,但是只要我们坚持这个运维理念,按理做事,我们就一定能把工作做到实处。

    三、 运维工作的一些原则

    1. 规范化原则

       规范是运维服务工作的生命线。没有规范就没有有效的执行,没有规范就没有有效的落实,没有规范就没有有效的资源调度,没有规范就无法控制运维风险。没有了这些,要做到用户满意就是“水中花、镜中月”。因此,各级运维人员应具备高度的规范运维意识,除了做好自我约束,还应指导其他同事按规范要求开展运维。

    2. 合理化原则

    运维工作讲求合理,但凡合理的事情公司和运维部门都是支持的。首先,计划制定和质量改进都要依据各业务组实际情况,不能闭门造车,僵化的根据公司要求制定计划,教条的根据公司要求进行改进,这都是违背科学化理念的。其次,计划可根据实际情况变化而变化,合理的变更不仅是可以的,而且是应该的。特定情况下,可以选择特殊的方法,但是一定要合理,经得住推敲。

    运维团队支持合理化的诉求,对不合理安排的任何诉求都可以通过正常渠道提出来,PDCA的目的就是让减少不合理的存在。

    3. 创新性原则

    运维工作需要创新,创新是运维工作持续发展的动力。运维的方式、方法、服务内容等都需要适应不同阶段的需要、适应用户的需要而进行创新,不能因循守旧,更不能吃老本。我们目前看起来还算领先的东西,也许过不了多久就被别人学到了,如果不推陈出新,只能被别人超越。因此,运维工作的任何创新都是值得提倡和发扬的。

    4. 充分沟通原则

    运维工作要加强对内外部的充分沟通,做到有求必应、传递及时、信息对称、沟通充分。能否解决故障或问题对运维来说很重要,但在过程中进行充分沟通则必不可少。这是对尊重用户的具体体现,也是促进运维工作或运维项目顺利推进的重要保障。各级运维人员应做好工作的及时汇报、协调、告知和反馈等,并力求所沟通信息的全面、准确、对称。

    四、 运维工作方法

    在服务过程中,要遵循以下七个方面的要点:

    1.控制运维风险是前提

    运维工作首先要确保不出现运维事故,各级运维人员应严控运维各方面的风险,避免因为运维人员人为原因导致的运维事故(影响企业业务连续性或数据完整性与准确性),这是运维的最基本要求与前提。

    用户不一定能记得运维工作的成绩,但一定能记住运维工作的污点。因此,各级运维人员应有确保运维稳定这根“弦”,时刻做好运维风险的防范与控制,不要让任何运维事故发生在我们自己身上。

    2.扎根是提升客户满意度的根本

    扎根是提升客户满意度的根本。扎根工作必须以“做好事、做好人”为基础,和我们的客户逐步形成深厚的“鱼水情”,实现“你离不开我、我离不开你”的互信关系。只有这样,我们才算深深的扎入到烟草行业这片沃土中。当然,运维扎根工作要始终贯彻“科学化、透明化、人本化”的运维理念。

    3. 效率是客户满意度的保障

    效率是我们日常工作中保障客户满意度的重要条件之一,效率也是运维的精髓。因此,在日常工作中,我们应当通过创新进行持续改进,不断提升我们的运维服务效率。这是我们能做到的,也是应该做到的。

    4.计划是运维工作的指导

    计划是运维工作的龙头,是我们贴近实际的第一步,是扎根的关键,是创造的蓝图,运维工作做得好不好,首先要看计划做得好不好,有没有体现实际,有没有体现大家的工作思考,有没有反应PDCA,因此各级运维人员均应重视计划、重视策划。

    5.计划落实是关键

    运维工作做得好不好,还得看计划执行得好不好。计划做得再好,若得不到有效的执行,其结果也无法达到预期。因此,在做好计划的基础上,每个人应了解自己应该做什么、怎么做、做到什么程度,并按照预先的策划开展各项工作,直至达到预期的效果。计划的落实是运维工作得到有效执行的关键。

    6.技术与业务是支撑

    运维质量和效率都是建立在懂业务、熟技术的基础上的,日常运维工作除了注重规范外,还要通过岗位练兵强化自身的技术技能,并熟悉和掌握相关业务,只有这样才能让我们的计划更符合实际,才能在服务过程中不断创新,最终达到让用户满意的目标。

    7.持续改进要贯穿始终

    运维工作不可能十全十美,难免存在这样或那样的问题,但只要能正视存在的问题并予以针对性改进,就能让运维工作越来越好。在日常工作中我们要不断的检视自己的工作效果,找到提升的方向和方法。通过检视和评价质量的好坏,通过检视和评价计划执行的效果,从而不断改进我们的服务,提升我们的水平。



    展开全文
  • 正好这段时间我们在封闭研发我们的新一代数字化云平台(theplatform),借此机会和大家分享一下我们的总体设计及思路:theplatform是一款基于微服务架构的DevOps容器云平台,设计主体分成了三个步骤: 1.看问题:...
  • 大致总体设计过程策略我的基本采用如下图所示思路(我比较喜欢绘图,图会让人比较直观) 问自己第一个问题是:这个项目要实现什么主要功能?这个来自哪里?如果是实际产品开发,则可能来自市场的需求,如果是自己的...
  • 切入正题,在开始之前呢,我们要先缕清思路,下面我们一起来分析一下: 首先,大家要清楚,我们的首要目标是把程序编写出来,至于后期的美化工作,每个人有自己的爱好,可以说,掌握方法之后,你想美成哪样,就美成...
  • 产品设计思路及流程

    千次阅读 2022-02-10 09:03:43
    产品设计思路 ——(供应链为例) 供应链端,主要是负责采购,仓储,物流这方面的业务系统设计 从业务的角度,产品的设计工作的几个思路: 第一,工作任务化。 作为后端产品经理,不需要向前端的产品经理那样,拥有...
  • 本文是第1部分,将主要从Tomcat如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析Tomcat的工作原理,这也是一个Web服务器首要解决的关键问题。本文以Tomcat5为基础,也兼顾最新的...
  • MFC编程思路和技巧

    2015-02-03 10:23:37
    MFC的架构描述和工作原理分析!主要参考MFC深入浅出教程!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,509
精华内容 29,003
关键字:

总体工作思路