软件工程复习总结
一、软件工程学概述
1、软件危机的定义
软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重问题。主要包含如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件两方面问题。
2、软件工程的定义
软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
3、软件生命周期
(8个阶段)
问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。
4、模型图
瀑布模型图
快速原型模型图
增量模型图
螺旋模型图
喷泉模型图
5、课后练习
根据历史数据可以做出如下的假设 :
对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960)
存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位) 注意单位,这里是美分
如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字)
在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:
(1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?
(2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。
(1)
1、1985年对计算机存储容量的需求估计:M=4080e0.28(1985-1960)=4474263(字)
2、当字长为16位,存储器价格:P=0.048*0.72(1985-1974)*4474263=5789美元
(2)
如果每月有20个工作日,则每人每月可开发200条指令
需要工作量=4474263/200=22371(人/月)
程序员的月均工资是4000美元,开发出4474263条指令的成本是:
指令成本=22371*4000=89484000美元
(3)
1、需求估计M=4080e0.28(1995-1960)=73577679字
2、存储器价格P=0.003*32*0.72(1995-1974)*73577679=7127美元
3、工作量=73577679/600=122629(人/月)
成本=122629*6000=735776790美元
二、可行性研究
1、系统流程图的基本符号
2、系统符号
3、库存清单系统的系统流程图
4、数据流图的符号
5、成本估价的技术
代码行技术、任务分解技术、自动估计成本技术
6、课后练习题
课后练习2
系统流程图
数据流程图
课后练习4
系统模型图
数据流程图
课后练习5
三、需求分析
1、需求分析的定义
需求分析是软件定义时期的最后一个阶段,它的基本任务是准确回答“系统必须做什么”这个问题,即对目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确描述软件需求。
2、教学管理ER图
3、电话系统状态图
4、课后练习
课后练习4
课后练习5
课后练习6
五、总体设计
1、耦合
耦合的定义:
耦合是对一个软件结构内不同模块之间互连程度的度量。
耦合的分类:
完全独立、数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合
2、内聚
内聚的定义:
内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
内聚的分类:
a、低内聚 有偶然内聚、逻辑内聚、时间内聚
b、中内聚 有过程内聚、通信内聚
c、高内聚 有顺序内聚、功能内聚
3、软件层次图
给出软件层次图,求深度,宽度,扇入,扇出,控制域
4、信息流的两种类型的图
5、变换分析
给出图5-9 ,映射成图5-17的方法(数据流图---软件结构图)
给出图5-18的左图,画出右图(数据流图--软件结构图)
6、课后练习
六、详细设计
1、3种基本的控制结构
顺序结构、选择(分支)结构、循环结构
2、结构化程序的定义
3、行李收费问题的判定表和判定树
4、程序流程图映射成流图
5、PDL翻译成流图
(Program Design Language)(过程设计语言)伪码
6、环形复杂度的求法
7、Halstead方法度量程序的复杂度
8、课后练习
课后练习3
课后练习7
课后练习8
七、实现
1、单元测试
单元测试主要用到什么技术,测试重点有哪些?
单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行地进行,包括人工测试和计算机测试两种。
测试重点:模块接口、局部数据结构、重要的执行通路、出错处理通路、边界条件
2、渐增式测试的策略
3、逻辑覆盖
逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。
分为:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖
4、软件可靠性公式
之后整理
5、课后练习
课后练习4,6 ,8,9,10
九、面向对象方法学引论
1、主要画类图和用例图
图9-8----到-----图9-17
关联类示例
一个电梯控制器控制着四台电梯,每个连接都对应一个队列(对象),每个队列(对象)存储着来自控制器和电梯内部按钮请求服务信息。
共享聚集示例
组合聚集示例
抽象类示例
复杂类示例
多重继承示例
依赖关系示例
细化关系示例
自动售货机系统用例
扩展和使用关系用例
2、课后练习
十、面向对象分析
1、存储系统模型
2、自动售货机系统模型
十一、面向对象设计
1、面向对象设计的原则
模块化、抽象、信息隐藏、弱耦合、强内聚、可重用
2、设计继承类的例子
3、课后练习
十三、软件项目管理
1、代码行技术
2、功能点技术
3、Gantt
4、工程网络
5、课后习题
课后练习3:
(2)给出表13-5中1,2,3,4列的值,计算估计值
(3)给出表13-6种1,2,3,4,6列的值,计算估计值和UFP值
(4)根据前面数据计算
(5)根据前面数据计算
考试题目类型:
一、
计算题、画图题和简答题若干(都在上面的复习提纲中)。
二、画UML图(要复习下这四种图,这部分要详细画,分数才会高)
1.给出要求,画类图
2给出要求,画用例图
3.给出要求,画顺序图
4.给出要求,画活动图。
本文作者:王陸
本文链接:https://www.cnblogs.com/wkfvawl/p/13824298.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-10-16 操作系统——分区存储管理
2019-10-16 Java题库——Chapter12 异常处理和文本IO
2018-10-16 卡特兰数(Catalan)及其应用
2018-10-16 数据结构—堆排序