系统分析与设计期末复习
第一章
系统的五个特性
整体性、目的性、相关性、环境适应性、层次性
软件系统的四个特性
复杂性、一致性、可变性、不可见性
第二章 系统规划
系统开发生命周期
系统规划->系统分析->系统设计->系统实施->系统运行维护->系统规划
诺兰阶段模型
阶段:
初装、蔓延、控制、集成、数据管理、成熟
应用:
1.诊断信息系统当前所处的阶段:选择信息系统开发的时机
2.对系统的规划做出安排:控制系统发展的方向,并且对处于不同阶段上的各个子系统制定不同的发展策略
C/S和B/S
能力成熟度模型(CMM)
头脑风暴法
鱼骨图
类型
整理问题型
各要素与特性值间不存在原因关系,而是结构构成团系。
原因型
鱼头在右,特性值通常以“为什么……”来写。
对策型
鱼头在左,特性值通常以“如何提高/改善……”来写。
第三章 需求分析(偏主观)
怎么做需求分析?怎么画用户画像?怎么做竞品?
SWOT
内部(组织)
Strengths
Weaknesses
外部(环境)
Opportunities
Threats
KANO模型分析法
用户画像
用户画像的主要思路就是:谁+在什么场景下+做什么
怎么做需求分析?产品定位的分析?怎么做竞品?竞品报告怎么写?
第四章
项目管理
网络图
定义
顶点表示事件(状态),边表示活动/作业。
注意
开始与结束节点
网络图的开始节点与结束节点均应是唯一的。
如果在实际工作中发生不吻合时,应将没有紧前作业的结点用虚箭头线同网络始点事项连接起来,将没有后续事项的结点用虚箭头同终点事项边接起来。
两点之间
进入某一个结点的箭线可以有多条,但其它任何结点直接连接该结点的箭线只能有一条。
两个相邻结点间只允许有一条箭 头线直接相连。若有平行活动,可引入虚线以保证这一规则不被破坏。
怎么算关键路径
1.网络图 做早完成时间 工期 最长关键路路径
2.怎么找到关键路径 最早和最晚
3.工期缩短 成本付出 最小付出成本 缩短时间 缩短后可能不是关键路径(见PPT)
4.画出网络图 画出关键路径
甘特图
横轴代表时间,纵轴代表任务量
优点
清楚表达活动的开始时间、结束时间和持续时间,易于理解,能为各层次人员所掌握和运用
使用方便,制作简单,应用广泛
不仅能安排时间,能与劳动计划、资源计划、资金计划相结合
缺点
很难表达各项工作之间的相互依赖和相互制约
不能确定某项工作是否提前或延迟对哪些活动造成影响
不能表示活动的重要性
不能用计算机自动处理,不能计算工期
成本效益分析
就是算利息 没啥东西
第五章
业务流图
常用符号
步骤
1.确定职能和工作任务2.划定工作起点和终点
3.跟踪关键业务对象
4.确定岗位(组织单元)及其活动
5.绘制流程图草案
6.流程图汇总分析
7.确定流程图
数据流图
符号
圆角矩形(过程)
意味着某个动作或者一组动作的发生
有阴影的边框模型(实体)
表示个人,群组,部门或者任何接收原始信息或数据的系统。
箭头(数据流)
显示信息正在流向一个过程,或者从过程流出。
示例
父图子图平衡
模型分解时必须保持父图的输入输出数据流和子图输入输出数据流相同。
画数据流图
步骤
1. 先画出顶层DFD。
2. 自顶向下画出各层DFD
分解原则: 分解后的软件成分有相对独立功能,一次分解不要加入细节过多
由外向里画DFD
3. 先考虑稳定状态 忽略系统的工作条件 即怎么开始、怎么结束的。
4. 忽略琐碎的枝节 如出错处理等
5. 随时准备重画
注意事项
1.无意义的名字
2.父图和子图要平衡
3.每个加工至少有一个输入数据流和一个输出数据流
4.数据流必须要么从某个加工流出、要么流入某个加工,而不能直接从外部项流向数据存储等等。
根据一段文字 画出数据流图
数据流图改错:
结构图
主要成分
模块
用长方形表示。
通常是指用一个名字就可以调用的一段程序语句。 可以将它理解为类似“子程序”的概念。
调用
从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。箭尾的菱形表示有条件地调用,弧形箭头表示循环调用。
数据
用带圆圈的小箭头表示从一个模块传递给另一模块的数据。
控制
信息带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息。
结构化设计基本思想
就是把系统设计成由相对独立、功能单一的模块组成的层次结构。
为了衡量模块的相对独立性,提出了模块间的耦合(coupling)和模块的内聚(cohesion)
一个模块的块内联系强(高内聚)并且块间联系弱(低耦合),一般称其模块的独立性高。
耦合(coupling)
反映模块之间连接的紧密程度。
耦合是影响软件复杂程度和设计质量的重要因素
尽量使用数据耦合
少用控制耦合
限制公共耦合的范围
完全不用内容耦合
最终目的:降低模块接口复杂性
分类(耦合性由低到高)
无直接耦合
两个模块没有直接关系,模块独立性最强
数据耦合
一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。
特征耦合
两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,但实际只使用数据结构其中的部分数据
控制耦合
一模块向下属模块传递的信息 (开关量、标志等控制被调用模块决策的变量) 控制了被调用模块的内部逻辑。
控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。
去除方法
去除模块间控制耦合的方法: 将被调用模块内的判定上移到调用模块中进行 被调用模块分解成若干单一功能模块
外部耦合
一组模块均与同一外部环境关联 (例如,I/O模块与特定的设备、通信协议相关联),它们之间便存在外部耦合。外部耦合必不可少,但这种模块数目应尽量少
公共耦合
一组模块引用同一个公用数据区 (也称全局数据区、公共数据环境)。
公共数据区指:全局数据结构、共享文件、数据库、共享通讯区、内存公共覆盖区等。
内容耦合
内聚(cohesion)
指一个模块内各元素彼此结合的紧密程度。
如果一个模块内部相关性很高,而且都是为了同一个功能,我们就说它的内聚程度高。
分类(内聚性由低到高)
1. 偶然内聚(coincidental cohesion)
模块的各部分无联系
2. 逻辑内聚(logical cohesion)
把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。部分共享代码,但修改模块会影响其他模块。
3. 时间内聚(temporal cohesion)
模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。出现问题时难以确定哪个部分故障。
4. 过程内聚(procedural cohesion)
模块内各部件相关且仅有控制联系,各部件以特定次序执行。模块包含了多个功能的一部分,当某个功能出现问题时,难以确定问题在哪个模块
5. 通信内聚(communicational cohesion)
模块内各部分使用相同的输入数据,或产生相同的输出结果,通过参数选择部件。
6. 顺序内聚(sequential cohesion)
模块内各部件包含数据联系也包含控制联系,并且必须按顺序执行,上一处理的输出作为下一处理的输入。
缺点:模块可能涉及多个功能,诊断困难
7. 功能内聚(functional cohesion)
模块仅包括为完成某个功能所必须的所有成分。 模块所有成分共同完成一个功能,缺一不可
好处:易进行故障诊断和维护。
从数据流图导出结构图
1.确定事务的来源(数据字典中已定义)。
2.确定适当的、以事务为中心的系统结构。
3.确定出每一种事务以及它所需要的处理动作。
4.对有相同处理功能的模块进行合并。
5.针对每一种类型的事务,分别建立专门的事务模块,对它们进行独立的处理。
6.一种事务所引起的每一个处理动作,要分别建立一个直接从属于该事务模块的下级模块。
7.必要时,对动作模块作进一步的分解。
把一个系统分成若干个模块
结构化决策
对一个不太复杂的逻辑判断,或者条件的顺序很重要,或者不是每个条件都与每个行动相关,使用决策树较好
对一个十分复杂的逻辑判断,并且需要考虑所有可能情况,使用决策表较好
如果一个处理过程中,既包含顺序结构,又有判断和循环逻辑的时候,使用结构化英语较好
决策树
分支太多太复杂时,树会很庞大
非叶节点表示判断,叶节点表示行动
决策表
可以合并
步骤清晰。 对所有的条件组合一个不漏。
对于条件多、取值多,相应动作多的情况作决策时更为适用。
结构化英语
使用公认的大写关键字:
IF,THEN,ELSE,DO,DOWHILE, DO UNTIL,PERFORM
缩进语句块。
使用“and”和“or”注意避免产生混淆。
第六章 面向对象分析
用例图
参与者有谁?有哪些用例?根据某一段描述
<<include>>
用例中更详细的描述
<<extend>>
扩展了可选的新功能
泛化
类似于继承,空心箭头
活动图(泳道图)
“纵轴”表示“参与者”
“横轴”表示“业务(用例)”
根据用例 根据详细描述 画出活动图
注意二选一情况和并行情况
类图
+public
-private
#protected
泛化关系
定义
表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。
表示方法
用一个空心箭头+实线,箭头指向父类。或空心箭头+虚线,如果父类是接口。
实现关系
定义
一般是接口的实现
表示方法
虚线空三角。
关联关系
定义
类与类之间的联接,它使一个类知道另一个类的属性和方法。
表示方法
用 实线+箭头, 箭头指向被使用的类。
聚合关系
定义
是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。
表示方法
空心菱形+实线+箭头,箭头指向整体。
合成关系
定义
是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,合成关系不能共享。
表示方法
实心菱形+实线+箭头,
依赖关系
定义
是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。
表示方法
虚线+箭头 箭头指向被依赖的一方,也就是指向局部变量。
唐老鸭和鸭子 气候和企鹅 大雁和雁群 鸟和翅膀
时序图
第七章 数据库设计
ER图
矩形:代表实体集(具有相同属性或特征的实体集合);
椭圆:代表实体属性;
菱形:代表实体间的联系集(同一类型的所有联系的集合);
线段:将属性与实体集相连或将实体集与联系集相连。
第九章 版本控制
git 五个语句:
git clone/git fetch
git checkout
git add
git commit
git push
第十一章 开发安全
了解一下软件开发的时候的安全问题
第十二章 工程伦理
开发中的伦理问题
敏捷项目管理
根据excel学习