信息系统生命周期(★)
软件开发模型(★★★★)
逆向工程(★★)
净室软件工程(★)
2014年上半年 软件的逆向工程及重构
2016年上半年 论软件开发模型及应用(论文)
2012年上半年 论敏捷开发在企业软件开发中的应用(论文)
2010年上半年 论快速应用开发在系统建模中的应用(论文)
企业全局,形成概念,需求分析
信息系统开发生命周期,包括总体规划,系统分析,系统设计,系统实施,系统验收
通过验收,移交以后
更新改造,功能扩展,报废重建
内容:初步调查,分析系统目标,子系统组成,拟实施方案,可行性研究,制定系统建设方案
成果物:系统设计任务书(系统建设方案,实施计划)
业务流程分析,数据与数据流程分析,软件需求分析,网络需求分析 系统需求规格说明书,软件需求规格说明书,确认测试计划,系统测试计划,初步的用户手册
内容:软件架构设计,软件概要设计,详细设计,网络设计
成果物:架构设计文档,概要设计说明书,详细设计说明书,程序规格说明书,概要测试计划,详细测试计划,各类设计图
内容:软件编码,软件单元集成系统测试,综合布线。
成果物:源码,单元测试报告,集成测试报告,操作手册
内容:确认测试,试运行 确认测试报告,项目验收报告
开发方法比开发模型要来得大一号。
结构化开发方法对应V模型和瀑布模型;面向对象开发方法对应喷泉模型,统一方法模型,敏捷模型,面向服务的模型。
所有面向服务的模型都是以面向对象为基础的。
螺旋模型既有原型,又有瀑布和迭代。它的特点就是把各个模型综合在一起,还有引入了风险分析。 需求在项目刚开始的时候往往会比较模糊,而随着项目的进行会慢慢的明确下来,也就是需求有渐进明细的特点。
螺旋模型是一种演进式的软件过程模型,结合了原型开发方法的瀑布模型的系统性和可控性特点。它有两个显著特点,一是采用循环的方式逐步加深系统定义和实现的深度,同时降低风险;二是确定一系列里程碑,确保项目开发过程中的相关利益者都支持可行的和令人满意的杀统解决方案。
螺旋模型将瀑布模型和快速原型模型结合起来,强调项目的风险分析,特别适合大型复杂系统的开发过程。螺旋模型沿着螺线进行若干次迭代,依次经历了计划指定、风险分析、工程实施和客户评估四个主要活动。
升级的项目或者案例题中清晰告诉我们需求明确,这样的项目合适使用瀑布模型。
原型模型比较适合需求不够明确的项目。原型又可以分为快速原型(抛弃式原型),还有一种是演化式模型。
V模型是瀑布模型的一种变种,是从瀑布模型中发展而来的,它在瀑布模型的基础上加强了测试。在V模型中需要提前作测试计划和做测试用例。让测试工作贯穿于始终。
喷泉模型最大特点就是面向对象,正因为如此,所以喷泉模型有迭代和无间隙的特点。
RAD:称为快速应用开发。
瀑布模型和CBSD(Component-Based Software Development基于构建的软件开发模型)的综合开发模型。它包括业务建模,数据建模,过程建模,应用生成,测试与交付。
构件模型:构件具有可复用的价值。需要建立构件库并反复使用构件库中的构件。构件也可以称作组件。
构件标准有三个:CORBA,COM/DCOM,EJB。
构件组装模型:需求分析和定义,软件架构设计,构件库建立,应用软件构建,测试和发布。其中构件库包括了构件获取和构件管理
在开发之初,用户对系统的功能并不了解,并且系统的功能会不断变更,针对这种情况,应该采用增量的开发模型。这是因为在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
统一软件开发过程是一种基于面向对象技术的软件开发过程。
其特点是用例驱动,以架构为核心,增量与迭代。
整个开发的过程是由用例来驱动的。用例贯穿于整个开发流程之中。用例是需求层面的东西,其实也可以理解为功能需求。用例不能决定架构,因为架构往往取决于非功能需求
统一软件开发过程定义了四种开发阶段,它们按照过程顺序分别是起始阶段,细化阶段,构建阶段和交付阶段,其中在构建阶段主要产生的文档有设计模型。
1.内容:
确定项目范围和边界
识别系统的关键用例
展示系统的候选架构
估计项目费用和时间
评估项目风险
2.成果物:
项目蓝图文档(核心需求,关键特征,主要约束)
用例模型,项目计划
分析系统问题领域
淘汰最高风险元素
完成架构设计
1.内容:
开发剩余构件
构件的组装与测试
2.成果物
UML模型,测试用例
1.内容
进行beta测试,制作发布版本
用户文档定稿,确认新系统
培训调整产品
2.成果物
可运行的软件产品,用户手册,用户支持计划。
1.净室即无尘室,洁净室,也就是一个受控污染级别的环境。
2.使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证而不是测试,作为发现和消除错误的主要机制。
3.使用统计的测试来获取认证被交付的软件的可靠性所必须的出错率信息。它是一种强调正确性的数学验证和软件可靠性的认证的软件工程模型,其目标和结果具有非常低的出错率。
软件的逆向工程是一个恢复设计的过程,从现有的程序中抽取数据,体系结构和过程设计信息。逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述,在大多数情况下,抽象层次越高,完备性就越低。
逆向工程从源代码或目标代码中提取设计信息,通常在原软件生命周期的软件维护阶段进行。
逆向工程的特点是从已有的程序中抽取数据结构,体系结构和程序设计信息。它的流程为:
现有系统—>逆向工程—>考虑新需求—>正向工程—>新系统
1.实现级
包括程序的抽象语法树,符号表,过程的设计表示
2.结构级
包括反映程序分量之间相互依赖关系的信息,例如调用图,结构图,程序和数据结构
3.功能级
包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
4.领域级
包括反映程序分量或程序诸实体与应用领域概念之间对应的关系信息,例如实体关系模型
基本原则 短平快的会议,小型版本发布,较少的文档,合作为重,客户直接参与,自动化测试
适应性计划调整,结对编程,测试驱动开发,持续集成,重构。
敏捷中的动态系统开发方法强调以业务为核心,快速而有效地进行系统开发。
自适应开发,极限编程,特征驱动开发,水晶方法
沟通,简单,反馈,勇气
快速反馈,简单性假设,逐步修改,提倡修改,优质工作。
简单设计,测试先行,重构,计划游戏,小型发布,隐喻,结对编程,集体代码所有制,持续集成,每周工作40小时,现场客户,编码标准。