第十三章:软件项目管理

2023-10-27

第十三章:软件项目管理

一、软件项目管理总述

1.管理

  • 管理是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。

2.软件项目管理

  • 软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算。

二、估算软件规模

1.代码行技术

  • (1)定义
    代码行技术依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。是一种比较简单的定量估算软件估摸的方法。
    (2)方法
    ①把实现每个功能的源程序行数累加起来,可得到实现整个软件所需要的源程序行数。
    ②估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出这3种规模的平均值后,再用下式计算程序规模的估计值:(13.1)
    ③程序小时用的单位是代码行数(LOC);程序大时用的单位是千行代码数(KLOC)。
    (3)优点
    ①代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。
    ②有以往开发类似产品的历史数据可参考时,估计出的数值比较准确。
    (4)缺点
    ①源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模不太合理。
    ②用不同语言实现同一个软件所需要的代码行数并不相同。
    ③不适用于非过程语言。

    • (13.1)
      在这里插入图片描述

2.功能点技术

  • (1)定义
    功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。用功能点(FP)为单位度量软件规模。是为了克服代码行技术的缺点,提出来的新技术。
    (2)信息域特性
    ①输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据。
    ②输出项数(Out):软件向用户输出的项数,它们向用户提供面向应用的信息。
    ③查询数(Inq):一次联机输入,它导致软件以联机输出方式产生某种即时响应。
    ④主文件数(Maf):逻辑主文件(数据的一个逻辑组合)的数目。
    ⑤外部接口数(Inf):机器可读的全部接口数量,用这些接口把信息传送给另一个系统。

三、工作量估算

软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模的函数,工作量的单位通常是人月(pm)。没有一个估算模型可以适用于所有类型的软件和开发环境。

1.静态单变量模型

2.动态多变量模型

3.COCOMO2模型

四、进度计划

1.相关概念

  • (1)任务集合
    一个有效的软件过程应该定义一个适用于当前项目的任务集合。一个任务集合包括一组软件工程工作任务、里程碑和可交付的产品。为一个项目所定义的任务集合,必须包括为获得高质量的软件产品而应该完成的所有任务,但是同时又不能让项目组承担不必要的工作。
    (2)项目管理者的工作
    ①目标
    定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,保证及时发现拖延进度的情况。
    ②方法
    管理者必须制定一个足够详细的进度表,以便监督项目进度并控制整个项目。
    (3)进度安排
    ①定义
    软件项目的进度安排通过把工作量分配给特定的软件工程任务并规定完成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。进度计划将随着时间的流逝而不断演化。
    ②流程
    a.在项目计划的早期,制定一个宏观的进度安排表,标识出主要的软件工程活动和这些活动影响到的产品功能。
    b.随着项目的进展,把宏观进度表中的每个条目都精化成一个详细进度表,标识出完成一个活动所必须实现的一组特定任务,并安排好实现这些任务的进度。

2.估算开发时间

  • P312

3.Gantt图

  • (1)例子
    假设有一座陈旧的矩形木板房需要重新油漆。这项工作必须分3步完成:首先刮掉旧漆,然后刷上新漆,最后清除溅在窗户上的油漆。假设一共分配了15名工人去完成这项工作,然而工具却很有限:只有5把刮旧漆用的刮板,5把刷漆用的刷子,5把清除溅在窗户上的油漆用的小刮刀。怎样安排才能使工作进行得更有效呢?
    (2)优点
    ①很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间。
    ②容易掌握、容易绘制。
    (3)缺点
    ①不能显式地描绘各项作业彼此间的依赖关系。
    ②进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象。
    ③计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。

    • 图13.1 旧木板房刷漆工程的Gantt图
      在这里插入图片描述

4.工程网络

  • (1)定义
    工程网络可以描绘任务分解情况以及每项作业的开始时间和结束时间,它还显式地描绘各个作业彼此间的依赖关系。
    (2)表示
    工程网路,如图13.2所示。
    ①用箭头表示作业,作业通常既消耗资源又需要持续一定时间。
    ②用圆圈表示事件(开始或结束),事件是明确定义的时间点,并不消耗时间和资源。
    ③用虚线箭头表示虚拟作业,虚拟作业是为了显式地表示作业之间的依赖关系。

    • 图13.2旧木板房刷漆工程的工程网络
      在这里插入图片描述

