信息系统的生命周期
四阶段划分法
五阶段划分法
系统规划
- 确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。
- 给出拟建系统的备选方案,写出可行性研究报告。
- 可行性研究报告审议通过后,将新系统建设方案及实施计划编写成系统设计任务书。
系统分析
系统分析阶段的任务是根据系统设计任务书所确定的范围,对现行系统进行详细调查,描述线性系统的业务流程,指出现行系统的局限和不足之处,确定新系统的基本目标和逻辑功能要求,提出新系统的逻辑模型。系统分析阶段的工作成果体现在系统说明书中,这是系统建设的必备文件。
系统设计
- 确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。
- 给出拟建系统的备选方案,写出可行性研究报告。
- 可行性研究报告审议通过后,将新系统建设方案及实施计划编写成系统设计任务书。
系统实施
系统实施阶段是将设计的系统付诸实施的阶段。这一阶段的任务包括计算机等设备的购置、安装和调试、程序的编写和调试、人员培训、数据文件转换、系统调试与转换等。这个阶段的特点是几个互相联系互相制约的任务同时展开。必须精心安排、合理组织。
系统运行和维护
系统投入运行后,需要经常进行维护和评价,记录系统运行的情况,根据一定的规则对系统进行必要的修改,评价系统的工作质量和经济效益。
生命周期模型与开发方法
结构化方法
- 结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。
- 结构化开发分为结构化分析、结构化设计、结构化程序设计。
- 结构化方法的主要原则有:”用户全程参与”、”先逻辑,后物理”、’”自顶向下”、”工作成果描述标准化”。
- 结构化方法主要应用有面向数据流的分析方法。
结构化开发方法对应的瀑布模型
原型法
- 一般来说,用户需求较难把握,因此可以使用”原型”来捕获用户的需求。原型法获取基本的需求,快速构建原型,通过用户试用、补充、修改,构成新系统。反复这一过程,形成最终系统。原型法用于解决需求不明确的情况。
- 原型还可以分为演化式原型和抛弃式原型。
( 1 )演化式原型:原型的构造从目标系统的部分基本需求出发,通过修改和完善功能的过程逐渐演化成最终的目标系统。
( 2 )抛弃式原型:在真正捕获用户的需求后就放弃不用的原型。
特点:① 缩短开发周期、成本和风险降低、速度加快,综合开发效益高。 ② 用户参与增加了满意度,提高了系统开发的成功率。
缺点:①开发环境高;②管理水平高
原型法对应原型模型
原型化模型是为弥补瀑布模型的不足而产生的。
原型化模型减少了瀑布模型中因为软件需求不明确而给开发工作带来的风险,因为在原型基础上的沟通更为直观,也为需求分析和定义,提供了新的方法。
对于复杂的大型软件,开发一个原型往往达不到要求,为减少开发风险,在瀑布模型和原型化模型的基础上的演进,出现了螺旋模型和以及大最使用的 RUP 。
面向对象方法
- 客观世界是由各种对象组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象类,是该对象类的一个元素。
- 面向对象方法:用对象表示客观事物,对象是一个严格模块化的实体,在系统开发中可被共享和重每引用,以达到复用的目的。
- 面向对象方法就是把面向对象思想应用到软件开发中,简称OO( Object Oriented )方法。该方法分为分析、设计、实现三个阶段。
面向对象开发方法对应喷泉模型
喷泉模型( Fountain Model )是一种以用户需求为动力,以对象为驱动的模型。该模型认为软件开发过程是自下而上的,周期中各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。
喷泉棋型没有特定阶段,各阶段可同步开发。喷泉棋型适用面向对象的软件开发方法。该模型给出了面向对象软件开发的框架,描述面向对象开发的两个主要特点:集成与测试阶段。
- 迭代性:每阶段都执行一次完整的串行过程,其中都包括不同比例的需求分析、设计、编码和测试等活动。各活动会重复多次,每次迭代将加入新功能。
- 连续性:分析、设计、编码等阶段没有明确的界限。
面向服务方法
- 面向服务的设计方法满足了信息系统快速响应需求与环境的变化,组织内部、组织之间各种应用的互相通信要求,提高了系统可复用性、信息资源共享和系统之间的互操作性。
- 面向服务架构( Service-Oriented Architecture , SOA ) SOA 是一种软件开发与设计的标准,使开发的软件也象网络的各层协议一样提供给客户完美的服务接口,减小因企业服务的改变而引起软件的改写,降低开发成本与开发人员的劳动强度。
- 典型的例子,如:计算机网络服务协议象 http 、 ftp 等就是基于 SOA 思想的设计和开发的。各层协议间提供透明的服务和接口,使各层协议间最大程度的降低藕合性。减小外界对各层的影响。
- SOA 就是以“服务”为基本元素来组建企业 IT 架构。在技术层面上, SOA 是一种“抽象的、松散藕合的粗粒度软件架构”;在业务层面上, SOA 的核心概念是“重用”和“互操作”,它将企业的 IT 资源整合成可操作的、基于标准的服务,使其能被重新组合和应用。
- 面向服务架构,从语义上说,它与面向过程、面向对象、面向组件一样,是一种软件组建及开发的方式。与以往的软件开发、架构模式一样, SOA 只是一种体系、一种思想,而不是某种具体的软件产品。
迭代模型
迭代模型的生命周期四个阶段:初始、细化、构造、移交,可进一步描述为周期( Cycle )、阶段 ( Phase )、迭代( lteration )。
核心工作流从技术角度描述迭代模型的静态组成部分,包括:业务建模、需求获取、分析与设计、实现、测试、部署,如图所示。
RUP模型
软件统一过程( RUP , Rational Unified Process )是一种“过程方法" ,它就是迭代模型的一种。依据时间顺序, RUP 生命周期分为四个阶段:
- 初始阶段( IncePtion ) :确定项目边界,关注业务与需求风险。
- 细化阶段( Elaboration ) :分析项目,构建软件结构、计划。该阶段应确保软件结构、需求、计划已经稳定;项目风险低,预期能完成项目;软件结构风险已经解决。
- 构建阶段( Constructin ) :构件与应用集成为产品,并通过详细测试。
- 交付阶段( Transition ) :确保最终用户可使用该软件。
*这 4 个阶段的顺序执行就形成了一个周期。
*每个阶段,从上到下完成一次迭代。
*根据需要,在一个阶段内部,可以完成一次到多次的迭代。
螺旋模型
将原型(原型法)实现的迭代特征与线性顺序(瀑布法)模型中控制的和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。
对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。
螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的系统。
V模型
V 模型的特点:
- 主要思想是开发和测试同等重要,左侧代表的是开发活动,而右侧代表的是测试活动。
- 针对每个开发阶段,都有一个测试级别与之相对应。
- 测试依旧是开发生命周期中的阶段,与瀑布模型不同的是,有多个测试级别与开发阶段对应。
- 适用于需求明确、需求变更不频繁的情形。
敏捷开发
- 敏捷开发模式是一种从 1990 年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。
- 强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
- 敏捷方法强调以人为本,专注于交付对客户有价值的软件。在高度协作的开发坏境中,使用迭代式的方式进行增量开发,经常使用反馈进行思考、反省和总结,不停地进行自我调整和完善。
- 敏捷不是某一种具体的方法,敏捷是一套价值观和原则。
- 典型的敏捷有: Scrum 、 XP 、 AgileUP 、 FDD 、 Crystal 、太极敏捷(Taiji ) ,等等。
软件工程
完整的需求工程如下:
- 需求提取:与用户交流后获取、修改需求。
- 需求分析:经过信息分析,描述信息,构建系统概念模型。需求分析结束后,软件需求规格说明、数据要求说明和初步的用户手册应该编写出来。
- 需求定义:依据需求提取与分析的工作,完成 《 需求规格说明书 》 ,精确定义需求。
- 需求验证:用户与开发者共同评审需求文档,达成共识后签字通过。这时 《 产品需求规格说明书 》 真正成为需求基线。
- 需求基线定义的是项目的产品范围,即项目产品应具备哪些功能和特性,包含功能需求和非功能需求。
质量功能部署( Quality Function Doployment , QFD )是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标, QFD 将软件需求分为三类,分别是常规需求、期望需求和意外需求。
软件需求说明书
软件需求说明书( SRS , Software Requirement Specifications )的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。软件需求说明书是软件开发、软件验收和软件管理的依据。
软件需求说明书中指出:客户需求就是项目要开发的是什么软件产品,该产品是干什么的。
需求分类
(软件需求可以分为功能需求、性能需求、外部接口需求(用户接口、硬件接口、软件接口、通信接口)、设计约束(标准、硬件限制)和质量属性(可移植性、正确性、可维护性及安全性)等几类。
软件工程中应用的几种图
系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、 Warnier 图、 IPO 图、层次图、 HIPO 图、结构图、程序流程图、盒图、 PAO 图、判定表、判定树、 Jackson 图、流图、甘特图、工程网络图
ER 图,即实体关系图,专用于数据库建模,即对于构建的数据库画出模型图。是古老的有生命力的描述方法。
DFD,数据流图,用于描述数据在系统中的流动方向及变化,便于开发人员把握数据的来龙去脉。
软件工程-架构设计软件架构
软件架构:软件总是有架构的。将软件系统划分成多个模块,明确各模块之间的相互作用,组合起来实现系统的全部特性,就是系统架构。软件架构属于高层设计,主要描述软件的结构和组织,即描述软件系统的草图。需求分配是软件架构设计师要完成的主要任务。软件架构设计和软件详细设计同属于软件设计不同阶段。
软件架构模式
- 管道/过滤器模式:其典型应用包括批处理系统。
- 面向对象模式:其典型应用是基于组件的软件开发 CBD。
- 事件驱动模式:其典型应用包括各种图形界面应用。
- 分层模式:其典型应用是分层通信协议,如ISO / OSI 的七层网络模型。
- 客户/服务器模式( Client / Server , C / S ) :为了解决 C/S 模式中客户端的问题,发展形成了浏览器/服务器 B / S 模式;为了解决 C / S 模式中服务器端的问题,发展形成了三层(多层) C / S 模式,即多层应用架构。
客户机/服务器(C/S)模式
C/S 模式由服务端、客户端组成,其中服务端负责数据处理,客户端负责用户交互。 C / S 模式强于数据操作和事务处理,但部署、维护成本高。
浏览器/服务器(B/S)模式
C 是 C/S 结构的改进结构,该方式的客户端是浏览器,解决了 C/S 模式中客户机负载过重的问题。 B/S 模式的主要事务逻辑在服务器端实现。对比 C/S 架构的信息系统,基于 B/S 架构更加容易部署和升级维护。
C/S 模式由服务端、客户端组成,其中服务端负责数据处理,客户端负责用户交互。 C/S 模式强于数据操作和事务处理,但部署、维护成本高。
- 软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用。也就是说,能否在不同的软件系统中,使用同一架构。基于这个目的,引出了软件架构的风格和类型问题。
- 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。
- 架构风格的最关键的四要素内容,即提供一个词汇表、定义一套配置规则、定义一套语义解释原则和定义对基于这种风格的系统所进行的分析。
通用架构风格的分类
- 数据流风格:批处理序列;管道/过滤器。
- 调用/返回风格:主程序/子程序;面向对象风格;层次结构。
- 独立构件风格:进程通信;事件系统。
- 虚拟机风格:解释器;基于规则的系统。
- 仓库风格:数据库系统;超文本系统;黑板系统。
OO, Object Oriented ,面向对象
OOA , Object Oriented Analysis ,面向对象的分析
OOD , Object Oriented Design ,面向对象的设计
OOP , Object Oiented Programming ,面向对象的编程
面向对象
面向对象(Obiect Oriented)是软件开发方法。面向对象的思想已经涉及到软件开发的各个方面,并且扩展到多个领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象基本概念
① 对象。对象是系统描述客观事物的封装,是构建系统的基本要素。对象由属性和操作组成,属性表示对象的数据特征,操作则用于改变对象的状态。对象可以是实物,也可以是抽象实物,如规则、事件。
② 类。类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述是一组对象的共同属性和行为。
类是对象的抽象,对象是类的实例。
对象是类的实例,类是对象的模板。
如果将对象比作房子,类就是房子的设计图纸。
③ 消息和方法。对象之间进行通信使用消息来实现。类中操作的实现过程叫做方法。
④ 软件复用。用已有软件构造新的软件,以缩减软件开发和维护的费用,称为软件复用。
⑤ 抽象。针对特定实例抽取共同特征的过程。
⑥ 接口。操作的规范说明,说明操作应该做什么( What )。
面向对象的三大主要特征
- 继承性。继承性用于子类共享父类的数据结构和方法。‘,容器是一个构件,构件不一定是容器;一个容器可以包含一个或多个构件,一个构件只能包含在一个容器中”。根据上述描述,容器类和构件类之间存在继承关系。
- 多态性。多态性是指相同的操作或函数、过程可作用于多种不同类型的对象上并获得不同的结果。
- 封装。封装是一种信息隐蔽技术,是指把数据及操作数据的相关方法组合在同一单元中,使我们可以把类作为软件复用中的基本单元,提高内聚度,降低祸合度。
原文链接:cyz
,