信息系统分析与设计 第三章 信息系统建设概论


信息系统建设是复杂的社会过程
信息系统的复杂性体现在:
技术手段复杂
内容复杂,目标多样
投资密度大,效益难以计算
环境复杂多变

信息系统开发是一个社会过程
问题描述和方案验证不同于一般技术工程
技术工程问题明确,可以模拟,或制作实物模型、样品进行验证,信息系统的问题确定性差,难以提前验证解决方案。
人的影响
信息系统是人机系统,有来自于人的障碍。如了解、沟通、实施困难。
社会环境的影响
如政策、竞争、文化观念等对信息系统影响力很大,不同于纯技术工程。

信息系统建设的一般方法

早期,人们对信息系统的复杂性缺乏足够的认识,认为信息系统无非是“大程序”,缺乏科学的开发方法:
目标含糊
通信误解
步骤混乱
缺乏管理控制

系统方法的应用
系统科学方法为人们提供了新的思维模式,是研究复杂系统的有效工具。
钱学森曾指出“系统工程是组织管理系统的规划、研究、制造、试验和使用的科学方法,使一种对所有系统都具有普遍意义的方法”。
系统方法在信息系统建设中的应用:
还原论与整体论相结合
微观分析与宏观综合相结合
定性判断与定量计算相结合
严格生命周期阶段与反复迭代相结合

系统建模/模型化
分析研究复杂系统问题,建模是一种基本手段。
建模(modeling)就是为描述系统的构成和行为,对现实系统的各种因素进行适当筛选,用一定方式(数学公式、符号、图形、图像等)表示现实系统的过程。
建模也称模型化。

系统模型的概念
系统模型是指以某种确定的形式(如文字、符号、图表、实物、数学公式等),对系统某一方面本质属性的描述。
一个适用的系统模型应该具有如下3个特征:
它是现实系统的抽象或模仿;
它是由反映系统本质或特征的主要因素(要素)构成的;
它集中体现了这些主要因素之间的关系。
根据抽象程度:概念模型、逻辑模型和物理模型。
根据对时间的依赖:静态模型和动态模型。
全面彻底地描述一个系统,通常需要使用多个模型。

管理系统模型
管理模型描述组织的状况,包括:
组织的静态特征,如组织结构图、实体关系图
动态特征,如任务分解图、状态转换图、甘特图、PERT图
业务流程,如流程图
业务规则,如决策树、决策表
在这里插入图片描述
信息系统模型
信息系统模型描述计算机信息系统的状况。
每种模型都有其标准符号、惯例、语法规则和用途,当这一组符号和规则形成了一套完整严谨的表示语言,就形成建模语言。
因为信息系统是为管理服务的,因此有些模型在管理系统和信息系统中通用,如流程图、状态图 、决策树/决策表等。
在这里插入图片描述
建立信息系统模型有以下主要作用:
对复杂问题进行简化描述,帮助有关人员快速、简单直观、准确地了解系统;
建模的过程使得分析师和设计师能更全面地研究系统,深思熟虑,减少遗漏,以形成更成熟的方案;
各阶段产生的模型为后续阶段的有关人员提供了工作依据;
为项目各类人员提供了统一的交流工具,利于沟通和团队合作;
为项目验收和将来的维护工作提供了文档依据;
利用工具将模型映射为特定平台的可执行代码(MDD,Model-Driven Development),减少开发人员工作量。

统一建模语言UML
统一建模语言UML(unified modeling language)是由单一元模型支持的一组图示法。这些图示法有助于表达与设计软件系统,特别是采用面向对象方法构造的软件系统。
UML通过不同的图来描述系统的结构(structure)、行为(behavior)、交互过程(interaction)。
UML 2.2中一共定义了14种图(diagram):
系统结构:类图、对象图、包图、构件图、部署图等
系统行为:活动图、状态图、用例图
交互过程:通信图、顺序图、计时图等

信息系统的生命周期

信息系统开发围绕信息系统生命周期来进行,有时也称系统开发生命周期(SDLC,System Development Life Cycle),体现系统工程的思想。
包含5个阶段:
规划、分析、设计、实施、运维

