看这玩意复习你还会挂科?《软件工程篇》

软件工程:是指导软件开发和维护的一门工程学科 三要素方法/工具/开发过程 价值:促进项目成功

现代产品开发三原则:功用性、可行性、称许性 软件过程是软件工程的核心组成部分。

迭代 :反复求精  增量:逐块建造    需求调查手段:研究文档、访谈、现场观察、问卷、原型法

经典软件过程:瀑布模型、RUP统一软件过程、Scrum敏捷过程、扩展ICONIX过程

瀑布模型:需求分析、需求定义、概要设计、详细设计、实现、系统测试、验收测试、维护

UML承载面对象思想。静态图:对象图/类图/组件图/部署图;动态图:用例图/序列图/活动图/状态图/协作图

需求是软件成功的基础,需求工程是解决需求噩梦手段:需求开发/调查/分析/定义/管理/确认/跟踪/变更控制

需求开发(获取用户需求/定义产品需求,找到痛点提出办法)需求调查需求分析(定义愿景、业务建模、用例分析)需求定义:规格说明书((非)功能需求)需求管理(客户与开发方需求共同理解,维护与其他成果一致,控制变更)

三类人需求:老板战略/开源节流/定愿景;经理:简化管理优化流程 业务建模;业务建模;员工:工作简单用例分析

ICONIX过程:(开源节流用例驱动)愿景、业务建模(用例/现状序列图/改进)需求分析(系统/域)健壮性分析(健壮性图更新域模型)关键设计最终设计(详细设计)实现(域模型->更新->静态类图)

特点:早编码,缩短设计周期。简化RUP过程。基于敏捷思想。

与RUP比是轻量级过程。与敏捷比提供充足的需求设计文档,但不过度分析设计。

 

获取愿景:找项目老大(最有权力的干系人)得到期望(掏钱的目的)描述度量指标

业务建模步骤明确为谁服务(改进组织)什么现状从外部看:组织是价值的集合;从内部看是系统的集合。改进

业务建模意义把视角转向客户,清晰准确诊断。明确为谁服务,不为自己做;组织现状/痛处不足;如何改进/解决.

业务用例图:帮助从高层次了解组织的业务构成。业务执行者:享受价值;业务组织:提供的价值。

业务序列图(帮助从细节上了解组织的业务流程)用例对应一段流程优势:以面向对象的思想来看业务流程

作用:识别业务对象:确定业务对象间职责、协作和交互顺序;通过业务序列图了解现状,为业务的优化提供依据

组成:业务执行者;业务工人;业务实体;调用消息;返回消息 常用分支:循环loop、分支alt、可选opt

改进1新系统作为实体引入现有流程、查看可改进流程、评估改进结果

2了解目的,发现改进点:信息自动流转、封装复杂逻辑、职责转移、操作业务对象(管理系统)

结果复核(所有参与者签字确认或未达成共识需要返工)目的:完善建模成果,寻找遗漏错误的地方,修正,可以迭代回去继续做业务建模。关键干系人在信息和意见上达成一致,签字确认,下一阶段启动标志。

 

域建模步骤提取名词短语、排除重复相似、排除系统本身及范围外、第一版、整理第一版域模型  

意义术语表确保清晰一致术语交流。比普通术语:图示化方式,清晰显示术语关系3修正完善演化为最终静态类图

域模型数据模型关系

域模型:分析模型、认识实体间关系的工具;数据模型:系统设计实现的一部分,描述用户需求在数据结构的实现

组成系统:主执行者:发起者,为其实现辅执行者:支持者;提供支持(后台)3系统边界、系统用例、用例关系

系统用例建模意义把视角转向新系统,站在最终用户角度看问题,是对新系统为系统执行者提供的价值的建模

绘制系统用例步骤:1确定系统边界 2识别系统执行者3识别系统用例,执行动作,生成执行者可观测价值结果

用例关系包含:封装一组相似动作以便复用。泛化:继承。扩展:一段相对独立且可选的动作

用例≠功能/步骤(用例是执行者愿望,很多步骤)大量用例分包:按执行者、按主题、按开发团队、按发布情况

系统用例描述干系人利益(客户:简单。银行:安全。法律:保护)基本路径(客户最想看到 “名动名” 主语是执行者或系统)扩展路径(意外分支)业务规则(限额)非功能性需求:做到的程度、功能性需求:做什么

软件需求规格书:正确性、必要性、优先级、明确性、可测性、完整性、一致性、可修改性

需求评审:

