精华内容
下载资源
问答
  • 由阶段组成(通常包括项目规划阶段、实施阶段和完成阶段等,每个阶段确定了开始和结束点,每个阶段都有质量保证QA/质量测试QC人员对阶段的里程碑点进行检查并进行相应的阶段评审),一系列有逻辑关系的阶段,阶段通常...

      接受项目管理培训至今已经有三年时间了,一直没有机会来整理一下自己在项目管理方面的学习历程和经验。好记性不如烂笔头,从今天开始就一步一步分享一下我在项目管理方面的学习历程以及一些在工作中累积的经验,希望可以帮助到从事项目管理的人!

      在前面的博文项目管理 之一 软件开发生命周期(软件开发过程、瀑布模型、敏捷开发等) 中我们说过 软件开发生命周期 ≠ 项目的开发周期。接下来就再进一步,站在整个项目的角度来了解一下软件项目管理。

    注意:

    1. 这部分仅仅是自己学习记录的一些总结,所以内容大多数都是来自互联网或者各种书籍。如果您发现对您构成了侵权,请随时联系我进行处理。
    2. 这部分内容都是一些理论,实际项目中往往与理论有所不同。例如,阶段划分更加详细,项目活动可裁剪等

    项目管理

      项目这个概念非常的广泛,项目管理同样是个范围很大的概念。项目管理是管理学的一个分支学科 ,对项目管理的定义是:指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。所谓管理包含领导、组织、用人、计划及控制等五项主要工作。

    项目(Project)是为完成某一独特的产品、服务或成果所做的临时性工作。临时性是指计划有确定的开始日期和结束日期。独特意味着项目的最终结果不重复。

      作为一门学科,项目管理从土木施工、工程、重型国防等多个应用领域发展而来。20 世纪 50 年代项目管理被公认为具有工程模式的管理学科所产生的一门独特的学科。1969 年,项目管理研究所(PMI)在美国成立。PMI 于 1996 年出版了第一版《项目知识管理机构指南》(PMBOK 指南)。这本书是必看的!本文的有些内容就是来自这本指南。

    • PMBOK 每 4 年会更新一次,目前中国使用的官方教材为第六版
    • 全球项目管理业界定义的最重要的价值观是责任、尊重、公正和诚实
    • PMBOK 指南为项目经理提供了指导方针和最佳实践,定义了从项目生命周期到项目管理策略和概念的一切内容。项目管理知识体系指南详细描述了在整个项目生命周期中相互作用和重叠的各种项目管理过程。

      项目管理方法可应用于任何类型的项目。它通常根据项目规模、性质、行业或部门为特定类型的项目量身定做。例如,以建筑、道路和桥梁等工程的交付为重点的建筑行业已经发展了自己的专业项目管理形式,称为建筑项目管理;我们软件行业则有我们的软件项目管理。

    接下来,我们来区分一下三个比较容易混淆的概念:项目生命周期、项目管理生命周期、产品生命周期
    在这里插入图片描述

    项目生命周期

      项目的生命周期是描述项目从开始到结束所经历的各个阶段。通常由 启动阶段、组织与准备阶段(规划阶段)、实施阶段、结束阶段 这四阶段个组成。每个阶段确定了开始和结束点,每个阶段都有质量保证 QA / 质量测试 QC 人员对阶段的里程碑点进行检查并进行相应的阶段评审。
    在这里插入图片描述
      项目阶段是一组具有逻辑关系的项目活动的集合,通常以一个或多个可交付成果的完成为结束。 阶段通常有先后的顺序(如瀑布型),也可以有阶段的交叠。不同行业,不同规模的项目,项目生命周期可以不同。

    项目活动 是确认和描述项目的特定活动,它把项目的组成要素加以细分为可管理的更小部分,以便更好地管理和控制。

      项目规划阶段的目的是为了管控的需要,每一个阶段都可以当成是一个子项目,每一个阶段中都可以执行项目管理生命周期定义的五大过程组。阶段结束时要进行阶段评审。由于项目有特定的目标,在产品生命周期中,一般产品完成后通过验收则项目生命周期即结束。

      项目阶段并没有严格的划分标准。这里所说的 4 个阶段仅仅是指的一般情况。一个具体的项目可以根据项目所属专业领域的特殊性和项目的工作内容等因素划分成不同的项目阶段。

    启动阶段

      启动阶段是整个项目生命周期的第一阶段。这一阶段的目标是确定项目,并获得批准。在此期间,通常有以下项目活动需要项目经理来处理:

    • 需求调研
    • 进行可行性研究
    • 创建项目章程
    • 确定关键利益相关者
    • 选择合适的项目管理方法
    • 选择项目管理工具

    通常,从项目启动会议开始,项目经理向所有相关利益相关者概述项目目标。在会议召开之前,项目经理必须执行以下工作:

    1. 建立目标和可交付成果
    2. 识别团队成员并分配任务
    3. 制定项目计划草案
    4. 定义用于衡量项目成功的指标
    5. 识别和准备潜在的路障
    6. 建立团队沟通的物流和时间表
    7. 选择首选的项目管理方法
    8. 确保您的团队能够访问相关工具并了解相关工具
    9. 安排会议
    10. 设置议程并准备幻灯片

    启动会议议程可能如下所示:

    • 简介:谁是谁?
    • 项目背景:您为什么要进行这个项目? 目标是什么?
    • 项目范围:涉及哪种工作?
    • 项目计划:路线图是什么样的?
    • 角色:谁负责项目的哪些元素?
    • 交流:将使用哪种交流渠道? 您的团队应该期望什么样的会议或状态报告?
    • 工具:将使用哪些工具来完成项目,以及如何使用它们?
    • 后续步骤:需要完成哪些立即行动项目?
    • 问答(Q&A):现场答疑

    到此阶段结束时,项目经理应对项目的目的、目标、要求和风险有更深入的了解。

    规划阶段

      规划阶段对于创建整个团队可以遵循的项目路线图至关重要。为了满足组织提出的要求,所有的细节和目标都在这里列出。在此阶段,通常有以下项目活动需要项目经理来处理:

    • 创建项目计划
    • 制定资源计划
    • 评估项目预算
    • 定义目标和绩效衡量指标
    • 向团队成员传达角色和责任
    • 构建工作流
    • 预测风险并制定应急计划
    • 制定沟通交流计划(可能是会议、交流工具)

    执行阶段

      这个阶段是项目投入时间最多的阶段。可交付品的构建是为了确保项目符合要求。这也是大多数时间、金钱和人被投入的阶段。

      在执行阶段必须时刻对项目进行控制和监测(严格来说,项目的每个阶段都可以控制和监测)。随着项目的推进,项目经理必须确保所有活动的部分都朝着正确的方向无缝地进行。如果由于不可预见的情况或方向的改变而需要对项目计划进行调整,则可能会在这里进行调整。在控制和监测中,项目经理(有可能是公司中专门的 QA 人员)可能需要做以下工作:

    • 管理资源
    • 监控项目性能
    • 风险管理
    • 质量管理
    • 成本管理
    • 变更管理(更新项目计划、修改项目计划)
    • 执行状态会议和报告
    • 协作、沟通

    项目关闭

      结束阶段是项目生命周期的关键一步。它标志着项目的正式结束,并为反思、总结和组织材料提供了一段时间。通常有以下项目活动需要项目经理来处理:

    • 盘点所有可交付成果
    • 处理好任何零碎的事情
    • 将项目移交给客户或负责项目日常运营的团队
    • 进行事后分析,讨论并记录从项目中学到的任何东西
    • 集中组织所有项目文件
    • 与利益相关者和主管沟通项目的成功
    • 庆祝项目完成并感谢团队成员

    阶段关口

    阶段关口在项目阶段结束时进行,将项目的绩效和进度与项目和业务文件比较,这些文件包括 (但不限于):

    • 项目商业论证
    • 项目章程
    • 项目管理计划
    • 效益管理计划

    根据比较结果做出决定(例如继续/终止的决定),以便:

    • 进入下个阶段;
    • 整改后进入下个阶段;
    • 结束项目;
    • 停留在当前阶段;
    • 重复阶段或某个要素。

    在不同的组织、行业或工作类型中,阶段关口可能被称为阶段审查、阶段门、关键决策点和阶段入口或阶段出口。

    项目管理生命周期

      项目管理生命周期是对项目目标的实现进行管理的过程。项目生命周期每个阶段都是通过一系列项目管理活动进行的。这些管理活动被称为项目管理过程。 每个项目管理过程通过合适的项目管理工具和技术将一个或多个输入转化成一个或多个输出。

    项目生命周期的每个阶段都要执行项目管理生命周期
    项目管理的输出一般都是些项目标准文档

      项目管理过程组指对项目管理过程进行逻辑分组,以达成项目的特定目标。过程组不同于项目阶段。项目管理过程可分为以下五个项目管理过程组:

    • 启动过程组: 定义一个新项目或现有项目的一个新阶段,授权开始该项目或阶段的一组过程。
    • 规划过程组: 明确项目范围,优化目标,为实现目标制定行动方案的一组过程。
    • 执行过程组: 完成项目管理计划中确定的工作,以满足项目要求的一组过程。
    • 监控过程组: 跟踪、审查和调整项目进展与绩效,识别必要的计划变更并启动相应变更的一 组过程。
    • 收尾过程组: 正式完成或结束项目、阶段或合同所执行的过程。

      但是,需要注意 阶段 ≠ 过程组。不同行业,不同规模项目的项目管理生命周期大致相同。项目管理生命周期的过程是 PMP(Project Management Professional​) 考试的主要考试范围。

    除了过程组,过程还可以按知识领域进行分类,分为 10 个知识领域(其中始终关注的是范围、进度、成本和质量):

    • 项目整合管理: 包括为识别、定义、组合、统一和协调各项目管理过程组的各个过程和活动而开展的过程与活动。
    • 项目范围管理: 包括确保项目做且只做所需的全部工作以成功完成项目的各个过程。
    • 项目进度管理: 包括为管理项目按时完成所需的各个过程。
    • 项目成本管理: 包括为使项目在批准的预算内完成而对成本进行规划、估算、预算、融资、筹资、管理和控制的各个过程
    • 项目质量管理: 包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求,以满足相关方的期望的各个过程。
    • 项目资源管理: 包括识别、获取和管理所需资源以成功完成项目的各个过程。
    • 项目沟通管理: 包括为确保项目信息及时且恰当地规划、收集、生成、发布、存储、检索、管理、控制、监督和最终处置所需的各个过程。
    • 项目风险管理: 包括规划风险管理、识别风险、开展风险分析、规划风险应对、实施风险应对和监督风险的各个过程。
    • 项目采购管理: 包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。
    • 项目相关方管理: 包括用于开展下列工作的各个过程:识别影响或受项目影响的人员、团队或组织,分析相关方对项目的期望和影响,制定合适的管理策略来有效调动相关方参与项目决策和执行。

    下图显示了管理过程朱与知识领域的对应关系以及在过程中需要的工作:
    在这里插入图片描述

    裁剪

      由于每个项目都是独特的,所以有必要对项目管理过程进行裁剪;并非每个项目都需要《PMBOK® 指南》所确定的每个过程、工具、技术、输入或输出。裁剪应处理关于范围、进度、成本、资源、质量和风险的相互竞争的制约因素。各个制约因素对不同项目的重要性不一样,项目经理应根据项目环境、组织文化、相关方需求和其他变量裁剪管理这些制约因素的方法。

    产品生命周期

      产品生命周期管理的是产品,包括一系列产品阶段:市场调研、产品研发、试产、量产、运营、维护和退市。产品生命周期通常包含顺序排列且不互相交叉的一系列产品阶段。

    产品生命周期指一个产品从概念、交付、成长、成熟到衰退的整个演变过程的一系列阶段。

      产品生命周期由一个或多个项目生命周期组成,也可能分为多个迭代周期来实现。 而项目生命周期也可开发一个或多个产品。一个项目生命周期通常只包含在一个产品生命周期中。在项目生命周期结束即项目完成后,而产品生命周期还需进行产品的运营、维护和退市等阶段。

      与产品生命周期相对应的成本概念是全生命周期成本,包括一次性的项目软硬件投入(一次性成本),以及 3 - 5 年运营或运维成本(持续成本)。

    三重关系

      三重约束,又称项目管理三角,是指适用于每个项目的时间、质量和成本界限。负责控制这些限制的项目管理流程包括进度管理、成本管理和质量管理。下图显示了软件项目的三个限制的关系。
    限制

    我在学习中发现,有部分文章中,质量 被替换为 范围,即:时间、范围和成本。

    软件项目管理

      到目前为止,仍然有很多人有疑问:软件开发项目到底能不能称为项目?这与对于软件工程能不能算是工程的疑问类似。在某些人的认识中,项目或者说工程更多的是指工业建筑中的专有名词。

      自 20 世纪 60 年代以来,软件制造商自行开发了几种专有的软件项目管理方法。今天,软件项目管理方法仍在不断发展,但是当前的趋势已从瀑布模型转移到了模仿软件开发过程的更具周期性的项目交付模型。

      软件项目管理(Software Project Management)就是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。通常,可以将软件开发项目可以分为两大类:

    • 软件项目: 运行于已有通用硬件上的软件系统。例如,PC 上运行的软件,服务器上运行的网站。
    • 系统项目: 运行于特定硬件上的软件系统,除了要开发软件,还要开发对应的硬件。例如各种嵌入式设备。

    如果没有特殊说明,后文我们所说的软件项目管理均指这两种类型的统称。

      软件工程项目管理不同于传统的项目管理,因为软件项目具有独特的生命周期过程,需要多轮测试、更新和客户反馈。目前,大多数 IT 相关项目都以敏捷的风格进行管理,以跟上业务增长的步伐,并根据客户和利益相关者的反馈进行重复。

    过程方法

    2017 年的一项研究显示,任何项目的成功取决于四个关键方面,这些方面被称为 4P :

    1. 计划(Plan):指所有涉及规划和预测的活动。在这个阶段,项目或项目的要素尚未实现;
    2. 过程(Processes):项目管理知识体(PMBOK, Project Management Body of Knowledge)指南中记述,项目主要由一系列预定和结构良好的过程所组成;
    3. 人员(People):人员是项目动态的重要组成部分,一些研究表明,人员是某些项目特有问题的核心。所谓“可怕的结合”,特别是指规划不善和不适当人员的构成;
    4. 权责(Power):描述当局所有的权力与责任、决策者、组织图,执行政策和喜好。

      组织与完成项目活动有许多方法,包括:分阶段、精益、迭代和增量等;也有一些对项目规划的几个扩展,例如,针对结果(基于产品)或活动(基于流程)。不论采行何种方法论,必须精心缜密地考虑项目总体的目标,时程和成本,以及所有参与者和利害关系人的作用和责任。

      对于软件开发项目,在博文 项目管理 之一 软件开发生命周期(软件开发过程、瀑布模型、敏捷开发等) 中介绍的各种过程模型,基本就是指导我们软件开发的方法。但是,由于项目具有独特性,因此标准的生命周期模型往往难以满足项目的特殊需要。通常项目在定义生命周期时,可首先选择一种标准的生命周期模型作为基础,然后指定出适合自己的方法。

    传统的顺序方法

    瀑布式管理方法

      规划项目的最常见方法是对导致最终交付的任务进行排序,并按顺序进行工作。这个过程也被称为瀑布方法——管理项目的传统方法,也是最容易理解的方法。

      这种方法的强大之处在于,每一步都是预先计划好的,并按照适当的顺序安排好。虽然这可能是最简单的最初实现方法,但涉众需求或优先级的任何更改都会破坏一系列任务,使其很难管理。这种方法在可预见性方面很出色,但缺乏灵活性。

    关键路径方法(CPM)

      关键路径方法(Critical Path Method)是在 20 世纪 50 年代开发的,其基础是,有些任务在完成上一个任务之前无法启动。当您从头到尾将这些依赖任务串在一起时,您会绘制出关键路径。

      确定并关注这一关键路径后,项目经理就可以确定优先级并分配资源,以完成最重要的工作,并重新安排可能会阻塞团队的所有低优先级任务。 这样,如果您需要更改项目进度表,则可以在不延迟结果的情况下优化团队的工作流程。

    关键链项目管理(CCPM)

      关键链项目管理(Critical Chain Project Management)将关键路径方法更进一步。CCPM 是一种方法,它侧重于通过在关键路径中增加资源可用性来完成项目任务所需的资源。它还在项目计划中围绕这些任务建立时间缓冲,确保项目满足其最后期限。

    敏捷家族

      由于竞争激烈的商业环境和不断创新,敏捷的项目管理方法越来越受欢迎。一般来说,敏捷方法优先考虑更短的迭期周期和灵活性。

    Scrum

      Scrum 是最受欢迎的敏捷发展框架,因为它的实现相对简单。它还解决了软件开发人员过去遇到的许多问题,例如复杂的开发周期、不灵活的项目计划以及更改生产计划。

    详细介绍见 项目管理 之二 敏捷开发方法 Scrum 最全指导 .

    看板

      看板是基于团队能力实施敏捷的另一个框架。它起源于 20 世纪 40 年代的丰田工厂。各部门使用可视化的卡片系统(“看板”)来表示他们的团队已经为更多的原材料做好准备,并拥有更多的生产能力。

    极限编程 (XP)

      极限编程 (Extreme Programming) 是敏捷的另一个分支。XP 是一种旨在提高软件质量(和简单性)和开发团队适应客户需求的能力的方法。与原始的敏捷开发非常类似,XP 具有工作冲刺短、迭代频繁以及与利益相关者不断协作的特点。变化可能发生在冲刺阶段。如果特定功能的工作尚未开始,则可以将其更换为类似任务。

    自适应项目框架(APF)

      自适应项目框架(Adaptive Project Framework)源于由于不确定和不断变化的需求而难以使用传统项目管理方法来管理大多数 IT 项目的情况。

      APF从需求分解结构(RBS)开始,以根据产品需求,功能,子功能和功能定义战略项目目标。 该项目分阶段进行,在每个步骤的最后,团队都会评估以前的结果以改善性能和实践。

    变更管理方法

    有些方法论用于管理项目,但更侧重于变更管理,尤其是风险规划和在变更发生时进行控制。

    事件链方法(ECM)

      事件链方法(Event Chain Methodology)背后的基本理念是,潜在风险往往不在项目范围之外。必须做好应对这些风险的准备,并计划您的应对措施,因为意外事件会影响您的项目的进度、交付成果以及潜在的成功。

    极限项目管理(XPM)

      极限项目管理 (Extreme Project Management) 与瀑布正好相反。它为您提供了一种管理大规模变革的方法,并且仍然朝着项目完成的方向前进。在 XPM 中,无论项目进展有多远,您都可以更改项目计划、预算,甚至最终交付,以满足不断变化的需求。

    基于过程的方法

    其中每种方法都侧重于将工作作为流程的集合。

    精 益

      精益(Lean)是一种专注于精简和减少浪费的方法(精益求精)。第一步是创建工作流程分解,以识别和消除瓶颈和延迟。目标是用更少的人力、更少的钱和更少的时间为客户提供价值。

    Six sigma

      Six Sigma 于20 世纪 80 年代中期由摩托罗拉的工程师介绍,通过识别项目中不起作用的内容来提高质量。

      Six Sigma 是一种基于统计的方法,旨在通过测量存在的缺陷并消除尽可能多的缺陷来提高过程质量。 如果 99.99966% 的最终产品(您的项目可交付成果)没有缺陷,则该过程可以达到 Six Sigma 等级。

    其他方法

    PRINCE2

      PRINCE2 代表受控环境中的项目。 这是一种用于管理英国政府使用的项目的方法,其特点是基于产品的计划方法。 在 PRINCE2 中,结构化的项目委员会负责高层活动,例如确定业务理由和资源分配。 项目经理负责日程安排等较低级别的日常活动。 这种方法使团队可以更好地控制资源并有效降低风险。

    PRiSM

      PRiSM 代表“集成可持续方法的项目”,旨在在将环境可持续性纳入其流程的同时管理变更。 PRiSM的目标是完成任务,同时减少公司对环境和社会的负面影响。 从字面上看,它是绿色项目管理。

    项目管理的角色

    项目经理

      项目经理密切监视开发过程,准备并执行各种计划,安排必要和充足的资源,保持所有团队成员之间的沟通,以解决成本,预算,资源,时间,质量和客户满意度方面的问题。

      正式的项目经理通常通过美国 PMI 或英国 PRINCE2 之类的机构进行认证。认证后,他们需要通过接受额外的培训来收集目标数量的 PDU(Professional Development Units)来维持其认证。

    1. PDU 代表专业发展单元,是 一种衡量正在进行的专业发展的方法。 为了保持作为项目管理专业人员(PMP)的认证,您将需要维护特定数量的 PDU,这些 PDU 可以通过参加活动或完成课程来获得。
    2. 美国项目管理协会(PMI)举办的项目管理专业人员(PMP)认证考试在全球180多个国家和地区推广,是目前项目管理领域含金量最高的认证。被全球项目管理界人士所认可!

      在实际的工作中,认证并不总是一个要求,它可以是在以后的职业生涯中获得的东西。大多数项目经理通常从工商管理学位开始,但实际中并非总是这样。经验往往比学位更响亮。

      通常,项目经理需要熟练使用 PERT 来对项目进行管理。

    Rrogram (or Project) Evaluation and Review Technique (PERT) 程序(或项目)评估和审查技术是用于项目管理的统计工具,旨在分析和表示完成给定项目所涉及的任务。它最初由美国海军于1958年开发,通常与1957年推出的临界路径方法(CPM)一起使用。

    软件项目经理

      软件项目经理是负责执行软件项目的人员,通常是 PMI 认证的项目管理专业人员 (PMP)。 软件项目经理完全了解软件将经历的 SDLC 的所有阶段。项目经理可能永远不会直接参与最终产品的生产,但他会控制和管理生产中涉及的活动。

    项目成员

    他们是负责完成项目一的人员。 团队成员是熟练的专业人员,他们致力于为项目目标做出贡献。

    客户

    项目产品的交付者。可能来自内部,也可能来自外部。

    利益相关者

    这是在项目中有既得利益的人或团体。它可能是一个组织的内部团体或机构,也可能是公共工程项目的公众。

    风险管理

      风险管理是对风险(在 ISO 31000 中定义为不确定性对目标的影响)的识别,评估和优先级划分,然后协调,经济地使用资源以最小化,监视和控制不幸事件的可能性或影响或最大化机会的实现。风险管理包括与识别、分析和为项目中的可预测和不可预测风险做准备相关的所有活动。

    风险评估

      软件项目风险是指在整个项目周期中所涉及的成本预算、开发进度、技术难度、经济可行性、安全管理等各方面的问题,以及由这些问题而对项目所产生的影响。

      项目的风险与其可行性成反比,其可行性越高,风险越低。软件项目的可行性分为经济可行性、业务可行性、技术可行性、法律可行性等四个方面。而软件项目风险则分为产品规模风险、需要风险、相关性风险、管理风险、安全风险等六个方面。

    成本预算

    自上而下的预算方法(经验估计技术)

      自上而下的预算方法主要是依据上层、中层项目管理人员的管理经验进行判断,对构成项目整体成本的子项目成本进行估计,并把这些判断估计的结果传递给低一层的管理人员,在此基础上由这一层的管理人员对组成项目的子任务和子项目的成本进行估计,然后继续向下一层传递他们的成本估计,直到传递到最低一层。

    该技术使用经验导出的公式进行估算。这些公式基于 LOC 或 FP。

    • Putnam 模型: 该模型由Lawrence H. Putnam制作,该模型基于Norden的频率分布(瑞利曲线)。 Putnam模型映射了软件大小所需的时间和精力。

      关于 Putnam 模型,详见 https://wiki.mbalib.com/zh-cn/Putnam%E6%A8%A1%E5%9E%8B

    • COCOMO: COCOMO 是由 Barry W. Boehm 开发的建设性成本模型(COnstructive COst MOdel)的缩写。它将软件产品分为三类:有机软件、半分离软件和嵌入式软件。

    自下而上的预算方法(分解技术)

      自下而上方法要求运用 WBS(Work Breakdown Structure,工作分解结构)对项目的所有工作任务的时间和预算进行仔细考察。最初,预算是针对资源(团队成员的工作时间、硬件的配置)进行的,项目经理在此之上再加上适当的间接费用(如培训费用、管理费用、不可预见费等)以及项目要达到的利润目标就形成了项目的总预算。

    主要有两种模式:

    • 代码行: 依据软件产品中的代码行数进行估计。
    • 功能点: 依据软件产品中功能点的数量进行估算。

      自下而上的预算方法要求全面考虑所有涉及到的工作任务,更适用于项目的初期与中期,它能准备地评估项目的成本,与真实费用相差在 5% ~ 10% 之间。

    质量管理

      质量管理确保组织、产品或服务是一致的。它包括四个主要组成部分:质量规划、质量保证、质量控制和质量改进。 质量管理不仅注重产品和服务质量,而且注重实现质量的手段。因此,质量管理利用对工艺和产品的质量保证和控制来实现更一致的质量。

    软件质量保证

      软件质量保证(SQA,Software Quality Insurance)是在软件过程中的每一步都进行的“保护性活动”。SQA 主要有基于非执行的测试(也称为评审)、基于执行的测试(即通常所说的测试)和程序正确性证明。

      软件评审是最为重要的 SQA 活动之一。它的作用是,在发现及改正错误的成本相对较小时就及时发现并排除错误。审查和走查是进行正式技术评审的两类具体方法。

    配置管理

      配置管理是根据产品的需求,设计,功能和开发来跟踪和控制软件更改的过程。IEEE 将其定义为:the process of identifying and defining the items in the system, controlling the change of these items throughout their life cycle, recording and reporting the status of items and change requests, and verifying the completeness and correctness of items。

      配置管理是组织管理的一门学科,它负责处理阶段性基础化后发生的任何变化(流程、要求、技术、战略等)。CM 会不断检查软件中所做的任何更改。

    软件配置管理

      软件配置管理(SCM,Software Configuration Management)是应用于整个软件过程中的保护性活动,它是在软件整个生命周期内管理变化的一组活动。是配置管理这个更大的跨学科领域的一部分。

      软件配置管理包括版本控制和基线的建立。如果出现问题,SCM 可以确定更改了什么以及是谁更改了它。如果配置工作良好,SCM 可以决定如何在许多主机上复现它。

      软件配置由一组相互关联的对象组成,这些对象也称为软件配置项,它们是作为某些软件工程活动的结果而产生的。除了文档、程序和数据这些软件配置项之外,用于开发软件的开发环境也可置于配置控制之下。一旦一个配置对象已被开发出来并且通过了评审,它就变成了基线。对基线对象的修改导致建立该对象的版本。版本控制是用于管理这些对象而使用的一组规程和工具。

    软件配置管理系统
      库是软件配置管理系统的根本。库是集中控制的文件库,并提供对库中所存储文件的版本控制。任何库中的文件都被视为在确定的软件配置管理之下。
      在项目实际工作中,可以用 SVN、Git 等工具来建立配置库。

    基线

      在配置管理中,基线是在某个时间点对产品属性达成的一致描述,可作为定义更改的基础。更改是从此基准状态到下一个状态的移动。 识别基线状态的重大变化是基线识别的主要目的。

      如果 SDLC 的一个阶段已经建立了基线,那么就假定它已经完成了,例如,基线是定义一个阶段完整性的度量。当与阶段有关的所有活动都已完成并得到良好的文档记录时,阶段就被确立为基线。如果它不是最后阶段,它的输出将用于下一个直接阶段。

    版本控制

      在软件工程中,版本控制(也称为修订控制,源代码控制或源代码管理)是一类负责管理对计算机程序,文档,大型网站或其他信息集合的更改的系统。 版本控制是软件配置管理的组成部分。

      在软件开发中,版本控制系统的使用是必不可少的。详细见博文 版本控制系统 之一 概念、分类、常见版本控制系统(CVS、SVN、BitKeeper、Git 等)

    变更管理

      变更管理(Change management)是对所有支持和帮助个人或团队进行组织变更的方法的集合术语。变更的驱动因素可能包括技术的不断演变、流程的内部审查、危机应对、客户需求变化、竞争压力、收购和兼并以及组织重组。 它包括重定向或重新定义资源使用、业务流程、预算分配或其他显著改变公司或组织运营模式的方法。

    变更控制

      变更控制(Change Control)是质量管理系统(QMS)和信息技术(IT)系统中的一个过程,用来确保以受控和协调的方式引入产品或系统的变更。它减少了在没有预先考虑的情况下对系统进行不必要的更改、在系统中引入错误或撤销其他软件用户所做的更改的可能性。变更控制过程的目标通常包括最小化对服务的干扰,减少回退活动,以及对实现变更所涉及的资源的低成本利用。

    不要与版本控制相混淆。

    项目管理工具

    见独立博文

    参考

    1. https://wiki.mbalib.com/wiki/%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86
    2. http://learnfuture.com/PMP/902
    3. https://www.cnblogs.com/leslies2/archive/2012/06/29/2569765.html
    4. https://www.tutorialspoint.com/software_engineering/software_project_management.htm
    5. https://www.wrike.com/project-management-guide/project-lifecycle/
    6. https://www.wrike.com/project-management-guide/methodologies/
    7. https://en.wikipedia.org/wiki/Software_project_management
    8. https://www.projectmanager.com/project-management
    展开全文
  • 尽管有多种自动调谐PID参数的方法,... 根据该值通过表1计算PID参数,并检查控制操作。(如图2)  3. 观察控制结果,微调PID参数到最佳值。(如图3: 大比例区设定示例)  图1: 连续振动 图2: 使用齐格勒-尼柯尔斯
  • 关系数据库——并发控制

    千次阅读 多人点赞 2019-12-02 14:04:03
    并发控制 多用户数据库:允许多个用户同时使用的数据库(订票系统) 不同的多事务执行方式: 1.串行执行:每个时刻只有一个事务运行,其他事务必须等到这个事务结束后方能运行。 2.交叉并发方式: 单处理机...

    并发控制

    多用户数据库:允许多个用户同时使用的数据库(订票系统)

    不同的多事务执行方式:

             1.串行执行:每个时刻只有一个事务运行,其他事务必须等到这个事务结束后方能运行。

             2.交叉并发方式:

    单处理机系统中,事务的并发执行实际上是这些并行事务的并行操作轮流交叉运行(不是真正的并发,但是提高了系统效率)

    3.同时并发方式:

    多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行

    并发执行带来的问题:

             多个事务同时存取同一数据(共享资源)

             存取不正确的数据,破坏事务一致性和数据库一致性

    概述

    并发操作带来的数据不一致性包括

             1)丢失修改(lost update

             2)不可重复读(non-repeatable read

             3)读脏数据(dirty read

    记号:Wx)写数据x           Rx)读数据x

     

    并发控制机制的任务:

             1)对并发操作进行正确的调度

             2)保证事务的隔离性

             3)保证数据库的一致性

    并发控制的主要技术

             1)封锁(locking)(主要使用的)

             2)时间戳(timestamp

             3)乐观控制法(optimistic scheduler

             4)多版本并发控制(multi-version concurrency control MVCC

    封锁

    封锁:封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象

     

    确切的控制由封锁的类型决定

    基本的封锁类型有两种:排它锁(X锁,exclusive locks)、共享锁(S 锁,share locks

    排它锁又称写锁,对A加了排它锁之后,其他事务不能对A 任何类型的锁(排斥读和写)

    共享锁又称读锁,对A加了共享锁之后,其他事务只能对AS锁,不能加X锁(只排斥写)

    (很重要)

    封锁协议

    在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol

    何时申请X锁或S锁、持锁时间、何时释放

    对封锁方式制定不同的规则,就形成了各种不同的封锁协议。

    常用的封锁协议:三级封锁协议

    三级封锁协议在不同程度上解决了并发问题,为并发操作的正确调度提供一定的保证。

     

    1、一级封锁协议

    事务T在修改数据R之前,必须先对其加X锁,直到事务结束(commit/rollback)才释放。

    一级封锁协议可以防止丢失修改

    如果是读数据,不需要加锁的,所以它不能保证可重复读和不读“脏”数据。

    2 二级封锁协议

             在一级封锁协议的基础(写要加X锁,事务结束释放)上,增加事务T在读入数据R之前必须先对其加S锁,读完后即可释放S锁。(读要加S锁,读完即释放)

    二级封锁协议除了可以防止丢失修改,还可以防止读脏数据

    由于读完数据即释放S锁,不能保证不可重复读

    3、三级封锁协议:

             在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束后释放。

    三级封锁协议除了可以防止丢失修改和读脏数据外,还防止了不可重复读

    三级封锁协议的主要区别是什么操作需要申请锁,何时释放锁。封锁协议越高,一致性程度越高。

     

    饥饿

     

    饥饿:事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后,系统首先批准了T3的请求,T2仍然等待。 T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……T2有可能永远等待,这就是饥饿的情形

    避免饥饿的方法:先来先服务

    当多个事务请求封锁同一数据对象时,按请求封锁的先后次序对这些事务排队

    该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁。

     

    死锁

     

    死锁:事务T1封锁了数据R1 T2封锁了数据R2 T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。 接着T2又申请封锁R1,因T1已封锁了R1T2也只能

    等待T1释放R1上的锁。 这样T1在等待T2,而T2又在等待T1T1T2两个事务永远不能结束,形成死锁。

    解决死锁的方法:预防、诊断和解除

    1、死锁的预防

    产生死锁的原因是两个或多个事务都已经封锁了一些数据对象,然后又都请求对已被其他事务封锁的数据对象加锁,从而出现死等待。

    预防死锁发生就是破坏产生死锁的条件

    方法

    1)一次封锁法:

             要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。

             存在的问题:降低系统的并发度;难以实现精确确定封锁对象

    2)顺序封锁法:

             预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实施封锁。

             存在的问题:

    维护成本:数据库系统中的封锁对象极多,并且在不断地变化

    难以实现:很难实现确定每一个事务要封锁哪些对象

    DBMS普通采用的诊断并解除死锁的方法

    2、死锁的诊断和解除

             方法:超时法和事务等待图法

             1)超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁

                      优点:实现简单

                      缺点:误判死锁;时限若设置太长,死锁发生后不能及时发现。

             2)事务等待图法:用事务等待图动态反映所有事务的等待情况事务

    等待图是一个有向图G=(TU)T为结点的集合,每个结点表示正运行的事务, U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1T2之间划一条有向边,从T1指向T2

    并发控制子系统周期性地(比如每隔数秒)生成事务等待图,检测事务。如果发现图中存在回路,则表示系统中出现了死锁。    

    解除死锁:并发控制子系统选择一个处理死锁代价最小的事务,将其撤销。

    释放该事务持有的所有的锁,使其他事务能够继续运行下去。

     

     

    串行调度

    什么样的调度是正确的?串行调度是正确的。

    (执行结果等价于串行调度的调度也是正确的,这样的调度称为可串行化调度。)

    可串行化调度

    定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化调度(serializable)。

    可串行性是并发事务正确调度的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。

    冲突可串行化调度

    判断可串行化调度的充分条件

    冲突操作:不同的事务对同一个数据的读写和写写操作。

    不同事务的冲突操作和同一事务的两个操作是不能交换的。

    Rix)和Wjx)不可交换,Wix)和Wjx)不可交换

    冲突可串行化调度:

    一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc为冲突可串行化的调度。

     

    两段锁协议

    DBMS的并发控制机制必须提供一定的手段来保证调度是可串行化的。目前DBMS普遍采用两段锁协议(TwoPhase Locking,简称2PL)的方法来显示并发调度的可串行性。

     

    两段锁协议是指所有事务必须分两个阶段对数据对象进行加锁和解锁。

             1)在对任何数据进行读写操作以前,首先要申请并获得对该数据的锁。

             2)在释放一个锁之后,事务不再申请和获得其他任何的锁。

    “两段”锁的含义:事务分为两个阶段

    第一阶段是获得封锁,也称为扩展阶段

    事务可以申请获得任何数据对象上的任何类型的锁,但是不能释放任何锁

    第二阶段是释放封锁,也称为收缩阶段

    事务可以释放任何数据对象上的任何类型的锁,但是不能再申请任何锁

     

    事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。

    若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的

    若并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议

     

    两段锁协议与防止死锁的一次封锁法

    一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议

    但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁

     

    封锁的粒度

    封锁对象的大小称为封锁粒度(granularity)。

    封锁的对象可以是逻辑单元(属性值、属性值集合、元组、关系、索引项、数据库),也可以是物理单元(页、物理记录)。

    选择封锁粒度原则:

             封锁粒度和系统的并发度和并发控制的开销密切相关

             封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越低,系统开销也

    越小;

    封锁的粒度越小,并发度较高,但系统开销也就越大

     

    意向锁

    意向锁:如果对一个节点加意向锁,则可说明该节点的下层节点正在被加锁;对任一节点加锁时,必须先对它的上层节点加意向锁。

    例如,对任一元组加锁时,必须先对它所在的数据库和关系加意向锁。

    三种常用的意向锁:意向共享锁(Intent Share LockIS锁);意向排它锁(Intent Exclusive LockIX锁);共享意向排它锁(Share Intent Exclusive LockSIX锁)。

     

    1IS

    如果对一个数据对象加IS锁,表示它的子节点拟加S锁。

    例如:事务T1要对R1中某个元组加S锁,则要首先对关系R1和数据库加IS

     

    2IX

    如果对一个数据对象加IX锁,表示它的子节点拟加X锁。

    例如:事务T1要对R1中某个元组加X锁,则要首先对关系R1和数据库加IX

     

    3SIX

    如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX

     

    例如:对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同

    时会更新个别元组(所以要对该表加IX锁)

    意向锁的强度: 锁的强度是指它对其他锁的排斥程度。一个事务在申请封锁时以强锁代替弱锁是安全的,反之则不然。

    具有意向锁的多粒度封锁方法

    申请封锁时应该按自上而下的次序进行

    释放封锁时则应该按自下而上的次序进行

    优点:

             1)提高了系统并发度

             2)减少了加锁和解锁的开销

    在实际的DBMS产品中得到广泛应用。

     

    其他并发控制

    并发控制的方法除了封锁技术外,还有时间戳方法、乐观控制法和多版本并发控制。

    时间戳方法:给每一个事务盖上一个时标,即事务开始的时间。每个事务具有唯一的时间戳,并按照这个时间戳来解决事务的冲突操作。如果发生冲突操作,就回滚到具有较早时间戳的事务,以保证其他事务的正常执行,被回滚的事务被赋予新的时间戳被从头开始执行。

    乐观控制法认为事务执行时很少发生冲突,所以不对事务进行特殊的管制,而是让它自由执行,事务提交前再进行正确性检查。如果检查后发现该事务执行中出现过冲突并影响了可串行性,则拒绝提交并回滚该事务。又称为验证方法

    多版本控制是指在数据库中通过维护数据对象的多个版本信息来实现高效并发的一种策略。

    展开全文
  • 定期订货与定量订货分析

    千次阅读 2021-02-12 00:49:48
    1、定量订货与定期订货的与ABC分类分析一、定量订货法定量订货是指当库存量下降到预定的最低库存量(订货点)时,按规定数量(一般以经济批量EOQ为标准)进行订货补充的一种库存控制方法。 定量订货在进行采购...

    《定期订货法与定量订货法分析》由会员分享,可在线阅读,更多相关《定期订货法与定量订货法分析(3页珍藏版)》请在人人文库网上搜索。

    1、定量订货法与定期订货法的与ABC分类法分析一、定量订货法定量订货法是指当库存量下降到预定的最低库存量(订货点)时,按规定数量(一般以经济批量EOQ为标准)进行订货补充的一种库存控制方法。 定量订货法在进行采购时,需要企业人员对仓库中的物资随时进行库存量的盘点和检查,一旦发现库存量下降到预定的订货点水平时,就必须向供应商发出订单,以进行采购。 二、定期订货法定期订货法是按预先确定的订货时间间隔按期进行订货,以补充库存的一种库存控制方法。每隔一个固定的时间周期检查库存项目的储备量。根据盘点结果与预定的目标库存水平的差额确定每次订购批量。 采用这种方法不需要企业时刻监控库存存量水平,只需要根据企业的。

    2、经验和企业的物料需求计划定周期的进行检查库存,再根据盘点的情况并结合实际消耗量的速度情况来计算采购量。 三、定量订货法与定期订货法的区别 (一)提出订购请求时点的标准不同 定量订购库存控制法提出订购请求的时点标准是,当库存量下降到预定的订货点时,即提出订购请求;而定期订购库存控制法提出订购请求的时点标准则是,按预先规定的订货间隔周期,到了该订货的时点即提出请求订购。 (二)请求订购的商品批量不同 定量订购库存控制法每次请购商品的批量相同,都是事先确定的经济批量;而定期订购库存控制法每到规定的请求订购期,订购的商品批量都不相同,可根据库存的实际情况计算后确定。 (三)库存商品管理控制的程度不同 。

    3、定期订购库存控制法要求仓库作业人员对库存商品进行严格的控制精心地管理,经常检查、详细盘点、认真盘点;而用定量订购库存控制法时,对库存商品只要求进行一般的管理,简单的记录,不需要经常检查和盘点。 (四)适用的商品范围不同 关于定量订货法和定期订货法的适用范围主要存在两种不同的观点:第一种:1.定量订购库存控制法适用于品种数量少,平均占用资金大的、需重点管理的A类商品;2.定期订购库存控制法适用于品种数量大、平均占用资金少的、只需般管理的商品B类、C类商品。 第二种: 1.定量订货法适用范围:a.单价比较便宜,不便于少量订货的商品。b.需求预测比较困难的维修材料。c.品种数量繁多,库房管理事务量大。

    4、的物品。d.消费量计算复杂的产品。e.通用性强,需求量比较稳定的产品等。定期订货法适用范围:a.消费金额高,需要实施严格管理的重点物品。b.根据市场的状况和经营方针经常调整生产或采购数量的商品。c.需求量变动幅度大,但变动具有周期性,而且可以正确判断其周期的物品。d.建筑工程、出口等时间可以确定的物品。e.受交易习惯的影响,需要定期采购的物品。f.多种商品一起采购可以节省运输费用的。我的观点:我比较倾向第一种观点。原因:1定量订货法能经常地掌握库存储备动态,及时地提出订购,不易出现缺货,能保证重要原材料充足。2.定量订货法库存控制的手段和方法相对清晰和简单,并且可对高价值货物的库存费用精确控制。

    5、。3.定期订货法储备定额不一定经济,所以适合价格便宜的商品如B、C类。4.定期订货法,若需求量变动大,例如,某个阶段商品很畅销,卖得快,很快就卖完了,但还没到订货周期,还不该订货,此时就可能出现缺货,比适用于关键贵重的原材料。 四、定量订货法与定期订货和ABC库存管理之间的关系 综上所述,定量订货法、定期订货法与ABC管理的侧重点之间存相互矛盾。 (一)定量订货法与ABC分类法 定量订货法适用于品种数量少,平均占用资金大的、需重点管理的商品。采用这种方法就需要企业时刻要进行库存信息的检查,所以我们说定量订货法更加适合于需要严格和密切管理的物资,因此需要经常了解和掌握库存的动态,也就是经常进行检。

    6、查和盘点,正因如此,定量订货方式的工作量大且花费大量时间,如果对于每种商品都经常进行检查盘点,就会增加库存保管成本,因此这种方式适合于少量的重要商品,即A类商品。但是在进行定量订货法采购时,由于每一次采购的数量都是一样的,所以在采购时并没有根据货物的实际需求和消耗速度来进行量的计算,如果遇到消耗速度减少就会导致货物在仓库中停留时间过长,造成成本上升。 (二)定期订货法与ABC分类法 用定期订货法管理物资,不需要时刻监控库存水平,只需要按照固定的周期来制定采购计划即可,定期订货法每次订货的时候,根据现有的库存量和需求情况来推算采购量,因此,定期订货法适合B、C类商品的管理。 (三)定量订货法和定。

    7、期订货法与ABC类商品之间的关系 定量订货法需要时刻监控库存水平,因此适合A类商品,但是A类物资由于占用资金比较庞大,所以企业在每次采购的时候会格外的控制采购的数量,每次采购的数量就需要重新进行计算才能够得到,这么说来,定期订货法又更加适合A类商品。反之,定期订货法是按照固定周期进行采购,因此适合B、C类商品,但是定期订货法每次采购的时候都要计算需求量,那么对于只需要一般管理的C类商品来说可能更加适合定量订货法的固定量采购模式。所以这里也是定量订货和定期订货法与ABC分类法在物流领域中存在争议的地方。 五、定量订货法与定期订货在实际中的应用 企业在实际生产过程中,如果仅仅是生搬硬套ABC三类商品分别适用的订货方法的话,往往会造成成本上升和提高,而且也不利于物资进行合理的管理。企业在实际生产和库存控制过程中,必须结合采购难易度、采购提前期、供方垄断、生产依赖性等因素来制定适合自己的才够方案,不能完全按照ABC分类法进行生搬硬套。 对于A类商品,我们就不能完全采用定量或者定期的订货方法,而是应该选取定量和定期订货法各自的优势,采用时刻监控库存,并且在每次采购时根据实际的需求情况来计算下一次订货的数量,以达到成本的最低。反而对于C类商品,在每次采购的时候就不需要严格进行计算数量,只需要按照平时的经验在固定的周期制定采购计划,并且可以实行定量定期的采购。。

    展开全文
  • 使用logisim搭建单周期CPU与添加指令

    千次阅读 多人点赞 2020-11-27 11:52:00
    使用logisim搭建单周期CPU与添加指令 搭建 总设计 借用高老板的图,我们只需要分别做出PC、NPC、IM、RF、EXT、ALU、DM、Controller模块即可,再按图连线,最后进行控制信号的处理,一个CPU就差不多搭完了。目前支持...

    使用logisim搭建单周期CPU与添加指令

    搭建

    总设计

    借用高老板的图,我们只需要分别做出PC、NPC、IM、RF、EXT、ALU、DM、Controller模块即可,再按图连线,最后进行控制信号的处理,一个CPU就差不多搭完了。目前支持的指令集为{addu、subu、ori、lw、sw、beq、jal、jr、nop、lui、sb、lb、sh、lh}

    在这里插入图片描述

    下面分模块逐个分析

    PC

    本质上就是一个32位的寄存器,这里采用的是异步复位,所以直接把reset信号连在clear口。

    在这里插入图片描述

    NPC

    由于我的CPU支持beq、jal、jr,所以NPCOp有2位,如下表所示

    NPCOp功能
    00计算顺序地址(PC+4)
    01计算beq地址
    10计算jal地址
    11计算jr地址

    在这里插入图片描述

    其中PC4是用来把PC+4输出至RF以完成jal指令

    在这里插入图片描述

    IM

    这个就更简单了,直接一个ROM搞定,注意把PC的2~6位引出作为IM的地址。

    在这里插入图片描述

    RF

    这个比较耗时间,听说用vscode打开.circ文件就可以写代码去搭建这玩意,打开后发现3k行代码,直接反手关掉vscode继续手动连线。连完应该差不多这个样子。

    在这里插入图片描述

    外部看起来是这样子的,RD1输出A1对应寄存器的值,RD2输出A2对应寄存器的值,当写使能信号WE3有效时,将在时钟上升沿把WD3写入A3对应的寄存器。

    在这里插入图片描述

    EXT

    将imm16扩展后输出。由于我的lui是使用的EXT加载到高位(好像说其实应该用ALU实现?),因此我的EXT有3个功能分别是无符号扩展、符号扩展、左移16位。

    在这里插入图片描述

    ALU

    根据ALUOp进行不同的运算即可,这里加法和减法用的一个加法器(A-B=A+~B+1),但是好像这样不太好扩展(?)

    在这里插入图片描述

    DM

    本来是一个非常简单的RAM,但是由于做了lb、sb、lh、sh,就得对DM前后加上组合逻辑以保证不改变其他位的数据。这里用两个控制信号,SSel控制store时的位宽,LSel控制Load时的位宽。(其实用一个控制信号就可以,当时做的时候傻了一下用了两个)

    使用一个译码器,选择被替换的那一段,如sb时,A的01位为01,那么就会将DM中的对应地址的32位数据中的815位替换成WD的低8位,再存入DM,这样就保证了仅读入一个字节而对其他位不改变,即实现了sb。

    在这里插入图片描述

    Controller

    使用了最简朴的方法,搭建时可以先用小手把opcode和funct点成要添加的指令,然后再连接出该指令。如果opcode是000000,那么再与funct得出的信号并起来,即得到该指令,如图中的addu和subu。

    在这里插入图片描述

    得到指令后,再根据列的真值表,把在真值表中是1的连上

    如对于NPCOp[1:0],只有beq时为01,只有jal时为10,只有jr时为11,也就是NPCOp[0]仅在beq和jr时取1,NPCOp[1]仅在jal和jr时取1,所以把他们连接起来即可,如下图。

    在这里插入图片描述

    对于每一个控制信号都如此连接,即可完成CPU的搭建。

    添加指令

    注意事项

    • 在改变与门或者或门的输入数据个数时,建议从奇数个到奇数个,否则可能出现这样的情况:如我有一个5input的或门,如下

    在这里插入图片描述

    现在要添加第6个input,如果直接改成6input,那么如图所示

    在这里插入图片描述

    发现中间的空掉了

    在这里插入图片描述

    而如果遵循奇数个改奇数个的原则就不会出错,如将number of input改成7就如下图所示,中间的连上了。

    在这里插入图片描述

    eg:添加addiu

    首先分析数据通路

    判断是否需要增加新的通路以实现该指令,可以看出其需要的功能我的CPU都有了,因此直接修改控制信号即可

    在这里插入图片描述

    确定控制信号

    对于NPCOp,这不是一个跳转指令,因此NPCOp取00

    对于RFWr,要回写到R[rt],因此RFWr为1

    对于EXTOp,要进行符号扩展,所以取01

    对于ALUOp,加法,所以取00

    对于DMWr,不用写入DM,所以取0

    对于WRSel,由于写入的是R[rt],所以取01

    对于WDSel,由于写入的数据来自ALU的计算结果,所以取00

    对于BSel,由于参与ALU计算的第二个数来自EXT,所以取1

    对于SSel和LSel,由于不涉及半字或字节,都取00

    添加指令信号

    首先将opcode点成该指令

    在这里插入图片描述

    然后再连接出addiu

    在这里插入图片描述

    这时候由于opcode即addiu指令,应该只有addiu是亮的。

    修改控制信号

    得到addiu信号后,仅需要在addiu控制信号为1的对应位置连线即可,如addiu只有RFWr、EXTOp[0]、WRSel[0]、BSel为1,所以只需要将他们的或门添加一根线与addiu信号连接。连接完成后,应检查一遍此时的控制信号是否与之前分析的一样。
    在这里插入图片描述
    在这里插入图片描述

    可以看到与之前分析的完全一样,至此addiu的添加完成。

    展开全文
  • 软件生命周期和配置管理

    千次阅读 2018-06-09 21:11:33
    一、软件开发生命周期(SDLC)1、...软件管理的复杂性 3、软件的质量现有的模型:瀑布模型、v模型、增量模型、原型、螺旋模型三、不同模型的介绍和比较1、瀑布型瀑布模型又称为经典生命周期,他提出了一个系统的...
  • 并发控制

    千次阅读 2018-08-02 18:17:07
    所谓事务,是指用户定义的一个数据库操作序列,这些操作要么全做,要么全不做...事务是并发控制的基本单位,保证事务ACID特性是事务处理的重要任务。 并发操作带来的数据的不一致性问题: 1.丢失修改 两个事务T1...
  • 进程的生命周期

    千次阅读 2018-08-07 10:13:21
    进程的生命周期 1. 进程控制块 PCB 与 task_struct 进程是资源封装管理的单位,资源指占用的内存,文件系统,信号及处理 方法。线程是调度的单位,进程的区别是资源,资源是隔离的,进程把资源描述清楚就可以了...
  • 软件测试的生命周期&测试流程

    千次阅读 多人点赞 2019-04-29 21:47:16
    一、软件的生命周期 二、开发模型 三、测试模型 四、测试流程 五、缺陷管理流程 六、软件和质量 一、软件的生命周期(基于瀑布模型的生命周期) 软件的生命周期:是指从产生到淘汰的过程 包括:计划(开发方与需求...
  • 早期的RISC CPU采用了简单的单周期执行模式,也就是说每个时钟周期只执行一条指令。这样做的好处是设计简单:CPU只需要一条一条指令执行,在上一条指令完全执行完成之后再执行下一条指令。如果从软件设计的角度来看...
  • 【MM模块】Cycle Counting 周期盘点

    千次阅读 2019-08-08 16:24:37
    下面就介绍一下几种盘点方式中比较特别的——周期盘点。 周期盘点是一种库存盘点方法。库存按计划定期盘点,而不是一年才盘点一次。例如,某种物料的库存达到订货点时,或新物料到库时都可以进行盘点。也可以事先...
  • 如何高效完成产品生命周期管理

    千次阅读 2018-08-15 20:41:54
    再迭代打磨,如果产品是从0到1,第一个版本就要先实现基本核心需求,产品基础流程要走通才能让用户用起来,所以开发时间相对会长一些,而之后的版本迭代时间就会短很多,每个版本要控制需求数和时间,迭代周期一般为...
  • 计算机控制系统笔记

    千次阅读 多人点赞 2021-05-11 08:44:20
    若不考虑采样保持器的影响,采样周期与计算机控制系统的稳定性没有必然的联系。 如果被控对象中不包含足够多的积分环节,则稳态误差与采样周期有关 在合理选择A/D、D/A等环节的基础上,只要选择足够小的采样周期 T,...
  • Cortex-M3 NVIC与中断控制

    千次阅读 2017-11-28 11:37:46
    一、NVIC概览 ——嵌套中断向量表控制器  NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器。 NVIC 共支持 1...
  • 自动控制的历史发展

    千次阅读 多人点赞 2019-06-25 22:33:06
    本文转载自...从文章来看,作者的方向偏向于化工控制,虽说标题是自动控制,里面包含了过程控制,现代控制,系统辨识,工程控制算法等内容。这让我想起来另外一件事,有次有幸听...
  • STM32电机PID速度控制

    万次阅读 多人点赞 2020-08-19 22:58:42
    2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料...
  • JVM生命周期和类加载机制

    千次阅读 2015-12-22 22:27:50
    一、java虚拟机的生命周期:  Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的...
  • 番茄工作图解.png 为何要使用番茄工作 “对很多人来说,时间就像是敌人。特别是在快要考试,快要截稿,工期快到时,当你身边的闹钟‘滴答滴答’地提醒着你,时间已经很紧迫,那时焦急的心情会导致你的工作和...
  • 芯片厂商的电机控制方案

    千次阅读 2020-02-15 17:05:01
      针对电机控制或者其他电力电子应用场合,各大芯片厂商不仅生产了各种芯片和功率器件,并且针对这些应用场合,设计了许多控制算法的类库。   厂商提供的demo大部分都是基于状态机的模型设计,并且将各部分功能...
  • 基于氢探PowerECU燃料电池控制系统开发内容如下: 1、主控系统选型。 2、完成PowerECU硬件原理和架构设计,完成设计方案的论证、仿真与方案确认。; 3、完成PowerS12软件架构,基础软件与应用软件分别实施,且从...
  • CPU模型机控制信号整理

    千次阅读 2019-12-18 00:26:06
    我们的数字逻辑大作业的控制信号是一个最大最大的难点,于是我就在制作CPU的时候一边做一边整理了这份控制信号文档 *注: 如果没有特别注明SM=0,那么默认是在SM=1的”执行”的时候(即时钟下降沿)的真值表 SM为0取地址...
  • 电机控制编程的数学运算优化方案

    千次阅读 2020-02-10 11:44:33
      电机控制应用设计传统上采用微控制器(MCU)或数字信号处理器(DSP)来运行电机控制算法。在研究永磁同步电机(PMSM)矢量控制的时候,坐标变换的三角函数运算、观测器的迭代、锁相环的鉴相环节(用到了三角函数...
  • 步进电机丢步与闭环控制

    千次阅读 2019-11-19 22:00:44
    步进电动机正常工作时,每接收一个控制脉冲就移动一个步距角,即前进一步。若连续地输入控制脉冲,电动机就相应地连续转动。 步进电动机失步包括丢步和越步。丢步时,转子前进的步数小于脉冲数;越步时,转子前进的...
  • 控制单元(CU)是提供完成计算机指令全部操作的微操作指令序列部件.用下图来描述其外部特性: 输入信号 时钟。 上述的所有操作都具有下面的两点特点: 完成每个操作都要占用一定的时间 各个操作都是有...
  • 并发控制技术与前一篇提到的数据库恢复技术是主要的事务处理技术,同时并发控制机制和数据库恢复机制是数据库管理系统(DBMS)的重要组成部分。 在单处理机系统中,事务的并行执行实际上是这...
  • 检查代码格式checkstyle

    千次阅读 2017-07-17 17:40:06
    这项检查可以控制要使用的注解的样式。 Missing Deprecated(缺少deprecad) 检查java.lang.Deprecated注解或@deprecated的Javadoc标记是否同时存在。 Missing Override(缺少override) 当出现{@inheritDoc...
  • 项目一个迭代周期内的开发流程

    千次阅读 2013-04-26 11:00:16
    软件项目开发,一般都会采用增量、迭代、(或者叫进化、演化、演进)的软件开发模型,众多的软件开发模型大多是以经典的瀑布模型为基础进行改进、变形,改进原则是:增加客户在整个项目周期中的参与度,降低软件开发...
  • Vivado的BMG的读写操作都要延迟到第3个周期才完成。 \subsection{缓存} 我们知道,内存读取数据的速度是比较慢的(因为大容量的DRAM内部使用电容存储数据),而CPU执行指令的速度是比较快的...
  • ST 电机控制工作台  ...
  • 软件生存周期各阶段活动定义浅释

    千次阅读 2012-09-25 10:18:56
    首先讲一下软件生存周期的定义,即以需求为触发点,提出软件开发计划的那一刻开始直到软件在实际应用中完全报废为止可以认为是一个完整的软件生存周期,软件生存周期的提出是为了更好的管理、维护和升级软件。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,764
精华内容 20,305
关键字:

周期检查控制法