软件工程学习(一)

知识要点:

1)软件危机的概念、原因以及消除途径;

2)软件工程基本概念、基本原理、方法学;软件生命周期,主要软件过程的特点。

软件危机的定义:(自己理解即可,定义不唯一):指软件的开发和维护过程中所遇到的一系列严重问题;

软件危机产生原因:(比较开放)

1、用户需求不明确; 2、缺乏科学理论作为指导; 3、软件开发规模越来越大;

4、软件产品的复杂程度越来越高;5、缺少适时地文档资料;and so on(问题不唯一)

软件危机的消除途径:(从管理和技术两方面消除软件危机)

1、彻底清除在计算机早期发展阶段形成的“软件就是程序”的观念,认识到软件是程序、数据相关文档的完整集合;

2、认识到软件开发不是个体劳动,而是一种组织良好、管理严密、各类人员分工配合的,共同完成的工程项目;

3、吸取和借鉴人类长期以来从事各种工程项目而积累的有效地概念、原理、技术和方法,特别要吸取在该过程中的经验教训。

4、推广和使用在实践中总结出来的开发软件成功的技术和方法,探索更好的、更有效的技术和方法,尽快消除在计算机系统

早期发展阶段形成的错误概念和方法;

5、开发和使用更好的软件工具(把软件工程各个阶段所使用的软件工具有机地集合成一个整体,形成能够连续支持软件开发

和维护全过程的软件支撑环境);

软件工程的定义:软件工程是指导软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把

经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。 

软件工程的基本原理:(七句话)

1、用分阶段的生命周期计划严格管理; 2、坚持进行阶段评审; 3、实行严格的产品控制;

4、采用现代化程序设计技术; 5、结果能够清楚地审查; 6、开发小组的人员应该少而精;

7、承认不断改进软件工程实践的必要性;

软件的声明周期:由软件定义、软件开发和运行维护三部分构成;

软件定义:确定软件开发过程中的总目标以及工程的可行性;导出实现工程目标所采用的策略及系统必须完成那些功能;估计

工程所需要的资源以及成本并制定工程进度表(包含以下三个阶段:问题定义、可行性研究需求分析

软件开发:具体设计和实现前一阶段所定义的软件;(包含以下四个阶段:概要设计、详细设计、编码、测试,前两个阶段

称为系统设计后两个阶段称为系统实现)

运行维护:使软件持久地满足用户需要;

主要软件过程及其特点:

瀑布模型:1、阶段间具有和依赖性;2、推迟实现;3、质量保证;

解释:1、必须等前一阶段工作完成后才能开始后一阶段的工作,而且前一阶段的输出文档就是后一阶段的输入文档;

2、在编码之前设置了系统分析和系统设计的各个阶段,区分逻辑设计和物理设计,尽可能的推迟程序的33物理实现;

3、每个阶段必须完成规定的文档且在每一个阶段结束前都要对规定文档进行阶段评审,以尽早的发现问题、改正错误;

缺点:瀑布模型是由文档驱动的,在产品开发过程中用户只能通过文档了解软件,最终开发出的软件难以满足用户需求;

(注:瀑布模型是带有反馈环的【图中虚线】,每一阶段出现错误都要回溯到上一阶段找寻错误原因) 

例子:做一道题目我们总是先读题(计划)——思考(分析与设计)——计算(编码)——检查(测试)——结果

快速原型模型:快速建立起来可以在计算机上运行的程序,它所能完成的功能往往是最终产品的一个子集,快速原型模型

不带有反馈环的(优点),产品开发基本上是线性进行的;

原型系统通过与用户交互而得到验证,所得到的需求规格说明书真正满足用户需求;

及时更新之前的原型系统,在后续的设计和编码阶段发生错误的可能性也较小;

例子:写一个排序算法起初人工排序——插入排序(冒泡排序)——快排(堆排),逐步优化排序算法; 

一遍又一遍的调试代码直到AC;

增量模型:把软件产品作为一系列的增量构建来设计、编码、集成、测试,每一个构件是由多个相互作用的模块构成

并且可以完成特定功(即逐步实现软件功能并不是一次性完成用户所有用户需求);

特点:能在较短时间内向用户提交可以完成一些有用工作的产品,逐步增加产品功能使得用户有充裕的时间学习和适应新产品;

(注:第一个构件往往实现软件的最基本功能,提供最核心的功能) 

例子:制作一个计算器,首先 设计一个整体界面(显示功能),在此基础上逐步在此界面上完成相关的加减乘除功能;

螺旋模型:采用风险驱动,使用原型及其他方法尽量降低风险,在每一个阶段之前都添加了风险分析的快速原型模型;

优点:1、对可选方案和约束条件的强调有利于已有软件的重用 ;2、有助于把软件质量作为软件开发的一个重要指标;

3、减少了测试次数和测试不足所带来的风险;

(注:每个阶段开始从第2象限开始,开始之后要进行风险分析,对于每一个开发过程(第4象限)又类似于瀑布模型,旋转线的角度值代表开发进度,旋线长度代表累计开发费用) 

喷泉模型:具有迭代(求精)无缝的特性;

(注:为了避免喷泉模型在开发过程中过分无序,应该把一个线性过程【如快速原型模型或螺旋模型】作为一个总目标)

(注:不同的圆圈代表不同的阶段,图中一个阶段内向下的箭头代表迭代或求精,较小的圆圈代表维护,中垂线代表某一个

线性过程,) 

Rational统一过程:(9个核心工作流,前6个为核心过程工作流,后3个位核心支持工作流)

核心过程工作流:业务建模、需求、分析与设计、实现、测试、部署;

核心支持工作流:配置和变更管理、项目管理、环境;

工作阶段:先启阶段、精化阶段、构建阶段、移交阶段;

对于Rational统一过程即适用于不同规模和不同复杂度的项目,也适用于不同的开发环境和领域;(即适用范围广)

敏捷过程与极限编程:可以快速、敏捷的响应变化和不确定的需求的同时仍然能够保持持续的开发速度;

发布了79 篇原创文章 · 获赞 81 · 访问量 5745

猜你喜欢

转载自blog.csdn.net/weixin_44638960/article/details/101427810