信息系统建设概论
1.信息系统建设的复杂性表现:
技术手段复杂
内容复杂,目标多样
一个组织的管理与业务信息量大、面广,形式多样、来源繁杂,信息内容和处理要求又涉及到广泛的学科和事业领域。
一个组织的信息系统必是一个规模庞大,结构复杂,具备多种功能、实现多个目标的大系统
一个组织内各类机构和人员的信息需求不尽相同,有些需求可能相互冲突,需求的不确定性和可变性非常大。
组织和外部环境之间的数据交换难以控制。
投资密度大,效益难以计算
信息系统的建设,需要巨额投资,是一种资金密集型的建设项目
智力密集型或者知识密集型
需用大量人工,是劳动密集型项目
效益难以计算
成功的含义:在规定的时间内,以规定的预算完成规定的目标。
环境复杂多变
涉及到组织内部各级机构、管理人员
涉及组织面临的外部环境及发展趋势
要考虑管理体制、管理思想、管理方法和管理手段的相互匹配、相互促进
考虑人的习惯、心理状态及现行的制度、惯例和社会、政治诸因素
2.统一建模语言UML
统一建模语言UML(unified modeling language)是由单一元模型支持的一组图示法。这些图示法有助于表达与设计软件系统,特别是采用面向对象方法构造的软件系统。
UML通过不同的图来描述系统的结构(structure)、行为(behavior)、交互过程(interaction)。
UML 2.2中一共定义了14种图(diagram):
- 系统结构:类图、对象图、包图、构件图、部署图等
- 系统行为:活动图、状态图、用例图
- 交互过程:通信图、顺序图、计时图等
3.信息系统的生命周期
生命周期的定义:
信息系统在使用过程中随着生存环境的变化,需不断维护、修改,当它不再适应的时候就要被淘汰,就要由新系统代替老系统,这种周期循环称为信息系系统的周期。信息系统开发围绕信息系统生命周期来进行,有时也称系统开发生命周期**(SDLC,System Development Life Cycle),体现系统工程的思想。
简单来说就是:有产生、发展、成熟,消亡的过程
信息系统的生命周期的5个阶段:
信息系统的生命周期可以分为系统规划、系统分析、系统设计、系统实施、系统运行和维护等五个阶段
- 系统规划(系统设计任务书)
确定信息系统的发展规划;企业业务流程的识别、改革与创新;对建设新系统的需求作出初步研究,确定信息系统的总体结构;确定系统的备选方案,对这些方案进行可行性分析 - 系统分析(系统说明书)
详细调查,确定系统的基本目标和逻辑功能要求 - 系统设计(系统设计说明书)
根据系统说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案 - 系统实施(系统测试分析报告)
计算机等设备的购置、安装和调试;编写、调试和测试程序;人员培训;数据准备或转换;系统调试与转换 - 系统维护
运行情况的记录;必要的修改;评价和总结等
4.基于生命周期的开发方法
围绕生命周期的开发过程模型:瀑布开发方法、原型开发方法、迭代开发方法、螺旋开发方法、敏捷开法方法;
瀑布开发方法
应用场合:适用于一些需求已明确并且变化较少的信息系统
特点:
1 简单易用,容易理解,开发的进程一个顺着一个,
2 没有反馈过程,需要严密控制,允许基线和配置早期接收控制;
3 一个新的项目不适合这个模型,户直到项目结束才能看到质量如何;
4 不允许或者严格限制变更
不足:
1 需求:客户常常难以表达真正的需求,而这种模型却要求严格的阶段性成果,返工困难,变更代价很大
2 风险:客户要等到开发周期的晚期才能看到程序运行的测试版本,这时若发现大的错误,可能引起客户的惊慌,其后果也可能是灾难性的
3 效率:因为前后任务的依赖关系,成员不能并行工作,有可能花在等待的时间比开发的时间要长,即所谓的“堵塞状态”
原型开发方法
应用场合:快速建立起来的可以在计算机上运行的程序,通常选取信息系统中某个关键功能作为原型。
特点:
1 用户积极参与;
2 原型的开发没有严密的阶段性
3 短期获得测试版本,降低风险
不足:
1 用户随意无止境的需求变化,因为用户容易产生误解,认为系统很容易被构造和修改
2 如果采用原型基础上继续构造,由于修补过度,软件质量不易于保证
3 开发人员为了快速构造原型,可能会采用不合适的操作系统、语言、算法等,造成后期风险,如系统适应性差、维护困难等
迭代开发方法
先提交一个有限的版本,细节部分逐步增加,即多次迭代后完成系统。迭代开发方法有迭增量迭代和进化迭代两种方法
增量迭代
应用:
1 项目开始,明确了需求的大部分,但是需求可能会发生变化
2 对于市场和用户把握不是很准,需要逐步了解
3 对于有庞大和复杂功能的系统进行功能改进,本身就需要一步一步实施的。
特点:
1 以功能递增的方式进行软件开发(可并行化)
2 能较快地产生可操作的系统
3 在每一步递增中,都可以把用户/开发者的经验结合到不断求精的下一个增量中
4 可改善测试效果和降低软件开发总成本。
5 这个过程好比搭积木。
进化迭代
1 进化迭代与增量迭代的区别是在每个迭代周期是对上一次迭代的演化和完善。
2 比如可以将一个软件功能的编程划分了多个迭代周期,每个迭代是对该功能的补充和进化。
3 这个过程好比滚雪球。
螺旋开发方法
定义:把软件开发过程定义成不断上升的螺旋周期,每个周期划分为计划、风险分析、实施和评价四个方面。沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。
应用场合:
1 单位内部开发的大规模软件项目
2 风险是项目的主要制约因素
3 可能会发生重大变更
4 采用新技术
特点:
1 风险驱动,可以在生命周期早期强制性的确定项目中存在的风险
2 需要开发人员具有相当丰富的风险评估经验和专门知识
3 要求用户参与阶段评价,对用户要求较高
敏捷开法方法
定义:敏捷过程(agile process)是一系列轻量的过程模型的总称,致力于在无过程和过于繁琐的过程中达到一种平衡,强调对需求变化的敏捷响应,以不多的步骤过程获取满意的结果。
5.基于开发技术的开发方法
软件结构从简单到复杂,走过了从机器指令、语句、模块封装到类封装、再到构件和服务封装的历史发展过程,不同的开发技术和软件结构催生了不同的开发方法。
1 结构化方法
结构化方法也称为 面向功能/面向过程/面向数据流 的软件开发方法
阶段 | 内容 |
---|---|
结构化分析(Structured Analysis,简称SA) | 对软件进行需求分析,以数据流图表示 |
结构化设计(Structured Design,简称SD) | –进行总体设计,以结构图表示 |
结构化编程(Structured Program,简称SP) | –以程序流程图表示 |
容易理解和交流,对于大系统可以从全局逐步展开到局部,整体性较好。
结构化方法是其他系统开发方法(如面向对象方法)的基础。
结构化方法的不足和局限性:
1 开发周期长。
2 早期的结构化方法注重系统功能,兼顾数据结构方面不够。
3 结构化程度较低的系统,在开发初期难于锁定功能要求。
2 面向对象开发方法
面向对象(object-oriented)方法具有很强的类和对象的概念,因此它就能很自然地直观地模拟人类认识客观世界的方式。由面向对象程序设计(Object Oriented Programming)发展而来。
OOP基本思想:
1 客观世界的任何事物都是对象;
2 对象之间有抽象与具体、群体与个体、整体与部分等几种关系,这些关系构成对象的网络结构。
3 抽象的、较大的对象所具有的性质,自然地成为其子类的性质,成不必加以说明,这就是继承性。
4 对象之间可以互送消息。
优缺点:稳定可靠,有利于维护和重用,并容易实现多层分布式结构,但对前期分析设计人员要求较高,用户理解模型有困难。
OOP一般指面向对象程序设计。 面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。
3 面向服务开发方法
面向服务的体系结构(Service-Oriented Architecture,SOA)以服务为软件组成要素,服务对外定义良好的接口和契约,独立于实现服务的硬件平台、操作系统和编程语言。
优缺点:松耦合、自描述、可重用、开放标准。以 XML 为基础,将已有的服务进行重新组合后可以快速建立新的业务流程,要求分析有较强的业务流程的抽象能力。以结构化方法和面向对象方法为基础。