第3章 信息系统建设概论 20174319 安睿韬
学习小结:该ppt讲述了信息系统建设相关知识为主要内容,对信息系统建设的复杂性和相关进行了多层次分析,介绍了信息系统的生命周期,分析了各种信息系统建设的方法,内容繁多,知识点难度大,需结合各种案例才能有效地理解知识点,这次的学习时间长,责任重。
一、 信息系统建设是复杂的社会过程
1. 信息系统的复杂性体现在:
- 技术手段复杂
- 内容复杂,目标多样
- 投资密度大,效益难以计算
- 环境复杂多变
2. 技术的复杂性
- 计算机硬、软件技术
- 数据通讯与网络技术
- 各种信息采集与存贮
- 各种控制与决策方法
- 建模与仿真技术
- 人工智能技术
- 技术方案难以检验证明
3. 内容的复杂性
- 一个组织的管理与业务信息量大、面广,形式多样、来源繁杂,信息内容和处理要求又涉及到广泛的学科和事业领域。
- 一个组织的信息系统必是一个规模庞大,结构复杂,具备多种功能、实现多个目标的大系统
- 一个组织内各类机构和人员的信息需求不尽相同,有些需求可能相互冲突,需求的不确定性和可变性非常大。
- 组织和外部环境之间的数据交换难以控制。
4. 投资的密集性
- 信息系统的建设,需要巨额投资,是一种资金密集型的建设项目
- 智力密集型或者知识密集型
- 需用大量人工,是劳动密集型项目
- 效益难以计算
5. 信息系统建设的统计数据
- 据国外1995年对365家公司的调查:
- 31%的信息系统项目在完成之前被取消
- 53%的项目没有达到预定功能
- 在3682个项目中只有12%的项目按时和按预算完成
- 据某顾问公司2004年报告(对4万个信息系统项目的调查)
- ERP失败率达到70%
- 成功项目只能达到34%
- 有争议的项目达到51%
- 失败项目达到15%
- 成功的含义:在规定的时间内,以规定的预算完成规定的目标。
6. 环境的复杂性
- 涉及到组织内部各级机构、管理人员
- 涉及组织面临的外部环境及发展趋势
- 要考虑管理体制、管理思想、管理方法和管理手段的相互匹配、相互促进
- 考虑人的习惯、心理状态及现行的制度、惯例和社会、政治诸因素
二、 信息系统建设的一般方法
1. 早期方法的不足
- 早期,人们对信息系统的复杂性缺乏足够的认识,认为信息系统无非是“大程序”,缺乏科学的开发方法:
- 目标含糊
- 通信误解
- 步骤混乱
- 缺乏管理控制
2. 系统方法的应用
- 系统科学方法为人们提供了新的思维模式,是研究复杂系统的有效工具。
- 钱学森曾指出“系统工程是组织管理系统的规划、研究、制造、试验和使用的科学方法,使一种对所有系统都具有普遍意义的方法”。
- 系统方法在信息系统建设中的应用:
- 还原论与整体论相结合
- 微观分析与宏观综合相结合
- 定性判断与定量计算相结合
- 严格生命周期阶段与反复迭代相结合
3. 系统建模/模型化
- 分析研究复杂系统问题,建模是一种基本手段。
- 建模(modeling)就是为描述系统的构成和行为,对现实系统的各种因素进行适当筛选,用一定方式(数学公式、符号、图形、图像等)表示现实系统的过程。
- 建模也称模型化。
4. 系统模型的概念
- 系统模型是指以某种确定的形式(如文字、符号、图表、实物、数学公式等),对系统某一方面本质属性的描述。
- 一个适用的系统模型应该具有如下3个特征:
- 它是现实系统的抽象或模仿;
- 它是由反映系统本质或特征的主要因素(要素)构成的;
- 它集中体现了这些主要因素之间的关系。
- 根据抽象程度:概念模型、逻辑模型和物理模型。
- 根据对时间的依赖:静态模型和动态模型。
- 全面彻底地描述一个系统,通常需要使用多个模型。
5. 管理系统模型
- 管理模型描述组织的状况,包括:
- 组织的静态特征,如组织结构图、实体关系图
- 动态特征,如任务分解图、状态转换图、甘特图、PERT图
- 业务流程,如流程图
- 业务规则,如决策树、决策表
6. 信息系统模型
- 信息系统模型描述计算机信息系统的状况。
- 每种模型都有其标准符号、惯例、语法规则和用途,当这一组符号和规则形成了一套完整严谨的表示语言,就形成建模语言。
- 因为信息系统是为管理服务的,因此有些模型在管理系统和信息系统中通用,如流程图、状态图 、决策树/决策表等。
7. 信息系统模型的作用
- 建立信息系统模型有以下主要作用:
- 对复杂问题进行简化描述,帮助有关人员快速、简单直观、准确地了解系统;
- 建模的过程使得分析师和设计师能更全面地研究系统,深思熟虑,减少遗漏,以形成更成熟的方案;
- 各阶段产生的模型为后续阶段的有关人员提供了工作依据;
- 为项目各类人员提供了统一的交流工具,利于沟通和团队合作;
- 为项目验收和将来的维护工作提供了文档依据;
- 利用工具将模型映射为特定平台的可执行代码(MDD,Model-Driven Development),减少开发人员工作量。
- 信息系统开发围绕信息系统生命周期来进行,有时也称系统开发生命周期(SDLC,System Development Life Cycle),体现系统工程的思想。
- 包含5个阶段:
- 规划、分析、设计、实施、运维
- 生命周期的阶段
- 各阶段任务
-
- 系统规划
- 确定信息系统的发展规划;企业业务流程的识别、改革与创新;对建设新系统的需求作出初步研究,确定信息系统的总体结构;确定系统的备选方案,对这些方案进行可行性分析
- 系统分析
- 详细调查,确定系统的基本目标和逻辑功能要求
- 系统设计
- 根据系统说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案
- 系统实施
- 计算机等设备的购置、安装和调试;编写、调试和测试程序;人员培训;数据准备或转换;系统调试与转换
- 系统维护
- 运行情况的记录;必要的修改;评价和总结等‘
- 系统规划
四、基于生命周期的开发方法
1. 瀑布开发方法
- 强调阶段的划分和阶段严格的顺序
- 各阶段工作任务明确,要求文档完备性
- 是一种严格线性的按阶段顺序的、逐步细化的开发模式,消除了软件开发的随意性
- 特点
-
- 简单易用,容易理解
- 开发的进程一个顺着一个,没有反馈过程,需要严密控制
- 允许基线和配置早期接收控制
- 一个新的项目不适合这个模型
- 用户直到项目结束才能看到质量如何
- 不允许或者严格限制变更
- 不足
- 需求:客户常常难以表达真正的需求,而这种模型却要求严格的阶段性成果,返工困难,变更代价很大
- 风险:客户要等到开发周期的晚期才能看到程序运行的测试版本,这时若发现大的错误,可能引起客户的惊慌,其后果也可能是灾难性的
- 效率:因为前后任务的依赖关系,成员不能并行工作,有可能花在等待的时间比开发的时间要长,即所谓的“堵塞状态”
2. 原型开发方法
- 原型——快速建立起来的可以在计算机上运行的程序,通常选取信息系统中某个关键功能作为原型。
- 方法的特点
-
- 用户积极参与
- 原型的开发没有严密的阶段性
- 短期获得测试版本,降低风险
- 应用于以下场合:
- 需求含糊,用户不能标识出详细的输入、处理和输出需求
- 设计方案不明确,开发人员不能确定算法的有效性、操作系统的适应性或人机交互的有效性
- 不足
-
- 降低风险的同时,引入了其他风险:
- 用户随意无止境的需求变化,因为用户容易产生误解,认为系统很容易被构造和修改
- 如果采用原型基础上继续构造,由于修补过度,软件质量不易于保证
- 开发人员为了快速构造原型,可能会采用不合适的操作系统、语言、算法等,造成后期风险,如系统适应性差、维护困难等
- 降低风险的同时,引入了其他风险:
3. 迭代开发方法
- 一条直线一次性到达目的总是困难的。
- 紧迫的市场期限和快速变化使得难以一次性完成整个软件产品,解决方法是先提交一个有限的版本,细节部分逐步增加,即多次迭代后完成系统。融合了瀑布方法和原型方法。
- 整个开发工作被组织为一系列的短小的、固定长度的小项目,被称为一系列的迭代。
- 有两种迭代:
- 迭代增量:迭代周期完成一个增量,然后集成
- 迭代进化:迭代周期内包含演化和完善
- 特点
-
- 以功能递增的方式进行软件开发(可并行化)
- 能较快地产生可操作的系统
- 在每一步递增中,都可以把用户/开发者的经验结合到不断求精的下一个增量中
- 可改善测试效果和降低软件开发总成本。
- 这个过程好比搭积木。
- 应用场合
- 项目开始,明确了需求的大部分,但是需求可能会发生变化
- 对于市场和用户把握不是很准,需要逐步了解
- 对于有庞大和复杂功能的系统进行功能改进,本身就需要一步一步实施的。
4. 螺旋开发方法
- 螺旋方法——把软件开发过程定义成不断上升的螺旋周期,每个周期划分为计划、风险分析、实施和评价四个方面。沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。
- 特点
- 风险驱动,可以在生命周期早期强制性的确定项目中存在的风险
- 需要开发人员具有相当丰富的风险评估经验和专门知识
- 要求用户参与阶段评价,对用户要求较高
- 适用
- 单位内部开发的大规模软件项目
- 风险是项目的主要制约因素
- 可能会发生重大变更
- 采用新技术
5. 敏捷开发方法
- 敏捷过程(agile process)是一系列轻量的过程模型的总称,致力于在无过程和过于繁琐的过程中达到一种平衡,强调对需求变化的敏捷响应,以不多的步骤过程获取满意的结果。
- 敏捷软件开发宣言:
- 个体和交互胜过过程和工具
- 可以工作的软件胜过面面惧到的文档
- 客户合作胜过合同谈判
- 响应变化胜过遵循变化
- 虽然右项也有价值,但我们认为左项具有更大的价值。
- 基于迭代开发方法探索出的成功实践。
五、基于开发技术的开发方法
- 信息系统是很非常复杂,通常会借助于模型对它进行研究、认识、描述和设计。
- 本节从模型化的角度探讨信息系统不同开发方法的形成和各自特点。
1. 管理模型到信息模型
- 信息系统模型最核心的是信息处理模型,应考虑两个方面:
- 信息处理模型最核心的是软件结构模型,而软件模型由计算机程序语言的特性来决定。
- 机器语言、汇编语言、C、C++……
- 信息处理模型来源于管理模型,而管理系统模型包含以下方面:
- 信息处理模型最核心的是软件结构模型,而软件模型由计算机程序语言的特性来决定。
2. 设计优秀的软件结构
- 优秀的软件结构应具有以下特性:
- 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求;
- 易于理解,方便开发人员之间、开发人员与用户之间交换意见;
- 易于更改,当应用环境和应用要求改变时,能容易地对系统进行修改和扩充;
- 易于向计算机支持的数据结构转换。
- 软件结构从简单到复杂,走过了从机器指令、语句、模块封装到类封装、再到构件和服务封装的历史发展过程,不同的开发技术和软件结构催生了不同的开发方法。
3. 软件结构设计的基本原则
- 抽象第一
- 抽象是人类认识世界的基本法则之一。对实际的事物进行处理,抽取所关心的、共同的、本质特征的属性,并对这些事物及其特征属性进行描述。由于抽取的是共同的、本质特征的属性,从而大大降低了系统元素的绝对数量。
- 层次划分
- 复杂系统可以先分解为子系统,逐层分解。分解的每个子集互不相交,能使注意力集中与某个子集内部及与其他子集的联系。层次和每层子集的数目为短时记忆最大容量7±2的范围之内。
- 模型化
- 提出以模型代替真实系统进行模拟实验,达到认识真实系统特性和规律性的方法。
4. 基于技术的开发方法
- 结构化开发方法
-
- 是计算学科的一种典型的系统开发方法论。
- 它采用了系统科学的思想方法,从层次的角度,自顶向下地分析和设计系统,即抽象与分解。
- 系统可用高级的抽象概念来理解和构造, 这些高级的抽象概念又可用较低级的抽象概念来理解和构造,如此进行下去,直到最低层次的模块可以表示成某种程序设计语言的语句为止。
- 也称为 面向功能/面向过程/面向数据流 的软件开发方法
- 面向对象开发方法
- 面向对象(object-oriented)方法具有很强的类和对象的概念,因此它就能很自然地直观地模拟人类认识客观世界的方式,包括:
- 客观世界的任何事物都是对象(object)。它们都有一些静态特征和有关行为。
- 对象之间有抽象与具体、群体与个体、整体与部分等几种关系,这些关系构成对象的网络结构。
- 抽象的对象所具有的性质,自然地成为具体对象的性质,而不必说明(继承性,inheritance)。
- 对象之间可以互送消息(message),通过消息进行交互和协作。
- 举例
-
汽车作为一个对象,有排量、颜色、行驶里程等数据,有启动、行驶、停止、熄火等行为,驾驶员的点火事件可以触发汽车的启动操作,踩下油门事件会触发汽车行驶,行驶行为将造成行驶里程发生改变。
在计算机赛车游戏里,面向对象程序设计可以将汽车设计为一个软件对象(class)。
-
5. 不同方法的比较
- 结构化方法
- 容易理解和交流,对于大系统可以从全局逐步展开到局部,整体性较好。
- 结构化方法是其他系统开发方法(如面向对象方法)的基础。
- 面向对象
- 稳定可靠,有利于维护和重用,并容易实现多层分布式结构,但对前期分析设计人员要求较高,用户理解模型有困难。
- 面向服务
- 松耦合、自描述、可重用、开放标准。以XML为基础,将已有的服务进行重新组合后可以快速建立新的业务流程,要求分析有较强的业务流程的抽象能力。
- 以结构化方法和面向对象方法为基础。
6. 两类方法的关系
- 建模方法不限定使用于特定的过程方法中
- 比如面向对象方法既可以使用在瀑布方法中,也可以用在螺旋方法中
- 开发过程的各时期可以使用不同的建模方法(但不提倡)
- 要注意不同方法不同模型的衔接
六、信息系统开发的组织管理
1. 诺兰模型
- 信息系统遵循从初级到成熟的发展规律(诺兰模型),要根据企业的信息系统发展现状制定开发策略
-
总结:
模型中的各个阶段是不能跳跃的。“欲速则不达”
2. 建立信息系统的基础条件
- 领导重视,业务人员积极性高
- 有一定的科学管理基础
- 由不同层次人员组成的技术队伍
- 具备必要的资源
3. 系统开发的准备工作
- 有效的组织机构
- 各类人员的配备和分工
4. 技术人员
5. 选择开发方式
- 根据资源情况选择适合的开发方式:
- 自行开发
- 委托开发
- 联合开发
- 购买现成软件产品
- 购买服务(SaaS/PaaS/云计算)
6. 信息系统的项目管理
- 信息系统项目遵循项目管理的一般理论和方法,但也存在自身的特点,管理内容包括:
- 进度管理
- 成本估算和经费管理
- 质量管理
- 文档管理
- 人员管理
- 其它:需求管理、风险管理、软件配置管理
七、信息系统开发工具
- 信息系统开发工具指在系统开发生命周期各个阶段帮助开发者提高工作质量和效率的一类软件,也称为CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具。
- CASE工具:
- 它是一种软件;
- 它是继高级程序语言之后,软件技术进一步发展的产物;
- 它的目的是在软件开发过程的不同方面给予人们不同程度的支持和帮助。