1临时评审(回顾与用户日常沟通)2轮查(交叉产物互相提意见)3结对编程/走查/评审/审查4规划:谁参加/评审什么5总体会议6准备7审查会议:暴露讨论问题8返工:防形式主义9跟踪:解决问题避免再次出现

 

健壮性分析三种元素:边界类实体类控制器类

规则1执行者只和边界通话2边界和控制器3控制器和控制器4控制器和实体

健壮性步骤:创建图、用例文本、基本路径,执行者、边界对象和实体对象、控制器,元素之间的连线、扩展路径。

健壮性优点:1.用例的对象化图示,用例和对象链接起来2.指出了对象互相如何交互3.确保用例文本正确,提供了健壮性检查4.帮助确保用例考虑所有必要扩展路径,提供完整正确检查5.能够发现对象6.缩小分析和设计鸿沟

价值:帮助完善用例分析结果。完善域模型,做为需求分析走向系统设计的过度技术

 

关键设计意义:寻找对象间交互关系,进行方法分配。包括用例图、用例描述、健壮性分析图。

非功能性需求:可靠性、可用性、性能、可支持性

高内聚:一个软件模块由相关性强的代码组成,只负责一项任务,一个好内聚模块恰好做一件事,单一责任原则

低耦合:度量模块间直接依赖关系,模块与模块间接口应少而简单,如关系较复杂,模块划分,有利于修改与组合

详细设计(编码测试部署维护升级)技术架构:开发语言、网络拓扑安全、体系结构、硬件环境、软件环境

 

敏捷宣言敏捷=理念+优秀实践+具体应用(是敏捷起源基础,揭示更好开发方式,重新思考开发中的价值和如何更好工作,是以人为核心/迭代/循序渐进的开发方法)

1)个体与交互>过程和工具2)可以工作的软件>面面俱到的文档3)客户协作>合同谈判4)响应变化>遵循计划

(软件:复杂性/一致性/可变性/不可见性)敏捷有改变:管理者的转变\团队成员的转变

好功能列表有DEEP特征:详略得当、涌现的、做过估算、排列优先级。

Scrum产品负责人、scrum教练、开发团队

1)产品负责人和开发对产品业务目标形成共识2)产品负责人建立维护需求列表(不断新增改变),优先级排序3)产品负责人每轮迭代前,筛选高优先级需求本轮开发4)开发团队细化迭代需求,按照优先级依次迭代完成5)开发团队每日立会/特性开发/持续集成,使开发进度真正透明(每日立会)6)产品负责人对每轮迭代交付的可工作软件现场验收反馈(迭代评审会议)7)团队内部进行本轮回顾,发现可改进方面指导下一轮迭代(迭代回顾会议)

敏捷管理实践迭代计划会议(达成一致确定任务)、迭代执行、每日立会迭代评审会议迭代回顾会议(总结改进)

敏捷工程实践结对编程、测试驱动开发、持续集成、Code Review、产品发布规则、用户故事

用户故事三要素:客户价值、用户 级别:史诗故事(1月)、特性故事(1周)、冲刺故事(1天)、任务(小时)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:02---命名空间