生命周期的阶段
在这里插入图片描述
各阶段任务
系统规划
确定信息系统的发展规划;企业业务流程的识别、改革与创新;对建设新系统的需求作出初步研究,确定信息系统的总体结构;确定系统的备选方案,对这些方案进行可行性分析
系统分析
详细调查,确定系统的基本目标和逻辑功能要求
系统设计
根据系统说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案
系统实施
计算机等设备的购置、安装和调试;编写、调试和测试程序;人员培训;数据准备或转换;系统调试与转换
系统维护
运行情况的记录;必要的修改;评价和总结等

信息系统开发方法
信息系统的开发方法从两个维度分类:
开发过程(霍尔三维结构的时间维度)
-信息系统开发过程可以根据特点按照系统工程阶段和步骤有变种,也称为不同的生存周期模型。
-方法将包含整个开发的步骤,每个步骤的任务,由什么人完成,任务的成果如何体现等内容。
开发技术及模型(知识维度和逻辑维度)
-不同的建模方法,从不同的观点来反映系统的全貌,运用学科知识和技术手段予以实现(主要是由信息技术推动的方法论体系)。

基于生命周期的开发方法

开发过程的研究和经验的总结:
瀑布开发方法
原型开发方法
迭代开发方法
螺旋开发方法
敏捷开发方法……

瀑布开发方法
在这里插入图片描述
强调阶段的划分和阶段严格的顺序
各阶段工作任务明确,要求文档完备性
是一种严格线性的按阶段顺序的、逐步细化的开发模式,消除了软件开发的随意性

瀑布方法的特点
简单易用,容易理解
开发的进程一个顺着一个,没有反馈过程,需要严密控制
允许基线和配置早期接收控制
一个新的项目不适合这个模型
用户直到项目结束才能看到质量如何
不允许或者严格限制变更

瀑布方法的不足
需求:客户常常难以表达真正的需求,而这种模型却要求严格的阶段性成果,返工困难,变更代价很大
风险:客户要等到开发周期的晚期才能看到程序运行的测试版本,这时若发现大的错误,可能引起客户的惊慌,其后果也可能是灾难性的
效率:因为前后任务的依赖关系,成员不能并行工作,有可能花在等待的时间比开发的时间要长,即所谓的“堵塞状态”

适用于一些需求已明确并且变化较少的信息系统

原型开发方法
原型——快速建立起来的可以在计算机上运行的程序,通常选取信息系统中某个关键功能作为原型。
在这里插入图片描述
原型方法的特点和应用场合
用户积极参与
原型的开发没有严密的阶段性
短期获得测试版本,降低风险

应用于以下场合:
需求含糊,用户不能标识出详细的输入、处理和输出需求
设计方案不明确,开发人员不能确定算法的有效性、操作系统的适应性或人机交互的有效性

原型方法的不足
降低风险的同时,引入了其他风险:
用户随意无止境的需求变化,因为用户容易产生误解,认为系统很容易被构造和修改

如果采用原型基础上继续构造,由于修补过度,软件质量不易于保证

开发人员为了快速构造原型,可能会采用不合适的操作系统、语言、算法等,造成后期风险,如系统适应性差、维护困难等

迭代开发方法
一条直线一次性到达目的总是困难的。
紧迫的市场期限和快速变化使得难以一次性完成整个软件产品,解决方法是先提交一个有限的版本,细节部分逐步增加,即多次迭代后完成系统。融合了瀑布方法和原型方法。
整个开发工作被组织为一系列的短小的、固定长度的小项目,被称为一系列的迭代。
有两种迭代:
迭代增量:迭代周期完成一个增量,然后集成
迭代进化:迭代周期内包含演化和完善

迭代方法(增量)的特点
在这里插入图片描述

以功能递增的方式进行软件开发(可并行化)
能较快地产生可操作的系统
在每一步递增中,都可以把用户/开发者的经验结合到不断求精的下一个增量中
可改善测试效果和降低软件开发总成本。
这个过程好比搭积木。

增量方法的应用场合
项目开始,明确了需求的大部分,但是需求可能会发生变化
对于市场和用户把握不是很准,需要逐步了解
对于有庞大和复杂功能的系统进行功能改进,本身就需要一步一步实施的。

迭代方法(进化)的特点
进化迭代与增量迭代的区别是在每个迭代周期是对上一次迭代的演化和完善。
比如可以将一个软件功能的编程划分了多个迭代周期,每个迭代是对该功能的补充和进化。
这个过程好比滚雪球。

