Atitit 软件工程概览attilax总结

1.1. .2 软件工程的发展

进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史。

表2 软件工程过程模型

表2将软件工程的主要过程模型做了一个简要的汇总,并将所有的软件工程模型划分为三大领域和五个阶段,三大领域分别为:

1) 惯例模型:瀑布模型,增量模型,演化过程模型和统一过程模型是其中的代表;

2) 敏捷过程模型:极限编程(XP)是其中的代表;

3) 新过程模型和研究领域:模型驱动开发和云计算是其中的代表;

而在五个关键性阶段中,链式原则贯穿始终。

1) 第一阶段:瀑布模型。软件的工业化和类生命性最终导致了瀑布模型的出现,瀑布模型构建了软件世界中一个最基本的生命周期理念。同时有趣的是,瀑布模型和大规模集成电路、结构化程序设计语言以及面向对象语言一起出现在1970年前后,耐人寻味;

2) 第二阶段:演化过程模型。如同生物的演化并非一蹴而就,成熟的软件也应是通过多个细小的生命循环周期迭代而成,演化过程模型的出现再次验证了软件所特有的类生命特征;

3) 第三阶段:统一过程阶段。 统一过程模型和CMM/CMMI的提出,反映了人类的一个基本需求,即在高速变化的环境中试图追求内部的相对稳定,这同时也标志着软件工程进入到相对成熟和稳定的阶段;

4) 第四阶段:惯例模型和敏捷过程模型并存阶段。敏捷过程反映了人类的另一个基本需求—随变顺变应变。当软件工程演化到这一阶段时,如同生物界和计算机世界演化一样,实际上已经开始显现种群化的特征;

5) 第五阶段:模型驱动和云计算阶段。模型驱动是为了满足软件工业自动化的需求,云计算则基于Internet,强调面向服务与计算资源整合。这两个概念提出已久,而真正启动才刚刚开始,距离成熟有待时日。但也进一步证明了软件工程开始进入种群化阶段。

需要指出的一点是,由于软件工程的发展遵循链式原则,软件工程的发展也总是滞后于软件的发展,通常是在软件的某项语言、技术或工具进入稳定期后,软件工程才会有相应新的思想出现。

例如,软件的高级语言在1954年已出现,而软件工程在1968年才刚刚提出;当软件进入结构化程序阶段时,瀑布模型刚刚显现;当软件面向对象技术逐渐成熟时,演化过程模型开始出现;当面向对象技术开始和网络紧密结合时,统一和敏捷过程才开始出现。

可以预见的是,未来软件发展和软件工程发展之间的间隔会逐步缩短,5-10年的滞后期有可缩短到2-3年。

1.1.1.  .2 从无性繁殖到有性繁殖

在2.1中可以看到,类似于生物界的演化,计算机世界在进入到种群化阶段后,下一个需要实现的重大突破是从无性繁殖到有性繁殖。

众所周知,在生命世界中,除病毒外,绝大部分都是由细胞组成的。而此类生物在进化过程中,存在两种截然不同的繁殖方式,无性繁殖和有性繁殖。

无性繁殖在进化的低级阶段产生,采用简单的分裂方式进行繁殖,产生的生命体相对稳定,进化以变异为基础进行,繁殖速度惊人。但对环境变化的适应能力较差。

有性繁殖在进化的高级阶段产生,有性繁殖使后代在性状上产生分离,实现后代性状的多样性变异,同时继承父母双发优良基因的后代获得更大的生存几率,对环境变化的适应性要远远优于无性繁殖。

再次透析软件与软件工程的发展,当软件进入到面向对象的阶段时,人类就已经利用“类”这个概念创造为软件创造出了一个最原始的细胞,软件大师们曾本能地尝试用单类继承和多类继承两种来构造软件的核心,不行的是,多类继承在稳定性上存在诸多无法解决的问题,最终单类继承加接口的方式占据了主流。

结合3.1基本可以认定,目前的软件体系仍处于无性繁殖向有性繁殖过渡的初始阶段。软件体系的变异主要采用重构或接口或服务的方式实现。而在未来,要想实现生命世界的”适者生存”式的变异和自我进化,对于软件的最基本单元“类”,也许最佳的模式既不是单类继承,也非多类继承,而是一父一母的双类继承,同时变异时采取类似人类染色体似的变异法则,只允许同种群间的单个或极少部分染色体结合发生变异,这样既保证了一定程度的稳定性,又提供了更优良的变异,如此才能让计算机及其软件真正实现生命世界高级阶段的有性繁殖。

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

软件工程

第1章 概述

第2章 软件过程

第3章 敏捷软件开发

第4章 需求工程

第5章 系统建模

第6章 体系结构设计

第7章 设计与实现

第8章 软件测试

第9章 软件进化

