【软件工程】复习总结part1

1.1 软件的概念

  1. 计算机程序、方法、规则、相关的 文档资料以及在计算机上运行程序时所必需的数据。
  2. (1)能够完成预定功能和性能 的可执行的指令(计算机程序);
    (2)使得程序 能够适当地操作信息的数据结构;
    (3)描述程序的操作和使用的文档;

软件≠程序
软件 = 程序 + 数据 + 文档
程序:能够完成预定功能和性能的一组指令
数据:程序在执行过程需要输入、处理和输出的内容和结构
文档:描述程序的操作和使用的文档

软件的特点:

  1. 软件产品自身特点:
    • 抽象性
    • 无明显物理加工过程
    • 对计算机硬件依赖性
    • 知识产权保护困难
    • 软件本身的复杂性
    • 软件成本高(德国的3DMAX)
  2. 业界环境特点:
    • 开发和应用有交流困难、构件复用差
    • 人员流动大

软件产品的类型 :

  1. 基础软件(系统软件、数据库、中间件)
  2. 支撑软件 (编程工具 、建模工具 、版本 控制 、软件测试 )
  3. 应用软件 (桌面软件 、企业级软件 )
  4. 嵌入式软件

1.2 软件的发展与软件危机的产生

软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机产生的客观原因:
① 软件是逻辑产品,与物理产品加工有很大区别;
② 计算机发展迅速,软件需求规模庞大、数量增加、功能复杂;
③ 业务流程不断改造,需求不断变化,维护量增大;

软件危机产生的主观原因:
① 脱离工程化管理;
② 管理理念和方法的落后;
③ 开发人员逻辑思维的跟进不及时;
④ 延续使用个体化开发方法;
⑤ 轻视文档的作用和软件运行期的维护;
⑥ 缺少开发方法学指导;

解决软件需要解决2方面的问题:
• 如何开发软件,以满足不断增长、日趋复杂的需求;
• 如何维护数量不断膨胀的软件产品。

软件危机的表现:
① 软件开发进度难以预测、开发成本难以控制,导致超预算、超时;
② 产品功能难以满足用户需求;
③ 软件产品质量无法保证;
④ 软件缺少相应的文档资料,维护困难;
⑤ 软件成本超过硬件成本;
⑥ 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势;

1.3 解决软件危机的途径

用工程化的理论、方法和技术来管理软件开发过程,从管理和技术两方面措施对软件开发进 行规范化和理论研究。软件工程这个学科诞生了!

1.4 软件工程的定义

建立并使用完善的工程化原则,以较经济的手段获得能 在实际机器上有效运行的可靠软件的一系列方法
软件工程任何生产活动都要按照目标化、 规范化、文档化、标准化进行,这就是工程化。

1.5 软件工程的内容

软件工程三要素:过程、方法、工具

软件过程

2.1 软件过程概述

软件过程(Software Procedure): 是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软 件工程活动 。
软件过程是研究软件开发的方法论,规范软件开发的活动集合和活动顺序。
软件过程是软件工程活动的集合。

软件过程的活动集合和活动顺序贯穿了软件开发的方法论。即把软件工程分阶段、分层次、逐步细化、基线与里程碑 、阶段评审、变更管理、过程监控等基本原理贯穿在整个活动当中。
在活动的执行顺序上可以有循环、往复、重叠、迭代 、嵌套或者是有条件地引发,不一定都是线性顺序。
在活动的内容上是遵循自顶向下、层层分解、逐步抽 象与细化的思想。
在构建软件的结构上遵循模块分解原理,可以自顶向下,也可自底向上。
在阶段控制上的里程碑思想。
在软件的进化和变更管理上的基线思想。

2.2 软件过程与软件生存周期