5.估算工程进度

  • P316

6.关键路径

  • (1)定义
    由最早时刻和最迟时刻相同的事件定义了关键路径。关键事件必须准时发生,组成关键作业的实际持续时间不能超过估计的持续时间,否则工程就不能准时结束。
    (2)特点
    ①处于关键路径之外的任务进度拖后,不会影响整个项目的完成时间。
    ②处于关键路径之中的任务进度拖后,则整个项目的完成日期就会拖后。

7.机动时间

  • (1)定义
    不在关键路径上的作业有一定程度的机动余地一实际开始时间可以比预定时间晚一些,或者实际持续时间可以比预定的持续时间长一些,而并不影响工程的结束时间。
    (2)计算
    一个作业可以有的全部机动时间等于它的结束事件的最迟时刻减去它的开始事件的最早时刻,再减去这个作业的持续时间:
    机动时间=(LET)结束-(EET)开始-持续时间
    (3)表示
    工程网络中每个作业的机动时间写在该项作业的箭头下面的括号里,如图13-3所示。在制定进度计划时仔细考虑和利用工程网络中的机动时间,往往能够安排出既节省资源又不影响最终竣工时间的进度表。

五、人员组织

1.必要性

  • (1)项目成功的关键合理的组织人员,使他们有效地分工协作共同完成开发工作。
    (2)项目组组织得越好,其生产率越高,而且产品质量也越好。
    (3)项目组具有了凝聚力,成功的可能性就大大增加了。

2.典型的组织方式

现有的软件项目组的组织方式很多,通常,组织软件开发人员的方法,取决于所承担的项目的特点、以往的组织经验以及管理者的看法和爱好,主要有3种典型的组织方式。

  • (1)民主制程序员组
    ①定义
    民主制程序员组中小组成员完全平等,享有充分民主,通过协商做出技术决策。即小组成员之间的通信是平行的,如果小组内有n个成员,则可能的通信信道共有n(n-1)/2条。
    ②要求
    a.小组的人数不能太多(2~8名成员为宜)
    小组规模小,可以减少通信问题、容易确定小组的质量标准、用民主方式确定的标准更容易被大家遵守、组员间关系密切、能够互相学习。
    b.采用非正式的组织方式
    名义上有一个组长,但是他和组内其他成员完成同样的任务。在这样的小组中,由全体讨论协商决定应该完成的工作,并且根据每个人的能力和经验分配适当的任务。
    ③优点
    a.组员们对发现程序错误持积极的态度,有助于更快速地发现错误,提高代码质量。
    b.组员们享有充分民主,小组凝聚力高、学术空气浓厚,有利于攻克技术难关。
    ④缺点
    没有明确的权威指导开发过程,组员间将缺乏必要的协调,最终可能导致工程失败。
    ⑤适用性
    所要开发的软件的技术难度较高时,采用民主制程序员组是适宜的。

  • (2)主程序员组

    • ①定义
      主程序员组用经验多、技术好、能力强的程序员作为主程序员,同时,利用人和计算机在事务性工作方面给主程序员提供充分支持,而且所有通信都通过一两个人进行。典型的主程序员组的组织形式如图13.5所示。
      ②核心人员及其分工
      a.主程序员
      既是成功的管理人员又是经验丰富、技术好、能力强的高级程序员,负责体系结构设计和关键部分的详细设计,并且负责指导其他程序员完成详细设计和编码工作。
      b.后备程序员
      技术熟练而且富于经验,协助主程序员工作并且在必要时接替主程序员的工作。具体工作是设计测试方案、分析测试结果及独立于设计过程的其他工作。
      c.编程秘书
      负责完成与项目有关的全部事务性工作。
      注意:图13.5介绍的是20世纪70年代初期的主程序员组组织结构,现在的情况已经和当时大不相同了,程序员已经有了自己的终端或工作站,他们自己完成代码的输入、编辑、编译、链接和调试等工作,无须由编程秘书统一做这些工作。
      ③特点(优点)
      a.专业化:该组每名成员仅完成他们擅长的工作。
      b.层次性:主程序员指挥组员工作,并对项目全面负责
      ④缺点
      符合主程序员、后备程序员、编辑秘书标准的人才在现实社会中并不容易雇佣到。
      ⑤适用性
      采用主程序员组这种组织方式的程序一般具有以下几方面的特点:
      a.软件开发人员多数比较缺乏经验。
      b.程序设计过程中有许多事务性的工作。
      c.多渠道通信很费时间,将降低程序员的生产率。

      • 图13.5 主程序员组的结构
        在这里插入图片描述
  • (3)现代程序员组

    • ①主程序员由两个人共同担任
      a.技术负责人
      负责小组的技术活动,参与全部代码审查工作,并且对代码的各方面质量负责。
      b.行政负责人
      负责非技术性事务的管理决策。不参与代码审查,其职责是对程序员的业绩进行评价。
      ②制定针对公共职责范围内的事务的处理方案
      ③实行分组策略
      采用分组策略,如图13.7所示。产品开发作为一个整体是在项目经理的指导下进行的,程序员向他们的组长汇报工作,而组长则向项目经理汇报工作。当产品规模更大时,可以适当增加中间管理层次。
      ④分散决定
      在合适的地方采用分散做决定的方法,如图13.8所示。这样做有利于形成畅通的通信渠道,以便充分发挥每个程序员的积极性和主动性,集思广益攻克技术难关。

      • 图13.6现代程序员组的结构
        在这里插入图片描述

      • 图13.7 大型项目的技术管理组织结构
        在这里插入图片描述

      • 图13.8包含分散决策的组织方式
        在这里插入图片描述