一、概念: ①类似于仓库,空间内存储代码,需要用到时调用②也为防止名字冲突提供了更加可控的机制二、命名空间的定义 定义的基本格式如下:namespace 命名空间名 { //一系列声明与定义 };三、命名空间的注意事项 命名空间定义时最后的分号可有可无只要出现在全局作用域中的…

看这玩意复习你还会挂科?《软件工程2篇》

第一章: 软件工程定义: 1968年10月,Fritz Bauer 首次提出了“软件工程”的概念,并将“软件工程”定义为:为了经济地获得能够在实际机器上有效运行的可靠软件,而建立并使用的一系列工程化原则。 1993年IE…

C++:05---命名空间

一、概念: ①类似于仓库,空间内存储代码,需要用到时调用②也为防止名字冲突提供了更加可控的机制二、命名空间的定义 定义的基本格式如下:namespace 命名空间名 { //一系列声明与定义 };三、命名空间的注意事项 命名空间定义时最后的分号可有可无只要出现在全局作用域中的…

C++:04---内联函数

1.概念: 内联类似于宏定义,当程序执行到内联函数时,相当于复制了一份函数代码。牺牲代码空间,赢得了时间 内联说明只是向编译器发出一个请求,编译器可以选择忽略这个请求 2.关键字:inline 声明时写了inline,定义时可省略。建议声明和定义都加上inlineinline int add(int…

leetcode86. 分隔链表

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入: head 1->4->3->2->5->2, x 3 输出: 1->2->2->4->3->5…

(十三)nodejs循序渐进-高性能游戏服务器框架pomelo之扩展聊天服务器为机器人自动聊天

聊天服务器扩展 大家在上一篇文章里相信已经学会了pomelo框架的基本用法了,那么我们在上一篇文章的代码基础上继续扩展,丰富系统,另外也熟悉下他的更多的用法,这一节我将扩展它:增加一个机器人自动聊天的功能。 目的…

C++:09---类静态成员、类常量成员

一、类静态成员(static) 先介绍一下什么是静态变量、静态函数 静态局部变量:存在域(全局数据区),作用域(块作用域)静态全局变量:存在域(全局数据区),作用域(整个文件)静态函数:存在域(全局数据区),作用域(整个文件)static int a=10;//全局静态变量 static vo…

C++:08---成员变量初始化方式

成员变量初始化有三种方式: 在构造函数体内赋值初始化在自定义的公有函数体中赋值初始化(一般用于成员变量的初始化)在构造函数的成员初始化列表初始化一、构造函数体内初始化 说明:在构造函数体内的初始化方式,本质是是为成员变量赋值,而不是真正意义上的初始化,这点要…

leetcode1290. 二进制链表转整数 刷新认知,最简单算法题

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1: 输入:head [1,0,1] 输出:5 解释:二进制数 (101) 转化为十进…

Redis:02---安装Redis(Linux+Windows+Docker)

Linux安装:一、安装方式1(下载源码编译安装)第一步:从下面的网址中下载Redis最新稳定版本的源代码sudo wget http://download.redis.io/redis-stable.tar.gz第二步:下载完之后解压,建立一个软链接指向于red…

C++:10---再议拷贝构造函数

一、概念 使用一个已经存在的对象,去构造(初始化)另一个对象二、格式 参数加上const&,因为拷贝构造函数在几种情况下都会被隐式地使用,因此拷贝构造函数不应该是explict的const:防止函数内部修改值&:防止无限循环拷贝类名(类名 const& 参数名) { 函数体 }三、…

人的思维谬误与心理学效应

启发法 用一个容易的问题代替难以回答的真正问题。这个容易的问题的答案就是对真正问题的启发,但启发经常和真正的答案差得很远,而人却往往把启发当成了真正问题的答案。 接下来介绍和启发法相关的心理效应和谬误。每一个谬误都会注明真正的问题是什么…

C++:07---this指针

一、this指针介绍 概念:this指针是成员函数的一个隐式参数,在类中本质上就是对象的指针(常量指针)特点:在成员函数中可通过this指针区别成员变量与形参变量this可以显式调用示例代码:class Cperson { private: int age; float height; public: void InitPerson(int age,flo…

Redis :01---Redis简介和安装

一、Redis简介 Redis官网:https://redis.io/ Redis是一种基于键值对(key-value)的NoSQL数据库 与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、 list&…

215. 数组中的第K个最大元素 BFPRT最牛解法

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4 说明: 你可以假设 k 总是…

C++: 06---构造函数析构函数

拷贝构造函数: 用一个已经存在的对象来生成一个相同类型的新对象。(浅拷贝)默认的拷贝构造函数: 如果自定义了拷贝构造函数,编译器就不在生成默认的拷贝构造函数。 如果没有自定义拷贝构造函数,但在代码中用到了拷贝构造函数,编译器会生成默认…

leetcode371. 两整数之和 不用+号做加法

不使用运算符 和 - ,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。 示例 1: 输入: a 1, b 2 输出: 3 示例 2: 输入: a -2, b 3 输出: 1 思路:模拟加法器 二进制不考虑进位:000,010,110,是…

C++:05---class和struct

C++被称为“C with class”,可见在C++中class是多么重要,与class类似的一个结构就是struct了,struct最早是在C语言中出现的,在C++中对struct的功能也进行了扩展。 class : public(公有):在类内外、派生类中都可被访问protected(保护):希望与派生类共享但是不想被公共…

leetcode34. 在排序数组中查找元素的第一个和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums [5,7,7,8,8,10], target 8 输…

C++:11---友元函数、友元类

一、友元(friend) 概念:通过友元,打破了类的封装性,可以访问类内的所有成员分类:友元函数、友元类二、友元函数 概念:友元函数是一个普通函数,不属于类,但需要在类内表明友元关系 友元函数可访问类内所有成员,但类不可以访问友元函数…