软件过程:主要指软件产品的生产加工过程, 关注加工过程所具有的方法论、活动集合和活动的时间顺序。
软件生存周期:软件产品从定义到开发、使用和维护,直到最终被弃用的漫长的时期。
划分阶段的目的:简化每一步的工作内容,因为软件规模增长而带来的软件开发复杂性增大,而划分阶段能够较容易地管控软件开发过程。
生存周期:计划时期、开发时期、运行时期
在这里插入图片描述

  1. 问题定义:
    必须回答的问题:要解决的问题是什么?
    系统分析员应该提出 关于问题性质、工程目标和规模的书面报告
    通过访问调查,写出对问题的理解,并和用户及相关负责人认真讨论,得出最终的文档。
  2. 可行性研究:
    必须回答的问题:对上一阶段确定的问题有可行的解决办法吗?
    系统分析员需要进行压缩的系统分析和设计,也就是在抽象的高层次上进行。
    这一阶段应该比较简短,只是探索这个问题是否值得去解决,是否可能被解决。
    得到系统的高层逻辑模型(数据流图),更准确和具体地确定工程目标和规模,估计系统的成本和效益
    只有效益较大的项目才会被投资并继续下去,这一阶段后的阶段需要投入更大的人力物力,所以及时终止不值得投资的工程项目,才能避免更大的浪费。
  3. 需求分析:
    必须回答的问题:为了解决这个问题,目标系统必须做什么?
    系统分析员和用户密切配合,充分交流,得出一个完整合理的系统逻辑模型(用数据流图、数据字典、简要的算法表示)
    规格说明书记录下目标系统的需要
  4. 总体设计:
    必须回答的问题:如何解决问题?
    考虑几种可能的解决方案:低成本、中等成本、高成本的“完美”系统
    估计每种方案的成本和效益,权衡利弊,得出一个最佳方案,并制定详细计划
    设计软件结构,划分模块,确定模块间的关系(用层次图、结构图表示)
  5. 详细设计:
    必须回答的问题:如何具体地实现这个系统?
    具体化解决方案,设计出程序的详细规格说明(HIP图、OPDL语言描述),程序员可以据此写出代码。
    详细地设计每个模块,确定各个模块的算法和数据结构
  6. 编码和单元测试:
    写出正确的、容易理解的、容易维护的程序代码
    程序员选择合适的高级程序设计语言,编写出详细设计的模块,并仔细测试每个模块
  7. 综合测试:
    最基本的测试是集成测试和验收测试。
    用正式的文档资料把测试计划、详细测试方案以及实际测试 结果保存下来,做为软件配置的一个组成部分。
  8. 软件维护:
    使软件持久的满足用户的需要

软件过程 = 软件生存周期

2.3 软件过程与软件工程

软件过程 ≠ 软件工程,软件过程是软件工程的子集。
过程是生产加工的技术层面,工程是向过程要效 益的管理层面。

在这里插入图片描述

2.4 软件开发模型

模型名称特点优点缺点
瀑布模型顺序性、依赖性第三列文本居左需求分析是成败关键;
不适合需求模糊的系统;
很难适应需求变化;
原型模型直观、入手快,加快开发进度
演化(增量)模型灵活性高,和客户交互好
螺旋模型适合大规模项目
统一过程RUP
极限编程XP

第三章 软件计划

3.1 软件计划概述

软件计划是基本软件生命周期的第一阶段, 也就是孕育阶段

3.2 问题定义

3.3 可行性分析

可行性研究的目的:应确定问题是否有解、是否值得去解;
任务是从技术、经济、法律三个方面研究计算 机系统工程可能性;
这一阶段决策的失误将会给开发工作带来灾难性的影响。

第四章 软件需求基础

4.1 需求分析概述

需求工程包括:

1. 需求开发:

  • 问题获取:业务/用户/功能需求
  • 分析
  • 编写规格说明
  • 验证

2. 需求管理:

  • 变更控制
  • 版本控制
  • 需求跟踪
  • 需求状态跟踪

需求开发是技术范畴,需求管理是管理范畴。
软件开发是用户与开发者共同参与的过程
软件开发失败的原因大约超过50%是需求不合理而急于编程引起的;

4.2 需求获取

4.3 需求建模

4.4 需求说明

4.5 需求评审

先放个框架,不能懒不能懒,扶我起来,我还能整理

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值