美文网首页读书笔记
软件工程基础知识 — 上篇

软件工程基础知识 — 上篇

作者: 星辰大海的精灵 | 来源:发表于2024-02-24 20:33 被阅读0次

    软件开发生命周期

    软件定义时期:问题定义、可行性研究、需求分析。

    软件开发时期:概要设计、详细设计、编码、测试。

    软件运行和维护:软件产品移交给用户使用。

    软件系统的文档

    用户文档:描述系统功能、使用方法。

    系统文档:描述系统设计、实现、测试。

    软件系统工具

    开发工具:需求分析工具、设计工具、编码与排错工具、测试工具。

    维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。

    管理和支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

    软件工程过程:包括4个方面活动

    P(Plan)-- 软件规格说明。规定软件的功能及其运行时的限制。

    D(Do)-- 软件开发。开发出满足规格说明的软件。

    C(Check)-- 软件确认。确认开发的软件能够满足用户的需求。

    A(Action)-- 软件演进。在运行过程中不断改进以满足客户新的需求。

    软件设计的4个活动

    数据设计

    架构设计(体系结构设计)

    人机界面设计(接口设计)

    过程设计

    重点1: 软件过程模型

    1

      瀑布模型

    是一个严格串行化的过程模型,因果关系紧密相连,前一个阶段工作的输出结果,是后一个阶段工作的输入。每一个阶段工作完成后,都伴随着一个里程碑,对该阶段的工作进行审查和确认。

    严格的顺序限制了开发的灵活性。

    不适应需求变化,难以快速响应变化。

    风险管理困难。

    缺乏客户参与,用户在开发过程中的反馈和意见很难被及时纳入。

    过程不可逆,导致后期发现问题时,无法及时修正。

    2

      原型模型

    根据用户提出的软件系统的定义,快速的开发一个原型,该原型包含目标系统的关键问题、反映目标系统的大致面貌。

    水平原型(行为原型):只是功能的导航,主要用在界面上。

    垂直原型(结构化原型):实现了部分功能,主要用在复杂的算法实现上。

    抛弃原型:在需求确认后,原型被抛弃不用。

    演化原型:在需求确认后,不断补充和完善原型,直至形成一个完整的产品。

    3

      螺旋模型

    快速原型的基础上扩展而成,支持大型软件开发,适用于具有高风险的系统。

    目标设定:需求分析,指定对过程和产品的约束,制订详细的管理计划。

    风险分析:对可选方案进行风险识别、制订解决办法,采取措施避免风险。

    开发和有效性验证:实施工程,开发原型,开发软件产品。

    评审:客户评估,对项目进行评审,制订下阶段计划。

    总结:为了使软件生命周期中的各项任务能够有序的按照规程进行,需要一定的工作模型对各项任务给予规程约束,这样的工作模型 称为 软件过程模型。

    重点2:  敏捷模型

    敏捷方法的特点

    适应性,而非预设性。

    面向人的,而非面向过程的。

    敏捷方法的核心思想

    适应性,而非可预测。

    以人为本,而非以过程为本。

    迭代增量式的开发过程。

    主要敏捷方法

    1. 极限编程XP  

    是一种近螺旋式的开发方法,提倡测试先行,将复杂的开发过程分解为一个个相对比较简单的小周期,通过交流、反馈、简单、勇气,开发人员和客户可以非常清楚开发进度、变化、待解决的问题、潜在的困难等,并根据实际情况及时的调整开发过程。

    在执行交付计划之前,极限编程要求团队对系统的架构做一次预研(架构穿刺),当架构的初始方案确定后,就可以进入每次小版本的交付,每个小版本交付又被划分为多个周期相同的迭代,在迭代过程中,要求执行一些必须的活动,如编写用户故事、故事点估算、验收测试等。

    2. 水晶系列方法  

    提倡“机动性”的方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。

    3. 并列争求scrum  

    侧重于项目管理,是迭代式增量软件开发过程,包括了一系列实践和预定义角色的过程骨架。在scrum中使用Product Backlog来管理产品的需求,Product Backlog是一个按照商业价值排序的需求列表。根据Backlog的内容,将整个开发过程分为若干个短的迭代周期(sprint)。在spring中,scrum团队从Product Backlog中挑选最高优先级的需求组成Spring backlog。在每个迭代结束时,scrum团队将递交潜在可交付的产品增量。当所有spring结束时,提交最终的软件产品。

    角色

    1. 产品负责人- product owner职责:把方向— 做正确的事

    PO是利益相关方的代表,从业务角度出发,对需求按权重排序,合理调整产品功能和迭代顺序。

    2. scrum主管- scrum master 职责:找方法—正确的做事

    SM负责提高团队效率,确保所有的障碍backlog中的问题都已分配并可以得到解决,开发思想得到利益相关方的理解和支持,让利益相关方获得最大化的投资回报。

    3. 开发团队:职责:执行—把事情做正确

    尽一切可能去完成任务,发布产品,充分理解PO的产品愿景,合作完成冲刺中的每一个目标,更好的支持可能需要进一步开发的产品发布。

    工件

    1. product backlog:按照商业价值排序的需求列表。

    2. spring backlog:从Product Backlog中挑选最高优先级的需求。

    3. 产品增量 increment:每个迭代结束时交付给客户的内容。

    4. 燃尽图:显示当前冲刺中未完成的任务数目,描述随着时间的推移而剩余的工作量,可用于表示工作进展。

    活动

    每个迭代召开“四会”:计划会、站立会、评审会、回顾会。

    1. 冲刺计划会:在每个冲刺之初,由PO讲解需求 

    2. 每日站立会:每天进行沟通的内部短会。

    会议由SM主持,团队成员把注意力集中在回答关键问题上,把已完成的任务从"处理中"状态转为"已完成"。会议结果:更新后的燃尽图、障碍backlog、冲刺backlog。

    3. 冲刺评审会:在冲刺结束前给PO演示并接受评价的会议。

    开发进度通过实际已完成的产品的功能审核来进行控制。开发团队演示这个spring中完成的功能,由PO断定实际所发布的功能是否与既定的spring目标一致。会议结果:对当前冲刺的结果和整个产品的开发状态达成共识。

    4. 冲刺回顾会:在冲刺结束后召开的关于持续演进的会议。

    分析冲刺的成功经验、所遇到的障碍、改进目标。

    4.特性驱动开发方法FDD  

    是一个迭代的开发模型,FDD认为有效的软件开发需要3个要素:人、过程、技术。6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员、领域专家。

    5个核心过程

    开发整体对象模型

    构造特征列表

    计划特征开发

    特征设计

    特征构建

    重点3:  统一过程模型RUP

    RUP描述了如何有效的利用商业的、可靠的方法开发和部署软件,是一种重量级过程。RUP类似一个在线指导者,它可以为所有方面和层次的程序开发提供指导方针、模板以及事例支持。RUP软件开发生命周期是一个二维的软件开发模型,有9个核心工作流。

    9个核心工作流

    1. 业务建模

    理解待开发系统所在的机构及其商业运作,评估待开发系统对所在机构的影响。

    2. 需求

    定义系统功能用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。

    3.分析与设计

    把需求分析的结果转化为分析与设计模型

    4. 实现

    把设计模型转化为实现结果,对开发的代码做单元测试,将不同的模块集成为可执行系统。

    5. 测试

    检查各个子系统之间的交互、集成,验证所有需求是否被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。

    6. 部署

    打包、分发、安装软件,培训用户,提供技术支持。

    7. 配置和变更管理

    跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。

    8. 项目管理

    为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。

    9. 环境

    提供软件开发环境,提供过程管理和工具支持。

    RUP生命周期的4个阶段

    初始:定义最终产品视图和业务模型,确定系统范围。

    细化:设计及确定系统的体系结构,制订工作计划及资源要求。

    构建:构造产品,继续演进需求、体系结构、计划直至产品提交。

    移交:把产品提交给用户使用。

    核心概念

    角色:描述人或小组的行为与职责。who

    活动:有明确目的的独立工作单元。how

    制品:是活动生产、创建、修改的一段信息。what

    工作流:描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。when

    RUP的特点

    用例驱动

    以体系结构为中心:软件的体系结构是一个多维的结构。

    迭代与增量

    RUP采用“4+1”视图模型来描述软件系统的体系结构。

    1. 用例视图:分析人员和测试人员关注系统的行为,描述系统的功能需求。

    2. 逻辑视图:最终用户关注系统的功能,描述系统的静态结构。

    3. 进程视图:系统集成人员关注并发和同步特征,描述线程间的并发和同步。

    4. 实现视图:程序员关注模块之间的依赖关系, 描述系统代码构件组织和模块。

    5. 物理视图:系统工程师关注系统的部署、安装。定义软件到硬件的映射。

    阶段4:  能力成熟度模型

    能力成熟度模型CMM

    初始级:杂乱无章,没有明确定义的步骤。

    可重复级:基本的项目管理过程和实践,可跟踪,必要的过程准则。

    已定义级:软件过程已经文档化、标准化、标准软件过程。

    已管理级:详细度量标准、对软件过程和产品质量有定量的理解和控制。

    优化级:不断持续改进。

    能力成熟度模型集成CMMI

    1. 初始级

    过程通常是随意且混乱的。

    2. 已管理级

    确保策划、文档化、执行、监督、控制项目级的过程。

    为过程建立明确的目标,能实现成本、进度、质量目标。

    3. 已定义级

    企业能够根据自身的特殊情况定义适合企业和项目的标准流程,将这套管理体系与流程予以制度化,同时企业开始进行项目积累,企业资产的收集

    4. 量化管理级

    建立了产品质量、服务质量、过程性能定量目标,对过程性能可预测

    5. 优化级

    通过增量式、创新式的过程与技术改进,不断改进过程性能。

    相关文章

      网友评论

        本文标题:软件工程基础知识 — 上篇

        本文链接:https://www.haomeiwen.com/subject/nrvbadtx.html