软件工程SE
2016-07-02 12:42:35 0 举报
AI智能生成
软件工程(SE)是一门专注于设计、开发和维护大型和复杂软件系统的学科。它涵盖了从需求分析、系统设计、编码、测试到部署和维护的整个软件开发生命周期。软件工程师使用各种工程原则、方法和工具来创建高质量、可维护和可重用的软件。他们不仅需要具备深厚的编程技能,还需要理解业务流程、用户界面设计和数据库管理等多个领域。此外,软件工程师还需要与团队成员紧密合作,以确保项目的顺利进行。在今天的数字时代,软件工程师的角色变得越来越重要,因为他们创建的软件正在驱动我们的日常生活和工作。
作者其他创作
大纲/内容
软件危机与软件工程1、2、13
软件
组成
程序-按事先设计的功能和性能要求执行的指令序列
文档-与程序开发,维护和使用有关的图文材料
开发文档
管理文档
数据-使程序能正常操纵信息的数据结构
特点
更依赖于人
开发成本、进度难估计
正确性难保证
维护困难
不磨损、不老化
可长期使用
发展
程序设计语言兴起时期
结构化程序设计时期
软件工程与软件开发
环境时期
软件危机-计算机软件的开发和维护过程中所遇到的一系列严重问题
SE起源于软件危机
表现
难以控制开发进度
进度拖延,成本失去控制
损害软件质量,引起用户不满
软件开发中人的因素导致
“二八定律”:
一般人主观上认为已经完成了80%,但实际上只完成了20%。
软件工作量估计困难-在已拖延的软件项目上,增加人力只会使其更难按期完成
软件修改、维护困难
纠正一个错误带来更多新错误
错误发现得越晚,纠正错误所要付出的代价也就越大
维护成本所占比例大
原因
需求问题
用户描述不精确
开发人员理解不一致、随意性大
管理问题-软件开发离不开管理
方法、工具问题
局限性
*软件工程-研究“大型”软件开发和维护的模型、技术、方法、工具、环境和管理的工程学科
SE的两个主要内容
软件生产-3~12讲
软件管理-13讲
把工程化应用于软件中
*软件质量评价
软件生存期-软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程
三个时期
定义时期
开发时期
使用和维护时期
六个阶段
软件计划-计划任务书
问题定义
可行性分析
需求分析-需求规格说明书
设计-设计说明书
概要设计
详细设计
编码-程序清单
测试-测试报告
单元测试
集成测试
使用与维护-维护记录
生命周期方法的特点
顺序性、依赖性
推迟程序的物理实现
质量保证的观点(利于尽早发现错误)
阶段文档
评审
里程碑(Milestone):软件生存期中各开发阶段末尾的特定点
软件开发模型-掌握主要思想、特点、适用范围
作用
描述各阶段关系
为软件工程管理提供里程碑和进度表
为开发过程提供原则和方法
瀑布模型
阶段划分,分而治之,控制开发过程的复杂性
自顶向下,由抽象到具体,顺序进行,文档驱动
适用范围
结构化方法,面向过程的软件开发方法
需求变化少
开发人员熟悉应用领域
低风险项目
使用环境稳定
原型模型
快速弱功能,快速建立原型,完善用户需求
用户积极参与
适用范围
已有产品(原型)
简单而熟悉的领域
有快速原型开发工具
进行产品移植或升级
螺旋模型
降低风险
风险驱动
适用范围
庞大、复杂、高风险的系统
内部开发的大规模软件项目
增量模型
遵循递增方式来进行软件开发
任务或功能模块驱动,可以分阶段提交产品
适用范围
在整个项目开发过程中,需求都可能发生变化,客户接受分阶段交付
分析设计人员对应用领域不熟悉,难以一步到位
中等或高风险项目
用户可参与到整个软件开发过程中
使用面向对象语言或第四代语言
软件公司自己有较好的类库、构件库
迭代模型
喷泉模型
面向对象生命周期模型
迭代、无缝
软件管理
区别于其他工业产品的特点
知识密集,非实物性
单品生产,开发过程不确定
开发周期长
内容复杂,正确性难保证
劳动密集,自动化程度低
软件用法繁琐,维护困难,费用高
主要内容
开发计划与进度管理
规模
人员
交付日期-具体算法见ppt
成本管理
成本估算算法
行成本估算法
成本 = (源代码行数)LOC × 行平均成本
阶段成本估算法
阶段成本 = 阶段工作量×阶段平均成本
总成本 = ∑阶段成本
相似比较估算法
相似部分 —— 已有数据估算
不同部分 —— 其他方法估算
人员管理
高技术、高知识,个人作用突出
多层次 —— 合理配备各类人员
知识更新快
流动性大 —— 保持人员相对稳定,吸引优秀人才
组织管理
集中式 —— 易决断、易管理,难发挥多数人的积极性
非集中式 —— 发挥大家主观能动性、难管理
质量管理
软件生产
分阶段
规范化
合理分工
度量软件质量的标准
文档管理
文档分类
用户文档
系统文档
文档管理工具
传统软件开发方法
软件计划-3讲
问题定义
可行性研究
经济可行性
技术可行性
法律可行性
需求分析-4讲
结构化分析SA
面向数据流的分析方法
DFD的四个组成成分
表示方法
命名
DFD作图-需求描述到DFD
层次分解法(保持父图与其子图的平衡)
数据字典(符号)
软件设计-5讲
总体设计/概要设计
启发规则
模块独立性:高内聚、松耦合(类型)
作用域要属于控制域
单入单出
规模、深度、宽度、扇入、扇出适当
。。。
传统设计方法
面向数据流的设计方法
结构化设计SD
DFD到软件结构(层次图)
变换设计
事物设计
优点
缺点
面向数据结构的设计方法
Jackson方法
Jackson图
三种元素间的逻辑关系:顺序、选择、重复
可描述两种结构:数据结构、程序结构
思想:数据结构到程序处理过程
步骤:I/O DS到对应关系到Program Structure到细化求精
优缺点
数据入手
简化数据处理部分的设计
模块与独立性原则没有给予应有的重视
缺乏对复杂系统设计过程的支持
Parnas方法
详细设计
结构化程序设计SP
三种基本控制结构、单入单出
高效率——良结构
过程设计的工具
实现(编码)-10讲
软件测试-11讲
目标
方法
正确性证明
静态测试
动态测试
黑盒(功能)测试
等价类划分
边界值分析
错误检测
白盒(结构)测试
语句覆盖
判定覆盖
条件覆盖
判定-条件覆盖
条件组合覆盖
步骤
软件维护-12讲
四种类型
校正性(纠错性)
适应性
完善性
预防性
提高可维护性的措施
面向对象方法(Object Oriented Methodology)6、7、8、9
OOM与CM对比:区别——优点
思维方式
稳定性
可重用性
可维护性
大型软件
OOSE方法
三个阶段、五个模型
—需求分析—(RM&AM)—构造—(DM&IM)—测试—(TM)
???
0 条评论
下一页