螺旋开发方法
螺旋方法——把软件开发过程定义成不断上升的螺旋周期,每个周期划分为计划、风险分析、实施和评价四个方面。沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。
这里的原型不是用于验证的原型系统,而是最终要交付的成品系统。
在这里插入图片描述
螺旋方法的特点和应用场合
风险驱动,可以在生命周期早期强制性的确定项目中存在的风险
需要开发人员具有相当丰富的风险评估经验和专门知识
要求用户参与阶段评价,对用户要求较高

适用于:
单位内部开发的大规模软件项目
风险是项目的主要制约因素
可能会发生重大变更
采用新技术

敏捷开发方法
敏捷过程(agile process)是一系列轻量的过程模型的总称,致力于在无过程和过于繁琐的过程中达到一种平衡,强调对需求变化的敏捷响应,以不多的步骤过程获取满意的结果。
敏捷软件开发宣言:
-1.个体和交互胜过过程和工具
-2.可以工作的软件胜过面面惧到的文档
-3.客户合作胜过合同谈判
-4.响应变化胜过遵循变化
-虽然右项也有价值,但我们认为左项具有更大的价值。
基于迭代开发方法探索出的成功实践。

基于开发技术的开发方法

信息系统通常十分复杂,通常会借助于模型对它进行研究、认识、描述和设计。
本节从模型化的角度探讨信息系统不同开发方法的形成和各自特点。

信息系统包含硬件、软件、信息等组成要素。
但其中软件系统的状态比硬件系统的状态往往要多若干数量级,只有找到控制和降低软件复杂性的方法,才能根本地控制和降低信息系统复杂性。
人们不断研究新的软件开发技术,试图缩小计算机世界和现实世界之间的鸿沟,从而让管理模型与信息处理模型有更高的一致性,易于转换和实现。

优秀的软件结构应具有以下特性:
能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求;
易于理解,方便开发人员之间、开发人员与用户之间交换意见;
易于更改,当应用环境和应用要求改变时,能容易地对系统进行修改和扩充;
易于向计算机支持的数据结构转换。
软件结构从简单到复杂,走过了从机器指令、语句、模块封装到类封装、再到构件和服务封装的历史发展过程,不同的开发技术和软件结构催生了不同的开发方法。

软件结构设计的基本原则
抽象第一:
抽象是人类认识世界的基本法则之一。对实际的事物进行处理,抽取所关心的、共同的、本质特征的属性,并对这些事物及其特征属性进行描述。由于抽取的是共同的、本质特征的属性,从而大大降低了系统元素的绝对数量。
层次划分:
复杂系统可以先分解为子系统,逐层分解。分解的每个子集互不相交,能使注意力集中与某个子集内部及与其他子集的联系。层次和每层子集的数目为短时记忆最大容量7±2的范围之内。
模型化:
提出以模型代替真实系统进行模拟实验,达到认识真实系统特性和规律性的方法。

基于软件技术的开发方法:
结构化开发方法
面向对象开发方法
面向服务开发方法

结构化开发方法
结构化方法论(Structured Methodology)是计算学科的一种典型的系统开发方法论。
它采用了系统科学的思想方法,从层次的角度,自顶向下地分析和设计系统,即抽象与分解。
系统可用高级的抽象概念来理解和构造, 这些高级的抽象概念又可用较低级的抽象概念来理解和构造,如此进行下去,直到最低层次的模块可以表示成某种程序设计语言的语句为止。
也称为 面向功能/面向过程/面向数据流 的软件开发方法
结构化方法包括结构化分析(Structured Analysis,简称SA)、结构化设计(Structured Design,简称SD)和结构化程序设计(Structured Program,简称SP)三部分内容:
结构化分析(SA)对软件进行需求分析,以数据流图表示
结构化设计(SD)进行总体设计,以结构图表示
结构化编程(SP),以程序流程图表示

面向对象开发方法
面向对象(object-oriented)方法具有很强的类和对象的概念,因此它就能很自然地直观地模拟人类认识客观世界的方式,包括:
客观世界的任何事物都是对象(object)。它们都有一些静态特征和有关行为。
对象之间有抽象与具体、群体与个体、整体与部分等几种关系,这些关系构成对象的网络结构。
抽象的对象所具有的性质,自然地成为具体对象的性质,而不必说明(继承性,inheritance)。
对象之间可以互送消息(message),通过消息进行交互和协作。

