【理论】软件工程导论

软件概念:
软件 = 程序 + 数据 + 文档


软件生命周期:
1.定义时期:
问题定义:确立工程目标(立项调查);
可行性研究:工程可行性分析;
需求分析:导出工程采用策略和软件功能;
2.开发时期:
系统设计:
总体:确定实现方案;确定体系结构(模块组成和模块间的关系)
详细:确定每个模块的数据结构和算法

系统实现:
编码:把详细设计翻译成代码
测试:集成测试;验收测试;
3.维护时期:修复更新(改错误,改需求,改环境);

软件危机:如何开发软件?如何维护软件?
成因:软件本身的复杂性,软件开发方法不当(设计不当,文档不全);
消除:使用成熟技术方法,使用更好的开发工具(SVN),加强组织管理(文档);




模型:
瀑布模型:适用于需求明确的项目;按阶段划分(同步开发),以文档为核心,效率低下
快速原型:适用于需求不明确的项目;构造原型->用户体验->返回修改直到完成;用户全程参与,迭代开发不利维护;
*增量模型:适用于需求明确的项目;需求->设计->分模块实现测试提交;


可行性分析:(计算/经济)
分析可行性不是为了解决问题,而是确定问题是否值得去解决;
&系统流程图:用来描述系统运行流程;


需求分析:
基本任务:准确地回答"系统必须做什么";
需求分析的任务不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作;
%软件需求规格说明书:分析员和用户共同完成;


&层次方框图,实体关系图(E-R图),数据流图(DFD),状态变迁图;
%数据字典:解释图中的名词;
实体联系图:(拆分表)
第一范式:字段不可分割;
第二范式:不存在部分依赖(部分主码就能确定一条纪录)
第三范式:没有传递依赖

数据流图中只有数据流,没有控制流;
顶层数据流图没有存储,系统被封在外部实体中,顶层数据流图就是待开发系统的IO;
错图:数据流的起点/终点必须是数加工(圆角矩形)
1. 实体(方角矩形) -> 实体
2. 实体 <-> 存储(开口矩形)
3. 存储 <-> 存储
4. 子功能(圆)的IO不可单一:只有输入/出




设计:
设计原则:模块化,抽象化,高内聚(模块内部联系)低耦合(模块间联系);
耦合的标准:
无直接耦合:Client调用A和B
数据耦合:基本类型做通信
标记耦合:结构体通信

控制耦合:流程控制通信;

外部耦合:全局变量;
公共环境耦合:文件;

内容耦合:模块多入口,内部数据公开,非正常进入其他模块,代码重叠;

低耦合打码:
-------------------
模块功能划分单一化;
使用设计模式;
少继承多实现;
少全局多私有;
避免SQL硬编码;


概要设计:划分模块,定义接口,设计体系流程;


详细设计:设计UI,设计数据库,设计数据结构/算法;




测试:
测试不能证明错误不存在,只能证明错误存在;
测试的目标是尽可能的发现潜在的错误;
成功的测试是发现至今尚未发现的错误;


Alpha测试:
用户在开发者指导下进行测试,开发者记录系统问题;
Beta测试:
用户在用户场所进行测试,用户记录测试问题;


测试用例设计技术:
白盒测试:逻辑覆盖+控制结构测试;
黑盒测试:等价划分+边界测试;



软件工程,有用的也就UML和设计模式了,改天整理好再上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值