Atitit 软件工程概览attilax总结
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://blog.csdn.net/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