系统规划---成本效益分析
评价信息系统经济效益常用的方法主要有成本效益分析法,投入产出分析法和价值工程方法。盈亏平衡法常用于销售定价;
可行性分析
系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标以及现有系统的状况进行初步调查,根据企业目标和发展战略,确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。根据需要与可能,给出拟建系统的备选方案。对这些方案进行可行性分析,写出可行性研究报告。可行性研究报告审议通过之后,将新系统建设方案以及实施计划编写成系统设计任务书。
软件工程---开发模型
常见的敏捷开发模型包括:
- 极限编程
- 自适应软件开发
- 水晶方法
- SCRUM
- 功能驱动开发方法
信息系统开发方法
结构化方法假定待开发的系统是一个结构化的系统,其基本思想是将系统的生命周期划分为系统规划、系统分析、系统建设、系统实施、系统维护等阶段。这种方法遵循系统工程原理,按照事先设计好的程序和步骤,使用一定的开发工具,完成规定的文档,在结构化的基础上进行信息系统的开发工作。结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。
OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型。对象模型描述了系统中对象的静态结构、对象之间的关系、属性和操作,主要是用对象图来实现;动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现动态模型;功能模型描述了一个计算如何从输入值得到输出值,它不考虑计算的次序,主要使用DFD来实现功能模型。简单的说就是:功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。
软件工程---信息系统开发方法
OO的应用构件在类和对象之上,随后发展起来的建模技术将相关对象按照业务功能进行分组,就形成了构件(Component)的概念。对于跨构件的功能调用,则采用接口的形式暴露出来。进一步将接口的定义与实现进行解耦,则催生了服务和面向服务的方法。由此可见,面向对象、基于构件、面向服务是三个递进的抽象层次。
SO方法有三个主要的抽象级别,分别是操作、服务和业务流程。位于最底层的操作代表单个逻辑单元的事务,执行操作通常会导致读、写或修改一个或多个持久性数据。服务的操作类似于对象的方法,他们都有特定的结构化接口,并且返回结构化的响应;位于第二层的服务代表操作的逻辑分组;最高层的业务流程则是为了实现特定业务目标而执行的一组长期运行的动作或活动,包括依据一组业务规则按照有序序列执行的一系列操作。其中操作的排序、选择和执行成为服务或流程的编排,典型的情况是调用已经编排的服务来响应业务事件。
开发模型:
抛弃式原型主要用于界面设计:
抛弃式原型基本思路就是开始就做一个简单的界面设计,用来让用户有直观的感受,从而可以提出需求,等需求获取到之后,可以把这个界面原型抛弃不用。
演化式原型会把原型保留,通过不断的演化,逐步形成最终的产品。
信息系统开发方法:
在需求不明确的情况下,采用结构化方法、瀑布式模型是有很大风险的。而形式化方法要求更高,要以数学建模为基础,如此一来,只有采用极限编程最为合适。极限编程是敏捷编程,强调小步快跑,会不断做小版本的发布,这样可以有效应对需求不明确的情况。
在众多的开发方法中,面向对象方法最早来源于仿真领域,其特点是系统的描述以及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流和沟通,缩短开发周期,提供系统开发的准确性和效率。面向服务的方法以粗粒度、松散耦合的系统功能为核心,强调系统的标准化和构件化,加强了系统的灵活性,可复用性和可演化性。
开发模型:
RUP的四个阶段的功能为:
- 初始阶段的任务是为系统建立业务模型并且确定项目的边界。在初始阶段,必须识别所有与系统交互的外部实体,定义系统与外部实体交互的特性。在这个阶段中,所关注的是整个项目的业务和需求方面的主要风险。
- 细化阶段的任务是分析问题领域,建立完善的架构,淘汰项目中最高风险的元素。在细化阶段,必须在理解整个系统的基础上,对架构作出决策,包括其范围,主要功能和诸如性能等非功能需求,同时为项目建立支持环境。
- 构建阶段的任务是要开发所剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源以及控制操作,以优化成本、进度和质量。构建阶段的主要任务是通过优化资源和避免不必要的报废和返工,使开发成本降到最低;完成所需要功能的分析、开发和测试,快速完成可用的版本;确定软件,场地和用户是否已经为部署软件做好准备;
- 移交阶段,当基线已经足够完善,可用安装到最终用户实际环境中时,则进入移交阶段。移交阶段的重点是确保软件对最终用户是可用的,移交阶段的主要任务是进行测试,制作产品发布版本;对最终用户支持文档定稿;按用户的需求确定新系统;培训用户和维护人员;获得用户对当前版本的反馈,基于反馈调整产品,例如,进行调试、性能或可用性的增强等。
信息系统生命周期:
系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境,目标以及现有系统的状况进行初步调查,根据企业目标和发展战略,确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。根据需要与可能,给出拟建系统的备选方案。对这些方案进行可行性分析,写出可行性研究报告。可行性研究报告审议通过后,将新系统建设方案以及实施计划编写成系统设计任务书。
根据系统规划的主要任务,可以按照以下步骤开展系统规划工作:
- 对现有系统进行初步调查,根据企业战略和发展目标,从类似企业和本企业内部收集各种信息,站在管理层的高度观察企业的现状,分析现有系统的运行情况
- 分析和确定系统的目标。系统目标应该包括服务的质量和范围,政策、组织和人员等,它不仅包括信息系统的目标,还要反映整个企业的目标。
- 分析子系统的组成和基本功能。自顶向下对系统进行划分,并且详细说明各个子系统应该实现的功能。
- 拟定系统的实施方案。可以对子系统的优先级进行设定,以便确定子系统的开发顺序
- 进行系统的可行性研究,编写可行性研究报告,召开可行性讨论会。
- 制定系统建设方案。对可行性研究中提出的各项技术指标进行分析、比较、落实各项假设的前提条件,制定系统建设方案,并且根据该方案以及实施计划编写成系统设计任务书,系统设计任务书经上级主管部门批准后,正式作为系统建设的依据。
开发模型:
螺旋模型,将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿着螺旋线进行若干层的迭代,分为以下四个活动:
- 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
- 风险分析:分析评估所选的方案,考虑如何识别和消除风险
- 实施工程:实施软件开发和验证;
- 客户评估:评价开发工作,提出修正建议,制定下一步计划;
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的复用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下;
- 螺旋模型强调风险分析,但是要求许多客户接受和详细这种分析,并且做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发
- 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合与大规模软件项目;
- 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险
首先是确定一个阶段的目标,完成这些目标的选择方案以及约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在风险,有时需要通过建造原来来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并且设计下一个阶段。
开发模型:敏捷开发一共包括如下七种
- 极限编程,核心思想是沟通、简明、反馈和勇气。因为知道计划赶不上变化,极限编程无需开发人员在软件开始的初期做出很多的文档。极限编程强调的提倡测试先行,为了将以后出现bug的几率讲到最低。
- SCRUM是一种迭代的增量化过程,用于产品开发或工作原理,它是一种可以集合各种开发事件的经验化过程框架,SCRUM中发布产品的重要性高于一切。旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进。
- 特性驱动方法FDD,是一套针对中小型软件开发项目的开发模式,此外,FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目
- ASD(自适应软件开发)ASD强调开发方法的适用性,这一思想来源于复杂系统的混沌理论,ASD不像其他方法那样有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并且从更高的组织和管理层来阐述开发方法为什么具备适应性
- DSDM(动态系统开发方法)是众多敏捷开发方法中的一种,它提倡以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发之一。在英国,由于其在各种规模的软件组织中的成功,它已经成为应用最为广泛的快速应用开发方法。DSDM不但遵循了敏捷方法的原理,而且也适合那些成熟的传统开发方法,有坚实基础的软件组织。
- 轻量型的RUP。RUP其实是个过程的框架,它可以包容许多不同类型的过程,CL认为敏捷型方法来使用RUP。强调,推进的敏捷方法只不过是RUP的主流OO开发方法而已。
ITIL信息技术基础架构库认为,服务管理是其最核心的模块,该模块包括服务提供和服务支持两个流程组
极限编程是一种重要的敏捷开发方法,包括策划、设计、编码和测试4个框架活动的规则和实践。极限编程中使用的重要技术是重构,即包括设计技术的重构,也包括构建技术的重构;极限编程提倡在基本设计完成之后,团队不应该直接开始编码,而是开发一系列用于检测本次发布的包括所有故事(Story)的单元测试;极限编程活动中的关键概念之一是“结对编程”,推荐两个人面对同一台计算机共同开发代码;极限编程过程中建立的单元测试应当使用一个可以自动实施的框架,支持代码修改后即时的回归测试策略
螺旋模型是一种演进式的软件过程模型,结合了原型开发方法和瀑布模型的系统性和可控性特点。他有两个显著特点,一个是采用循环的方式逐步加深系统定义和实现的深度,同时降低风险;二是确定一系列的里程碑,确保项目开发过程中的相关利益者都支持可行的和令人满意的系统解决方案。