软件工程导论(第6版)(

第1章软件工程学概述1

习题132第2章可行性研究35

习题253第3章需求分析55

习题373第4章形式化说明技术75

习题489第5章总体设计91

习题5114第6章 详细设计117

习题6140第7章 实现145

习题7183第8章 维护189

习题8201第9章面向对象方法学引论203

习题9229第10章面向对象分析231

习题10256第11章面向对象设计259

习题11288第12章面向对象实现289

习题12304第13章软件项目管理305

 软件过程

2.1 软件过程模型

2.1.1 瀑布模型

2.1.2 增量式开发

2.1.3 面向复用的软件工程

2.2 过程活动

2.2.1 软件描述

2.2.2 软件设计和实现

2.2.3 软件有效性验证

2.2.4 软件进化

2.3 应对变更

2.3.1 原型构造

2.3.2 增量式交付

2.3.3 Boehm的螺旋模型

2.4 Rational统一过程

  需求工程

4.1 功能需求和非功能需求

4.1.1 功能需求

4.1.2 非功能需求

4.2 软件需求文档

4.3 需求描述

4.3.1 自然语言描述

4.3.2 结构化描述

4.4 需求工程过程

4.5 需求导出和分析

4.5.1 需求发现

4.5.2 采访

4.5.3 脚本

4.5.4 用例

4.5.5 深入实际

4.6 需求有效性验证

4.7 需求管理

4.7.1 需求管理规划

4.7.2 需求变更管理

1.2. 第四次工业革命 信息革命

1.3. 软件工程思想系列书籍

【20】 “人件”(Peopleware : Productive Projects and Teams, 2nd Ed.)

【21】 “人件集 —— 人性化的软件开发”( The Peopleware Papers: Notes on the Human Side of Software)

【22】 “人月神话”(The Mythical Man-Month)

【23】 “软件工程 — 实践者的研究方法(原书第5版)”(Software Engineering: A Practitioner's Approach, Fifth Edition)

【24】 “敏捷软件开发-原则、模式与实践”(Agile Software Development: Principles, Patterns, and Practices)

【25】 “规划极限编程”( Planning Extreme Programming)

1.4. 【27】 “统一软件开发过程”(The Unified Software Development Process)

1.5. 项目文档

类数量度量,方法数量度量

代码行数统计

类与方法命名 单词 统计 度量

Patch打包工具

Class搜索在dir中的jar文件。。

类似于Findbugs 可扩展检查工具

核心class生成检查工具(制定核心package目录)。。非核心的可以不生成,有err

扫描源码,列出需要的jar包 ,缺失的jar包

项目每日备份工具(包括代码,数据库)

开发工具启动器

Atiend attilaxend

Atitit 软件工程概览attilax总结的更多相关文章

  1. Atitit 乌合之众读后感attilax总结 与读后感结构规范总结

    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结 1. 背景概览与鸟瞰overview 1 1.1. 社会背景 与 历史事件背景  与历史时间背景 1 1.2. 书籍简绍 2 1. ...

  2. Atitit 2016年attilax事业成就表

    Atitit 2016年attilax事业成就表 1.1. 项目管理模型---Rem模型2 1.2. 项目管理模型---vsi模型val specs implt3 1.3. 研发体系完善(gui与游戏 ...

  3. Atitit MATLAB 图像处理attilax总结

    Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...

  4. Atitit 边缘检测原理attilax总结

    Atitit 边缘检测原理attilax总结 1. 边缘检测的概念1 1.1. 边缘检测的用途1 2. 边缘检测方法分类1 3. 边缘检测的基本方法2 3.1. Roberts边缘检测算子2 3.2. ...

  5. Atitit 理解Monad attilax总结

    Atitit 理解Monad attilax总结 但函数式编程最大的一个问题是,函数是一个数学抽象,在现实世界中不存在,1 那既然这样就够用了,还要 Monad 干嘛?Monad 的作用在这里就体现出 ...

  6. Atitit 华为基本法 attilax读后感

    Atitit 华为基本法 attilax读后感 “精神对物质的比重是三比一” 认可拿破仑的这句格言 在20多年中国商业和企业史上,一个最基本.也是最大的现象就是,为什么"中国制造" ...

  7. Atitit phpstorm配置attilax总结

    Atitit phpstorm配置attilax总结 1. 前期准备 1 1.1. 配置interpreter 1 1.2. debug需要xdebug的支持,不管是script模式还是web模式 3 ...

  8. Atitit 转移特效attilax总结

    Atitit 转移特效attilax总结 总结一般从按钮,转移到大点的方框上回比较好看点.. <!--jq ui--> <style type="text/css" ...

  9. Atitit 路径规划法attilax总结 扫描线路法

    Atitit 路径规划法attilax总结 扫描线路法 2017/2/8 20:43:37[吐槽]深圳-小 2017/2/8 20:43:37 群主做什么的2017/2/10 10:03:15系统消  ...

随机推荐

  1. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  2. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  3. C# 破解 Reflector8.5

    一.分析 破解.net .dll,可以使用reflector,但官方提供的reflector是需要购买的,因此,破解reflector势在必行. 二.破解Reflector具体步骤 下面为详细的破解步 ...

  4. ExtJS 4.2 Date组件扩展:添加清除按钮

    ExtJS中除了提供丰富的组件外,我们还可以扩展他的组件. 在这里,我们将在Date日期组件上添加一个[清除]按钮,用于此组件已选中值的清除. 目录 1. Date组件介绍 2. 主要代码说明 3. ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  6. 有趣的 CSS 像素艺术

    原文地址:https://css-tricks.com/fun-times-css-pixel-art/#article-header-id-4 译者:nzbin 友情提示:由于国内网络的原因,Cod ...

  7. 12、Struts2表单重复提交

    什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...

  8. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  9. setCapture、releasCapture 浅析

    1. setCapture 简介 setCapture可以将鼠标事件锁定在指定的元素上,当元素捕获了鼠标事件后,该事件只能作用在当前元素上. 以下情况会导致事件锁定失败: 当窗口失去焦点时,锁定的事件 ...

  10. Linux课堂笔记(一)

    一.Linux应用领域及版本介绍. 1.服务器.嵌入式.桌面应用等. (1)在服务器领域中,需要安全和稳定,特别是越老的内核版本越安全.越稳定. (2)Linux主要分内核版和发行版. 内核版本2.6 ...