六、质量保证

1.软件质量

  • (1)定义
    软件质量是软件与明确地和隐含地定义的需求相一致的程度,即软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
    (2)特点
    ①软件需求是度量软件质量的基础,与需求不一致就是质量不高。
    ②指定的开发标准定义了指导软件开发准则,没有遵守这些准则,会导致软件质量不高。
    ③软件满足明确描述的需求,但不满足隐含的需求,那么软件的质量是值得怀疑的。
    (3)软件质量因素与产品活动
    ①软件质量因素
    如表13.7所示,列出了软件质量因素的简明定义。
    ②产品活动
    可以把产品活动(倾向)分为产品运行、产品修改和产品转移。
    ③关系
    软件质量因素和3种产品活动(倾向)之间的关系,如图13.9所示。

    • 表13.7 软件质量因素的定义
      在这里插入图片描述

    • 图13.9软件质量因素与产品活动的关系
      在这里插入图片描述

2.软件质量保证措施

  • (1)措施
    ①基于非执行的测试(复审或评审):主要用来保证在编码前各阶段产生的文档的质量。
    ②基于执行的测试(软件测试):在程序编写完后进行, 保证软件质量的最后一道防线。
    ③程序正确性证明:使用数学方法严格验证程序是否与对它的说明完全一致。
    (2)参加软件质量保证的人员分类
    ①软件工程师:用先进的技术方法和度量,进行复审以及完成软件测试来保证软件质量。
    ②SQA小组:辅助软件工程师以获得高质量的软件产品。其从事的软件质量保证活动的主要是:计划,监督,记录,分析和报告,它通过确保软件过程的质量来保证软件产品的质量。
    (3)技术复审
    正式技术复审的优点是能较早发现软件错误,防止错误被传播到软件过程的后续阶段。包括走查和审查等具体方法。
    ①走查
    a.走查组
    走查组由4~6名成员组成。成员包括负责起草文档的人、负责该文档说明的管理员、客户代表、下阶段开发组的代表、SQA小组的代表(作为组长)。
    b.要点
    第一,为了能发现重大错误,走查组成员最好是经验丰富的高级技术人员。
    第二,走查组成员应根据材料并列出不理解的术语和认为不正确的术语。
    第三,走查组组长引导该组成员走查文档,力求发现尽可能多的错误。
    第四,走查的时间最长不要超过2小时。
    c.方式
    第一,参与者驱动法
    参与者按照事先准备好的列表,提出他们不理解的术语和认为不正确的术语。文档编写组的代表必须回答每个质疑。
    第二,文档驱动法(更有效)
    文档编写者向走查组成员仔细解释文档。走查组成员在此过程中针对事先准备好的问题或解释过程中发现的问题提出质疑。
    ②审查
    a.审查组
    查组由4人组成,分别是组长(既是管理人员又是技术负责人)、负责当前阶段开发工作的项目组代表、负责下一阶段开发工作的项目组代表、SQA小组的代表。
    b.步骤
    第一,综述
    由负责编写文档的成员向审查组综述该文档。
    第二,准备
    评审员仔细阅读文档。
    第三,审查
    评审组仔细走查整个文档。
    第四,返工
    文档的作者负责解决在审查报告中列出的所有错误及问题。
    第五,跟踪
    组长必须确保所提出的每个问题都得到了圆满的解决。
    c.与走查比较
    第一,审查过程步数比走查多。
    第二,审查过程每个步骤都是正规的仔细划分错误类型,并把这些信息运用在后续阶段的文档审查中以及未来产品的审查中。
    d.重要性
    审查是检测软件错误的一种好方法,利用审查可以在软件过程的早期阶段(修改成本低的阶段)发现并改正错误,即审查是一种经济有效的错误检测方法。
    注意:走查的步骤比审查少,没有审查正规。
    (4)程序正确性证明
    ①定义
    正确性证明的基本思想是证明程序能完成预定的功能。应提供对程序功能的严格数学说明,然后根据程序代码证明程序确实能实现它的功能说明。
    ②方法
    a.人工证明程序正确性
    对于评价小程序可能有些价值,但在证明大型软件的正确性时,不仅工作量太大,而且在证明的过程中很容易包含错误。
    b.自动系统

