本文为整理的软件工程概论相关知识点,以应对期末考试,方便同学们以及我自己使用
概论
软件工程基本常识
软件工程定义:软件工程将系统化的规范化的可度量的方法用于软件开发运行和维护的过程.
软件工程的本质:
大型软件产品的构造
控制软件的复杂性
提高软件的效率
开发过程中合作
满足用户需求
软件工程的目的:专业化的软件开发而不是个体编程
软件的定义:计算机程序和相关文档
基本的软件工程活动:软件描述,软件开发,软件验证,软件进化
好的软件产品的重要属性:
可维护性:不断进化以满足客户需求变化,这是软件产品最基本的特性
可依赖性:
安全性:
可用性:
有效性:内存利用高等(高并发 例如分布式开发 中间件 redis等)
软件工程技术的两个明显特点:
1.强调规范化
2.强调文档化
软件过程
过程:一个用来产生某种输出端活动,约束,资源的步骤序列,一组有序的任务
软件开发过程描述了软件产品从概念到实现、交付、使用和维护的整个过程,因此,有时把软件开发过程称为软件生命周期。
软件过程是产生一个软件系统的一系列活动
软件过程都必须具有如下四种基本活动
软件描述:定义功能和操作上的约束
软件设计和实现:必须生产符合描述的软件
软件有效性验证:软件必须得到有效性验证
软件进化:满足不断变化的客户需要
软件过程模型
瀑布模型
增量式开发
面向复用软件工程
1.瀑布模型
瀑布模型是最早使用的模型,就像瀑布一样一级一级,在下一个阶段开始前,前一个阶段必须完成
我们可以理解得到,我们在使用瀑布模型开发的时候,必须在开发之前就对所有活动进行计划和安排
所以瀑布模型是计划驱动的模型,并且开发过程当中明显是线性的
选择瀑布模型的条件:
开发时间内,需求不怎么变化(因为变化了就会打乱计划{计划驱动})
分析设计人员对应用领域较熟悉
低风险
用户使用环境相对稳定
2.增量模型
根据需求说明书,将系统按功能分解成多个子系统,开发的时候先开发子系统,经过设计,实现,集成,测试后交付使用
然后再开发其他子系统,开发完毕后再加入已有系统,让系统功能慢慢完善
尼玛的这不是java后端主流开发流程嘛
选择增量模型的条件:
整个开发过程中,需求变化比较多,客户烦人
分析设计人员对应用领域不熟悉(比如我这种没开发过商业项目的)
中高等风险项目
用户参与开发过程的项目(甲方指点江山系列)
软件公司自己有较好的类库(比如某ali)
面向复用工程这里就不写了 有兴趣的搜资料吧,我个人感觉没必要写 因为太简单
2.螺旋模型
螺旋模型最重要的一点就是,螺旋模型是由风险驱动的模型。从风险角度看待软件开发的过程,希望最小化以及控制风险。
上面的东西看完了,来看几道例题(均为学习通例题)