diff --git a/src/university/301.md b/src/university/301.md new file mode 100644 index 0000000..265c652 --- /dev/null +++ b/src/university/301.md @@ -0,0 +1,308 @@ +## 主要定义 + +### 项目管理相关定义 + +> 软件项目团队管理的主体内容 + +- 项目组织的规划:确定项目中的角色、职责和组织结构。 + +- 团队人员获取:获得项目所需的人力资源(个人或集体)。 + +- 团队建设:提高团队成员个人为项目做出贡献的能力;提高团队作为集体发挥作用的能力。 + +- 团队日常工作管理: 跟踪团队成员工作绩效,解决问题和冲突,协调变更事宜。 + +- 沟通管理:对在项目干系人之间传递项目信息的内容、方法和过程进行综合管理。保证项目干系人及时得到所需的项目信息。 + +> 项目管理三要素 + +- 时间 + +- 成本 + +- 质量 + +> 软件项目管理主要内容 + +- 软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。 + +- 根据特定的规范,在预算的范围内,按时完成指定的任务,运用高效快捷的方法,围绕计划对项目进行监控,在人力、费用和时间上进行控制。 + +> 项目管理5要素 + +- 技术(Technical) +- 方法(Methodology) +- 团队建设(Team Building) +- 信息(Information) +- 沟通(Communication:80% jobs) + +> 软件项目管理活动 + +- 定义项目范围(功能) +- 分析风险 +- 确定资源 +- 资金和工作量预算 +- 指定时间计划 + +> 项目管理的三维约束。 + +- 达到范围目标 +- 达到时间目标 +- 达到成本目标 + +### 常用方法定义 + +> 利益相关者 + +- 项目的业主或项目发起人 +- 项目的客户或用户 +- 项目经理 +- 项目实施团队/组织 +- 供应商 +- 项目组内部成员 +- 项目组外部人员但是属于同一组织内部 +- 项目组和项目组外部成员 + +> 敏捷开发的宣言 + +- **个体和互动**高于流程和工具 +- **可以工作的软件**高于详尽的文档 +- **客户合作**高于合同谈判 +- **响应变化**高于遵循计划 + +> 软件工作量估算方法 + +- 自顶向下:首先定义整个项目的工作量,然后分解到各个部分 +- 自底向上:各个部分的工作量先估算出来,然后进行合成 + +> 估算基本方法 + +- 代码行估算法:从软件程序量的角度定义项目规模。 + + - 与具体的编程语言有关 + - 分解足够详细 + - 有一定的经验数据(类比和经验方法) + +- 功能点估算法 + + - 与实现的语言和技术没有关系 + - 软件项目管理用系统的功能数量来测量其规模 + - 通过评估、加权、量化得出功能点 + +- 用例点估算法 + + ![image-20211223144412634](软件项目管理/image-20211223144412634.png) + +- 类比 (自顶向下)估算法 + + - 估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中 + - 是一种自上而下的估算形式 + - 自顶向下法是对整个工程项目的总开发时间和总工作量做出估算,然后将它们按阶段、步骤和任务进行分配 + +- 自下而上估算法 + + - 利用任务分解图(WBS)对,各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。 + +- 参数估算法 + + - 通过项目数据,进行回归分析,得出回归模型 + - 通过参数模型估算(规模)成本的方法。 + +- 专家估算法 + + - 由多位专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算,取得多个估算值最后得出综合的估算值。 + +> 如何实施项目管理 + +- 做好项目需求管理 +- 做好项目质量管理 + - 定义项目成功的标准 + - 把握项目各种要求之间的平衡 +- 做好项目执行和验收管理 +- 做好项目团队人员管理 +- 做好风险管理,降低期望 + +> 需求管理包括哪些过程 + +- 需求获取 +- 需求分析 +- 需求规格编写 +- 需求验证 +- 需求变更 + +> 需求建模的基本方法 + +- 原型方法 + +![image-20211223152011973](软件项目管理/image-20211223152011973.png) + +- 结构化分析法:1. 20世纪70年发展起来的面向数据流的方法、2. 是一种自顶向下逐步求精的分析方法、3. 根据软件内部数据传递、变换的关系进行分析的 + - 数据流图(DFD) + - 数据字典(DD) + - 系统流程图 +- 面向对象的用例分析法:1. 基于面向对象的情景分析方法、2. 从用户角度出发考虑的功能需求、3. 用例是系统向用户提供一个有价值的结果的某项功能 + - 用例视图(Use case Diagram) + - 顺序图(Sequence Diagram) + - 状态图(State Diagram) + - 活动图(Activity Diagram) +- 功能列表法 + +> 项目管理4p包含的内容 + +- 人员(Person) +- 产品(Product) +- 过程(Procedure) +- 项目(Project) + +### WBS + +> WBS( Work Breakdown Structure)定义 + +![image-20211223153810898](软件项目管理/image-20211223153810898.png) + +将一个项目分解为更多的工作细目或者子项目,使项目变得更小、更易管理、更易操作 + +- WBS是对项目由粗到细的分解过程。 +- 面向交付成果的 +- WBS它组织并定义了整个项目范围 + +> WBS的意义 + +- 范围基准的形成 + +> WBS创建的方法 + +- 类比 +- 模版参照 +- 自上而下 +- 自下而上 + +> WBS的基本过程 + +- 确认并分解项目的组成要素(WBS编号) +- 确定分解标准 +- 确定分解是否详细 +- 确定项目交付成果(可以编制WBS字典) +- 验证分解的正确性 + +### 模拟题 + +> 下列不属于乙方招投标阶段任务的是?( ) +> A.项目分析 +> B.竞标 +> C.合同签署 +> D.招标书定义 + +答案:B + +> 你如何实施项目管理? + +项目管理的方法的应用,必须有合理的应用步骤: + +- 研究管理任务,明确专业要求、管理方法和应用目的 +- 调查进行该项目管理所处的环境,以便对选择管理方法提供决策依据 +- 选择适用、可行对的管理方法,选择的方法应该专业对路,能实现任务目标,且条件允许 +- 对所选方法在应用中可能遇到的问题进行分析,找出关键,指定保障措施 +- 以实施选用方法的过程中加强动态管理,解决矛盾,使之产生实效 +- 在应用过程结束后,进行总结,以提高管理方法的应用水平 + +## 过程模型 + +### 过程模型介绍 + +- **瀑布模型**:瀑布模型(Waterfall Model) 是一个软件生命周期模型,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。 + +![image-20211223131659073](软件项目管理/image-20211223131659073.png) + +- **V模型** + +![image-20211223135009111](软件项目管理/image-20211223135009111.png) + + + +- **原型** + + - **原型法**:原型法又称**快速原型法**,基本的**思想**是——在限定的时间内,用最经济的方法开发出一个可实际运行的系统模型,用户在运行使用整个原型的基础上,通过对其评价,提出改进意见,对原型进行修改,统一使用,评价过程反复进行,使原型逐步完善,直到完全满足用户的需求为止 + - **抛弃型原型**,此类原型在系统真正实现以后就抛弃不用了 + - **进化型原型**,此类原型的构造从目标系统的一个或多个基本需求出发,通过修改和追加的过程逐渐丰富,演化成为最终的系统 + - **螺旋模型**:螺旋模型是一种演化[软件开发过程](https://baike.baidu.com/item/软件开发过程/3758917)模型,它兼顾了[快速原型](https://baike.baidu.com/item/快速原型/7432267)的[迭代](https://baike.baidu.com/item/迭代/8415523)的特征以及[瀑布模型](https://baike.baidu.com/item/瀑布模型/9817778)的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。 + + ![image-20211223135009112](软件项目管理/image-20211223135009112.png) + +- **增量模型**:增量模型是把待开发的软件系统**模块化**,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是**递增式**的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。 + +![image-20211223134720034](软件项目管理/image-20211223134720034.png) + +- **渐近式阶段模型**:具有渐进式开发和阶段性提交的特点 + + 1. 渐进式开发 + + ![image-20211223140131393](软件项目管理/image-20211223140131393.png) + + 2. 阶段性提交 + + ![image-20211223140202472](软件项目管理/image-20211223140202472.png) + +- **敏捷模型**:1、敏捷组织提出的一个灵活开发方法;2、应对迅速变化需求的快速软件开发方法;3、是一种迭代、循序渐进的开发方法 + + - **Scrum模型** + + ![image-20211223140421319](软件项目管理/image-20211223140421319.png) + + - **XP(eXtreme Programming)极限编程模型** + + ![image-20211223143411902](软件项目管理/image-20211223143411902.png) + + - **MED生存期模型—敏捷模型** + + ![image-20211223143517042](软件项目管理/image-20211223143517042.png) + + - **迭代模型** + + ![image-20211223143556605](软件项目管理/image-20211223143556605.png) + + + + + +### 习题练习 + +> 假设你要为一家生产和销售长筒靴的公司开发一个软件,该产品将监控该公司的存货:跟踪从购买橡胶开始,到靴子生产,发货到各个连锁店,直至卖给顾客的全过程。全过程复杂,功能较多,需求不是很明确,开发有较大风险。请问用什么模型开发? + +解答:采用螺旋模型。 +原因:螺旋模型可以降低产品不能满足用户需求的风险,也可以逐步取得明确的需求,逐步的完善。 + +> 想开发一个作为电话交换系统控制器的软件产品。电话交换系统,这是一个简单而熟悉的行业和领域,公司已有相类似的产品,请问用什么模型开发? + +解答:采用螺旋模型。 +原因:螺旋模型可以降低产品不能满足用户需求的风险,也可以逐步取得明确的需求,逐步的完善。 + +> 你刚刚为生产和销售长筒靴的公司开发的存货监控软件很受用户欢迎,你所在的软件开发公司决定把它重新写成一个通用软件包,以卖给各种生产并通过自己的连锁店销售产品公司。因此,这个新产品必须是可移植的,并且应该能够很容易地适应新的运行环境(硬件或操作系统),满足不同用户的需求。请你选择最佳的一种开发模型。 + +解答:应采用喷泉模型。 +原因:喷泉模型是典型的面向对象生命周期模型。具有较好的可移植性,容易适应各种运行环境,满足不同用户的需求。喷泉模型很好地缩短了软件维护的时间。 + +> 某大型企业计划开发一个“综合信息管理系统”,涉及销售、供应、财务、生产、人力资源等多个部门的信息管理。该企业的想法是按部门优先级别逐个实现,边应用边开发。对此,需要一种比较合适的过程模型。请对这个过程模型作出符合应用需要的选择,并说明选择理由。 + +解答:采用增量模型 +原因:增量模型比较适合该项目,理由是可使系统功能按应用领域逐个实现,并可按优先级别安排各功能构件的开发顺序,有利于边开发边应用。 + +> 软件开发的瀑布模型是()。 +> +> A.适用于需求被清晰定义的情况 +> +> B.一种需要快速构造可运行程序的好方法 +> +> C.最适合于大规模团队开发的项目 +> +> D.已不能用于现代环境的过时模型 + +解答:A + +> 现有一种软件开发方法,它将软件开发过程分成以下阶段: +> +> 需求分析、原型开发、评价、系统设计、系统实现 +> +> 这种软件开发方法称为。( ) + +解答:原型法 \ No newline at end of file diff --git a/src/university/_sidebar.md b/src/university/_sidebar.md index 3b6ff64..249909d 100644 --- a/src/university/_sidebar.md +++ b/src/university/_sidebar.md @@ -14,7 +14,7 @@ * [✍ 白盒测试](src/university/104 "白盒测试") * [✍ Selenium使用教程—Java](src/university/105 "Selenium使用教程—Java") * 🏁 设计模式 - * [✍ 设计模式概述](src/university/201 "设计模式概述") + * [✍ 设计模式概述](src/university/201 "设计模式概述") * [✍ 面向对象设计原则](src/university/202 "面向对象设计原则") * [✍ 简单工厂模式](src/university/203 "简单工厂模式") * [✍ 工厂方法模式](src/university/204 "工厂方法模式") @@ -40,4 +40,6 @@ * [✍ 策略模式](src/university/224 "策略模式") * [✍ 模板方法模式](src/university/225 "模板方法模式") * [✍ 访问者模式](src/university/226 "访问者模式") - * [✍ UML类图](src/university/227 "UML类图") \ No newline at end of file + * [✍ UML类图](src/university/227 "UML类图") +* 🏁 项目管理 + * [✍ 主要内容](src/university/301 "主要内容") \ No newline at end of file diff --git a/src/university/软件项目管理/format,f_auto.gif b/src/university/软件项目管理/format,f_auto.gif new file mode 100644 index 0000000..e8a5a0b Binary files /dev/null and b/src/university/软件项目管理/format,f_auto.gif differ diff --git a/src/university/软件项目管理/image-20211223131659073.png b/src/university/软件项目管理/image-20211223131659073.png new file mode 100644 index 0000000..64220de Binary files /dev/null and b/src/university/软件项目管理/image-20211223131659073.png differ diff --git a/src/university/软件项目管理/image-20211223134720034.png b/src/university/软件项目管理/image-20211223134720034.png new file mode 100644 index 0000000..da61c67 Binary files /dev/null and b/src/university/软件项目管理/image-20211223134720034.png differ diff --git a/src/university/软件项目管理/image-20211223135009111.png b/src/university/软件项目管理/image-20211223135009111.png new file mode 100644 index 0000000..8977bf6 Binary files /dev/null and b/src/university/软件项目管理/image-20211223135009111.png differ diff --git a/src/university/软件项目管理/image-20211223135009112.png b/src/university/软件项目管理/image-20211223135009112.png new file mode 100644 index 0000000..cf50ff1 Binary files /dev/null and b/src/university/软件项目管理/image-20211223135009112.png differ diff --git a/src/university/软件项目管理/image-20211223140131393.png b/src/university/软件项目管理/image-20211223140131393.png new file mode 100644 index 0000000..274fa77 Binary files /dev/null and b/src/university/软件项目管理/image-20211223140131393.png differ diff --git a/src/university/软件项目管理/image-20211223140202472.png b/src/university/软件项目管理/image-20211223140202472.png new file mode 100644 index 0000000..ceefb65 Binary files /dev/null and b/src/university/软件项目管理/image-20211223140202472.png differ diff --git a/src/university/软件项目管理/image-20211223140421319.png b/src/university/软件项目管理/image-20211223140421319.png new file mode 100644 index 0000000..0570ea6 Binary files /dev/null and b/src/university/软件项目管理/image-20211223140421319.png differ diff --git a/src/university/软件项目管理/image-20211223143411902.png b/src/university/软件项目管理/image-20211223143411902.png new file mode 100644 index 0000000..9af8c98 Binary files /dev/null and b/src/university/软件项目管理/image-20211223143411902.png differ diff --git a/src/university/软件项目管理/image-20211223143517042.png b/src/university/软件项目管理/image-20211223143517042.png new file mode 100644 index 0000000..7fd7d52 Binary files /dev/null and b/src/university/软件项目管理/image-20211223143517042.png differ diff --git a/src/university/软件项目管理/image-20211223143556605.png b/src/university/软件项目管理/image-20211223143556605.png new file mode 100644 index 0000000..0a46d02 Binary files /dev/null and b/src/university/软件项目管理/image-20211223143556605.png differ diff --git a/src/university/软件项目管理/image-20211223144412634.png b/src/university/软件项目管理/image-20211223144412634.png new file mode 100644 index 0000000..de9ee1d Binary files /dev/null and b/src/university/软件项目管理/image-20211223144412634.png differ diff --git a/src/university/软件项目管理/image-20211223152011973.png b/src/university/软件项目管理/image-20211223152011973.png new file mode 100644 index 0000000..d85c983 Binary files /dev/null and b/src/university/软件项目管理/image-20211223152011973.png differ diff --git a/src/university/软件项目管理/image-20211223153810898.png b/src/university/软件项目管理/image-20211223153810898.png new file mode 100644 index 0000000..50679a2 Binary files /dev/null and b/src/university/软件项目管理/image-20211223153810898.png differ