七、软件配置管理

1.相关概念

  • (1)定义
    软件配置管理是在软件的整个生命期内管理变化的一组活动。其主要任务是控制变化,同时也负责各个软件配置项和软件各种版本的标识、软件配置审计以及对软件配置发生的任何变化的报告。
    (2)目的
    软件配置管理不同于软件维护,它的目标是使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量。具体如下:
    ①标识变化;
    ②控制变化;
    ③确保适当地实现了变化;
    ④向需要知道这类信息的人报告变化。
    (3)与维护的区别
    维护是在软件交付给用户使用后才发生的,而配置管理是在软件项目启动时就开始,并且一直持续到软件退役后才终止的一组跟踪和控制活动。

2.软件配置

  • (1)软件配置项
    软件过程的输出信息可以分为3类:
    ①计算机程序(源代码和可执行程序)。
    ②描述计算机程序的文档(供技术人员或用户使用)。
    ③数据(程序内包含的或在程序外的)。
    (2)基线
    ①定义
    基线是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它,即基线就是通过了正式复审的软件配置项。
    ②作用
    基线有助于人们在不严重妨碍合理变化的前提下来控制变化。
    (3)软件工具
    把特定版本的编辑器、编译器和其他CASE工具,作为软件配置的一部分。为防止不同版本的工具产生结果不同,应把软件工具也基线化,并且列入到综合的配置管理过程之中。

3.软件配置管理过程

  • 软件配置管理是软件质量保证的重要一环,它的主要任务是控制变化,同时也负责各个软件配置项和软件各种版本的标识、软件配置审计以及对软件配置发生的任何变化的报告,具体来说,软件配置管理主要有5项任务标识、版本控制、变化控制、配置审计和报告。
    (1)标识软件配置中的对象
    ①对象分类
    a.基本对象:是软件工程师在分析、设计、编码或测试过程中创建出来的“文本单元”。
    b.聚集对象:是基本对象和其他聚集对象的集合。
    ②要点
    a.每个对象都有一组能唯一地标识它的特征:名字、描述、资源表和实现。
    b.对象名是无二义性地标识该对象的一个字符串。
    c.标识模式必须能无歧义地标识每个对象的不同版本。
    (2)版本控制
    ①定义
    版本控制使用规程和工具,以管理在软件工程过程中所创建的配置对象的不同版本。
    ②目标
    借助于版本控制技术,用户能通过选择适当的版本来指定软件系统的配置。
    ③步骤
    a.把属性和软件的每个版本关联起来。
    b.描述一组所期望的属性(施加到系统上的功能变化的具体类型)来指定和构造所需要的配置。
    (3)变化控制
    ①定义
    变化控制把人的规程和自动工具结合起来,以提供一个控制变化的机制。
    ②过程
    a.评估该变化在技术方面的得失、可能产生的副作用、对其他配置对象和系统功能的整体影响以及估算出
    的修改成本。
    b.根据评估结果形成变化报告,供变化控制审批者审阅。
    c.为每个被批准的变化都生成一个工程变化命令,描述将要实现的变化,必须遵守的约束以及复审和审计的标准。
    d.把要修改的对象从项目数据库中提取出来,进行修改并应用适当的SQA活动。
    e.把修改后的对象提交进数据库,用适当的版本控制机制创建该软件的下一个版本。
    ③主要功能
    a.访问控制:决定哪个软件工程师有权访问和修改一个特定的配置对象。
    b.同步控制:助于保证由两名不同的软件工程师完成的并行修改不会相互覆盖。
    (4)配置审计
    ①正式的技术复审
    正式的技术复审关注被修改后的配置对象的技术正确性。复审者审查该对象以确定它与其他软件配置项的一致性,并检查是否有遗漏或副作用。
    ②软件配置审计
    软件配置审计通过评估配置对象的那些通常不在复审过程中考虑的特征,而成为对正式技术复审的补充。
    (5)状态报告
    ①内容
    a.发生的事件。
    b.做的这件事的人。
    c.事件是发生的时间。
    d.产生的影响。
    ②作用
    配置状态报告对大型软件开发项目的成功有重大贡献。配置状态报告通过改善所有相关人员之间的通信,帮助消除由于通信不精确、不及时所产生的严重问题。