面向对象方法举例
比如:
汽车作为一个对象,有排量、颜色、行驶里程等数据,有启动、行驶、停止、熄火等行为,驾驶员的点火事件可以触发汽车的启动操作,踩下油门事件会触发汽车行驶,行驶行为将造成行驶里程发生改变。
在计算机赛车游戏里,面向对象程序设计可以将汽车设计为一个软件对象(class)。

面向服务开发方法
将应用程序的不同功能单元 定义为服务(service),通过服务间定义良好的接口和契约(contract)联系起来。
面向服务是从业务角度出发考虑问题的,服务是可以独立封装的业务功能组件,提升了模型的抽象层次,它继承并加强了结构化和面向对象方法的通用软件结构设计思想,还增添了一些其他的主题,例如服务编排、服务库和服务总线中间件模式。

面向服务的体系结构(Service-Oriented Architecture,SOA)以服务为软件组成要素,服务对外定义良好的接口和契约,独立于实现服务的硬件平台、操作系统和编程语言。
从概念上讲,SOA中有三个主要的抽象级别元素:
操作:代表单个逻辑工作单元的事务。执行操作通常完成数据的存取和加工。与类的一个方法类似。
服务:代表操作的逻辑分组。例如,如果我们将客户信用视为服务,则按照客户名称获得客户信用数据、建立信用记录、更新客户信用等就代表相关的操作。
业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。例如:批准一项贷款、本科生转专业、完成订单等。业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。

不同方法的比较
结构化方法
容易理解和交流,对于大系统可以从全局逐步展开到局部,整体性较好。
结构化方法是其他系统开发方法(如面向对象方法)的基础。
面向对象
稳定可靠,有利于维护和重用,并容易实现多层分布式结构,但对前期分析设计人员要求较高,用户理解模型有困难。
面向服务
松耦合、自描述、可重用、开放标准。以XML为基础,将已有的服务进行重新组合后可以快速建立新的业务流程,要求分析有较强的业务流程的抽象能力。
以结构化方法和面向对象方法为基础。

两类方法的关系
建模方法不限定使用于特定的过程方法中
比如面向对象方法既可以使用在瀑布方法中,也可以用在螺旋方法中
开发过程的各时期可以使用不同的建模方法(但不提倡)
要注意不同方法不同模型的衔接

信息系统开发的组织管理

信息系统建设要执行有计划的管理:
1、信息系统发展的诺兰模型
2、建立信息系统的基础条件
3、信息系统建设的相关人员
4、做好准备工作
5、选择开发方式
6、开展项目管理

信息系统遵循从初级到成熟的发展规律(诺兰模型),要根据企业的信息系统发展现状制定开发策略
在这里插入图片描述
诺兰模型的经验总结:模型中的各个阶段是不能跳跃的,“欲速则不达”。

建立信息系统的基础条件:
领导重视,业务人员积极性高
有一定的科学管理基础
由不同层次人员组成的技术队伍
具备必要的资源

系统开发的准备工作
有效的组织机构
各类人员的配备和分工
在这里插入图片描述
信息系统建设中可能有以下技术人员:
在这里插入图片描述
系统建设的不同阶段对人员的需求不断变化:
在这里插入图片描述
选择开发方式
根据资源情况选择适合的开发方式:
自行开发
委托开发
联合开发
购买现成软件产品
购买服务(SaaS/PaaS/云计算)

信息系统的项目管理
信息系统项目遵循项目管理的一般理论和方法,但也存在自身的特点,管理内容包括:
进度管理
成本估算和经费管理
质量管理
文档管理
人员管理
其它:需求管理、风险管理、软件配置管理

信息系统开发工具指在系统开发生命周期各个阶段帮助开发者提高工作质量和效率的一类软件,也称为CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具。
CASE工具:
它是一种软件;
它是继高级程序语言之后,软件技术进一步发展的产物;
它的目的是在软件开发过程的不同方面给予人们不同程度的支持和帮助。

CASE工具的类型
分析与设计工具
-统称为建模工具,如IBM Rational Rose、PowerDesigner、Visio等
编程工具
-集成开发环境(IDE,Integrated Development Environment)是目前程序员最常用的编程工具。
-如Visual Studio 2010、MyEclipse等
测试工具
-包括测试用例的选择、测试程序与测试数据的生成、测试的执行及测试结果的评价。
运维工具
项目管理工具

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值