问君能有几多愁,恰是跳完代码改需求。
相信这肯定是很多小伙伴的看法!
但是呢?不谋全局者,不主谋一域
接下来我来分析一下需求分析一些要点!
需求分析与系统设计主要岗位:
系统分析,架构师
CMMI:成熟度模型(雷诗雨孙子兵法)
CMMI外包三级才能接单。
需求管理:双向追踪
(代码对应什么需求)
项目启动,策划,监控。
模型:可视化,具体说明,模板,记录。
UML,可视化语言建模(8种模型)
为不同领域人提供统一交流
(软件,制造,工业)
软件系统建模:
逻辑视图,
需求视图,
过程视图,
部署视图。
软件工程:
需求工程
分析与设计,
软件测试,
项目管理,
软件实现。
1,可行性分析 “系统解决什么”,“是否可行”
2,需求分析阶段,
2.1需求获取,定义,系统功能一个描述
2.2需求规约,系统模型
2.3,需求验证
3,设计阶段,
3.1概要设计:
软件体系结构
C/S,数据库,管道,
面向对象
3.2详细设计:
每个模块精确描述。
4,实现阶段,选择一种语言编码。
5,确认阶段:软件测试,白盒,黑盒
6,支持:完善维护,纠错维护。
螺旋模型:适合大型软件开发,
电子商务,电子政务
瀑布和增量模型结合起来
喷泉模型:
用户需求为动力
对象为驱动模型
智能模型:
基于知识开发模型
瀑布模型+专家模型结合
瀑布模型:无法解决不明确,变动问题。
增量开发:
规模不能大,
对需求非常了解
有顶层设计经验
软件工程概要:方法,工具,过程。
基本目标:成本,质量,工期(互斥)
一个良好的家风
1,访谈和会议
2,问卷调查(有目的获取)
3,研究竞争对手
4,与用户形成联合小组
需求面临的挑战:
1,寻找用户
2,问题空间理解
2,需求不断变化
需求要求:
功能,性能,环境。
UML,需求建模。
符号化语言。
需求分类:
功能性需求:
呈现用户可以观察的结果
(用例建模,数据流建模)
非功能性需求:(质量)
安全性,易用性,
性能,可修改性
设计约束:系统开发的限制条件。
(软件工程处于核心地位)
系统设计:决定软件质量的优劣。
(开发和维护的基础)
软件规格说明书
四种设计模式:
构建,结构,体系,数据。
软件设计是一个迭代的过程:
目标:
1,满足所有显性需求
满足用户希望的隐形需求
2,可读,可理解,易于实现的
3,现实角度出发
建模:
信息(实体关系图)
功能(数据流图)
行为(状态转换图)
需求分析方法:
1,结构化分析方法(SA):分层DFDs
根据数据处理角度来看。
2,面向对象:用例模型(OOA)
(用例图,用例故事)
UML(掷骰子)
构建用例模型。
分析模型的要素:
基于场景:用例图,用户故事
类模型:类图,协助图
流模型:DFDs,数据模型ERD
行为模型:STD,时序图
软件设计:
需求转化为系统的重要环节
系统设计:优劣决定了系统的质量
技术:数据,接口,体系结构
工程:概要:软件需求转化为数据结构
详细:对结构进行细化,
得到软件详细的数据结构,算法。
一,抽象:
1,过程(步骤)
2,数据(冠名数据集合)
二,精化
过程细节,数据细节进一步精化
三,模块化:
分而治之(结构清晰,易于规划,长期维护)
同时避免不足,过度模块化。
四,信息隐藏:
每个模块对其他模块
是隐藏的,不可见的
五,功能独立
每一模块有单一功能,
模块的独立程度是评价设计好坏重要标志
内聚:功能独立
耦合:模块之间相互联系
由高到低:
内容,公共,外部,控制
标记,数据,非直接。
设计原则:高内聚,低耦合。