八、能力成熟度模型

1.能力成熟度模型(CMM)

  • (1)定义
    能力成熟度模型(CMM)是用于评价软件机构的软件过程能力成熟度的模型。
    (2)目的
    ①为大型软件项目的招投标活动提供一种全面而客观的评审依据。
    ②应用于许多软件机构内部的过程改进活动中。
    (3)基本思想
    能力成熟度模型的基本思想是,由于问题是由人们管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量。
    (4)作用
    能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将开发出质量更好的软件,使更多的软件项目免受时间延误和费用超支之苦。
    (5)CMM在改进软件过程中所起的作用
    ①指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作用的问题,明确过程改进的方向和策略。
    ②通过集中开展与过程改进的方向和策略相一致的一组过程改进活动,软件机构便能稳步而有效地改进其软件过程,使其软件过程能力得到循序渐进的提高。
    (6)对能力成熟度划分的原因
    ①对软件过程的改进,是在完成一个又一个小的改进步骤基础上不断进行的渐进过程。
    ②这5个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程成熟度和评价其软件过程能力,这些等级还帮助软件机构把应做的改进工作排出优先次序。
    ③成熟度等级是妥善定义的向成熟软件机构前进途中的平台,每个成熟度等级都为软件过程的继续改进提供了一个台阶。

2.能力成熟度的5个等级

  • (1)内容
    ①反映出软件机构为了达到从无序的、混乱的软件过程进化到有序的、有纪律的且成熟的软件过程的目的,必须经历的过程改进活动的途径。
    ②每个成熟度级别都是该软件机构沿着改进其过程的途径前进途中的一个台阶,后一个成熟度级别是前一个级别的软件过程的进化目标。
    ③每个成熟度级别中都包含一组过程改进的目标,满足这些目标后一个机构的软件过程就从当前级别进化到下一个成熟度级别。
    (2)5个级别
    ①初始级(1级)
    软件过程能力是不可预测的,其软件过程是不稳定的,产品质量只能根据相关人员的个人工作能力来预测。
    ②可重复级(2级)
    软件项目的策划和跟踪是稳定的,已经为一个有纪律的管理过程提供了可重复以前成功实践的项目环境。
    ③已定义级(3级)
    无论是管理活动还是工程活动都是稳定的。软件开发的成本和进度以及产品的功能和质量都受到控制,而且软件产品的质量具有可追溯性。
    ④已管理级(4级)
    软件机构对软件过程和软件产品都建立了定量的质量目标,所有项目的重要的过程活动都是可度量的,软件过程在可度量的范围内运行。
    ⑤优化级(5级)
    软件机构能够不断地改进其过程能力,既对现行的过程实例不断地改进和优化,又借助于新技术和新方法来实现未来的过程改进。这一级的软件机构是一个以防止出现缺陷为目标的机构,它有能力识别软件过程要素的薄弱环节,并有足够的手段改进它们。

思维导图百度网盘地址
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十三章:软件项目管理 的相关文章

  • 【软件工程】静态测试与动态测试

    静态测试 桌前检查 代码走查 代码审查 动态测试 黑盒测试 等价类划分 确定无效与有效等价类 设计用例尽可能多的覆盖有效类 设计用例只覆盖一个无效类 边界值分析 处理边界情况时最容易出错 选取的测试数据应该恰等于 稍小于或稍大于边界值 错误
  • [管理与领导-68]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 评估你与老板的八字(向上管理之二)

    目录 前言 一 定位你与上司的关系 二 向上管理的三种误区 三 向上管理的关键点 四 向上管理的关键 预期管理 4 1 预期管理概述 4 2 如何控制上司的预期范围 4 3 如何了解你自己的预期 五 向上管理的关键 预期管理 六 什么样的上
  • 软件设计七大原则

    文章目录 一 开闭原则 定义 实现方法 二 里氏替换原则 定义 实现方法 三 依赖倒置原则 定义 实现方法 四 单一职责原则 定义 实现方法 五 接口隔离原则 定义 实现方法 六 迪米特法则 定义 实现方法 七 合成复用原则 定义 实现方法
  • [管理与领导-69]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 评估自己、下属、老板的职业性格

    目录 前言 一 心理学上性格 1 1 心理学 1 2 知情意行 1 3 心理学性格 1 4 四大生理人格特征 1 4 1 外向型 1 4 2 内向型 1 5 大五人格特质理论 二 霍兰德社会职业兴趣类型 2 1 霍兰德六型的简要描述 2 2
  • 软件工程第五章习题

    软件工程第五章习题 1 为每种类型的模块耦合举一个具体例子 2 为每种类型的模块内聚举一个具体例子 1 为每种类型的模块耦合举一个具体例子 只需要答出什么模块和例子即可 一共5个 数控特环内 数据耦合 两个模块之间通过参数交换信息 信息仅为
  • 个人安装与配置VMware 虚拟机过程中发现的注意事项

    1 官网下载VMware安装包 本人版本应该是16 0 0 官网地址 下载 VMware Workstation Pro CN 2 安装过程参考网上搜索到的教程VMware16的安装及VMware配置Linux虚拟机 详解版 何故的博客 C
  • 【论文阅读-ICSE-2021】CodeShovel: 构造方法级别上的源代码历史信息 Constructing Method-Level Source Code Histories

    CodeShovel Constructing Method Level Source Code Histories Conference ICSE 2021 Github https github com ataraxie codesho
  • 【软件工程】详细设计说明书

    详细设计说明书 1引言 1 1编写目的 说明编写这份详细设计说明书的目的 指出预期的读者 该文档实在概要设计的基础上 进一步的细化系统结构 展示了软件啊结构的图标 物理设计 数据结构设计 及算法设计 详细的介绍了系统各个模块是如何实现的 包
  • 软件工程复习10:软件设计与实现

    作者 非妃是公主 专栏 软件工程 个性签 顺境不惰 逆境不馁 以心制境 万事可成 曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01 软件工程概述 软件工程复习02 个人技术 软件工程复习03 个人软件流程 软件工程复习04
  • 2023西安交通大学软件工程915考研经验帖(初试+复试)

    目录 前言 一 初试准备 数学 英语 政治 专业课 总结 杂项 二 复试准备 1 笔试 数据库 操作系统 2 面试 总结 前言 本文仅记录我考研期间 2022 12初试 2023 3复试 的经验和感受 不具有普适性 请根据自身情况调整学习计
  • Go 语言注释教程

    注释是在执行时被忽略的文本 注释可用于解释代码 使其更易读 注释还可用于在测试替代代码时防止代码执行 Go支持单行或多行注释 Go单行注释 单行注释以两个正斜杠 开头 在 和行尾之间的任何文本都将被编译器忽略 不会被执行 示例 This i
  • CMake 教程:常用命令及其使用方法

    CMake是一个跨平台 开源的构建工具 它可以自动生成Makefile或者Visual Studio等IDE的工程文件 它能够帮助开发者更方便地管理项目的构建过程 提高项目构建的效率 在本文中 我们将介绍CMake常用的命令以及对应的用法
  • SQL 算术运算符:加法、减法、乘法、除法和取模的用法

    SQL Server中的存储过程 什么是存储过程 存储过程是一段预先编写好的 SQL 代码 可以保存在数据库中以供反复使用 它允许将一系列 SQL 语句组合成一个逻辑单元 并为其分配一个名称 以便在需要时调用执行 存储过程可以接受参数 使其
  • 【车载开发系列】FlashMemory基本概念

    车载开发系列 FlashMemory基本概念 车载开发系列 FlashMemory基本概念 车载开发系列 FlashMemory基本概念 一 FlashMemory的特征 二 常见的FlashMemory 1 NOR FlashMemory
  • thinkphp+vue教学互动课程资源网站

    软件工程课程建设通篇文章的撰写基础是实际的应用需要 然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程 以软件工程课程建设的实际应用需要出发 架构系统来改善现软件工程课程建设工作流程繁琐等问题 不仅如此以操作者的角度来
  • git 的碎步浪荡,添加仓库子项目,迁移仓库

    1 git仓库迁移 将他人的代码仓库 xxxx 移为自己的 yyyy 仓库 先创建自己的yyyy空仓库 假设url为 yyyy git 将 xxxx 的全部数据 包括分支和 tag 都 download 到本地 git clone recu
  • 嵌入式培训机构到底怎么选?培训了能找到工作吗

    嵌入式作为一种广泛应用于企业级开发的编程语言 对于想要从事软件开发行业的人来说 掌握嵌入式技能是非常重要的 而参加嵌入式培训机构是一个快速提升技能的途径 然而 很多人可能会担心 参加嵌入式培训了能找到工作吗 如何选择靠谱的嵌入式培训机构 要
  • C++ 中 const 和 constexpr 关键字解析:常量、函数和指针

    很多 C 的初学者看到 const 这个关键字的第一反应都是一头雾水 主要是因为 const 可 以出现在很多的位置 以及后面加入的 constexpr 更是常常感到困惑 今天就为大家一一解释出现它们的含义和以及作用 const 关键字 c
  • 《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解

    测试 Spring 提供了一组测试工具 可以轻松地测试 Spring 应用程序的各个组件 包括控制器 服务 存储库和其他组件 它具有丰富的测试注释 实用程序类和其他功能 以帮助进行单元测试 集成测试等 JPA 测试 Spring JPA J
  • 深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

    在 MongoDB 中 我们使用 find 和 find one 方法来在集合中查找数据 就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样 查找单个文档 要从MongoDB的集合中选择数据 我们可以使用 find one

随机推荐

  • 【论文阅读】APDrawingGAN:利用分层GAN从面部照片生成艺术人像

    APDrawingGAN Abstract Introduction Related Work APDrawingGAN 概述 网络结构 生成器Generator 判别器Discriminator 损失函数 训练网络 通过预训练进行初始化
  • Mongodb入门安装

    标题 1 MongoDb 概念入门 什么是MongoDB MongoDB 使用场景 不使用MongoDB 的场景 2 MongoDB 应用与开发 安装 启动mongodb 1 MongoDb 概念入门 什么是MongoDB MongoDB
  • 四种信号量

    传送门 1 整型信号量 2 记录型信号量 3 AND型信号量 4 信号量集 例 应用信号量实现同步与互斥 说在前 信号量机制是对具体物理资源的抽象 同类资源的个数用 gt 0的信号量值来表示 0或1的则为临界资源 1 整型信号量 1 1 D
  • 自定义Weex组件——Weex的学习之路(八)

    在四月份和五月份的时候我用业余时间来学习weex 在这期间一直在看文档写demo 每一个组件都自己写demo运行一遍 我本人是做Android开发的 对JS CSS和Html有一定的了解 所以学习weex不是很难 然后我把自己所学的主要经历
  • 一种基于Harris-Laplace算法的角点检测方法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 Harris Laplace 检测方法原理 2 运行结果 3 Matlab代码实现 4 参考文献
  • 深度学习目标检测方法汇总

    目标检测简介 目标检测是计算机视觉的一个重要研究方向 是指从一个场景 或图片 中找到感兴趣的目标 任务大致分为三个流程 从场景中提取候选区 从候选区提取特征 识别候选区的类别并对有效的候选框进行位置精修 目标检测在生活的各个领域都有了广泛的
  • 算法 数列异或操作

    给你两个整数 n和start 其中n为数据的数量 start为第一个数据 当前数据定义为 num start 2 i i表示第几个数据 从0开始 请返回数列中所有数据按位异或 XOR 后得到的结果 示例 1 输入 n 5 start 0 输
  • Kali Linux 下搭建DVWA靶场和Sqli-labs注入环境

    Kali Linux 下搭建DVWA靶场和Sqli labs注入环境 DVWA靶场介绍 DVWA是一款基于PHP和mysql开发的web靶场练习平台 集成了常见的web漏洞如sql注入 xss 密码破解等常见漏洞 适合刚基础网络安全的小白
  • pytorch中的 relu、sigmoid、tanh、softplus 函数

    四种基本激励函数是需要掌握的 1 relu 线性整流函数 Rectified Linear Unit ReLU 又称修正线性单元 是一种人工神经网络中常用的激活函数 activation function 通常指代以斜坡函数及其变种为代表的
  • GMAC RGMII时序校准配置教程

    GMAC RGMII时序校准配置教程 在物联网时代 各种设备都需要联网 而其中以嵌入式系统为主 网络通信系统的核心部件即为MAC与PHY芯片 而针对MAC和PHY芯片之间的接口 有一种双数据率的接口标准 RGMII Reduced Giga
  • 一维数组与对象深拷贝的几种方法(指数组、对象中均无嵌套)

    一 万能for循环 直接上代码 var arr 1 2 3 4 5 var obj name aaaaa age 16 var arr2 copyThat arr var obj2 copyThat obj function copyTha
  • MySQL正确配置my.ini的event_scheduler = ON

    MySQL正确配置my ini的event scheduler ON 让事件的定时调度器常开 如下红框圈出部分 永久性设置方法 为何要在my ini中设置 补充mysql做一个event或job有关文章 让事件的定时调度器常开 如下红框圈出
  • 为什么数组的BUFFSIZE要定义为4096比较好?

    先看一个程序 page 69 include apue h define BUFFSIZE 4096 int main int argc char argv int n char buf BUFFSIZE while n read STDI
  • 高级计算机网络

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 RDT协议 rdt1 0 经完全可靠信道的可靠数据传输特点 rdt2 0 经具有比特差错信道的可靠数据传输 校验和 ACK NAK rdt2 1 考虑处理
  • swagger添加@ApiImplicitParams后出现错误 Required String parameter is not present

    swagger添加 ApiImplicitParams后出现错误 并且会报错 HTTP Status 400 Required String parameter xx is not present 原因是 要求post 但是 请求用的是ge
  • make编译kaldi时候遇到的各种错误

    文章目录 第一个问题 aclocal 1 14 command not found 第一个问题 aclocal 1 14 command not found tools openfst 1 6 7 missing line 81 acloc
  • line-height: 1; line-height: 100%;是什么意思

    先简单看个例子 css 页面 应该猜测出来了 line height 1 line height 100 font size 50px 把哪一个放到最后都是一样的 我理解的就是 等于字体高度的 1 整 份 或者 等于 字体高度的 100 高
  • 《这就是区块链》之区块链基础(5)--去中心化的意义

    在上一篇中 花了比较大的篇幅来阐述去中心化的概念 其实对于有计算机基础的朋友来讲 去中心化或者P2P网络并不是新颖的观点 但是 我还是希望本系列文章可以从基础展开 让所有的朋友都可以理解区块链的意义所在 今天我们来谈谈去中心化到底在区块链中
  • matlab的cylinder函数,Matlab基本函数-cylinder函数

    1 cylinder函数 绘制三维圆柱图 2 用法说明 1 x y z cylinder 函数返回一半径和高度都为1的圆柱体x y z轴的坐标值 圆柱体沿其周长有20个等距分布的点 2 x y z cylinder r 函数一个半径为r 高
  • 第十三章:软件项目管理

    第十三章 软件项目管理 一 软件项目管理总述 1 管理 管理是通过计划 组织和控制等一系列活动 合理地配置和使用各种资源 以达到既定目标的过程 2 软件项目管理 软件项目管理先于任何技术活动之前开始 并且贯穿于软件的整个生命周期之中 软件项