1.1.3软件系统结构
为了最大限度地利用现代计算机及网络通信技术和加强企业的信息管理很多企业建立了管理信息系统(Management Information System 简称MIS)MIS应包括:辅助决策系统(Aided Decision Making System简称ADMS)工业控制系统(Industrial Control System简称ICS)办公自动化系统(Offile Automation 简称OA)以及数据库模型库方法库、知识库和上级机关及外界交换信息的接口。
Web的MIS系统同传统的MIS技术相似之处:技术的理念一样、区别:传统的MIS系统的核心是C/S(客户端/服务器)结构而基于Web的MIS系统的核心是B/S(浏览器/服务器)结构。
1、什么是C/S结构
C/S(Client/Server)结构即客户端/服务器结构,客户端通常可以理解为安装在PC、手机终端设备上的软件比如:QQ软件、手机APP
C/S模式的应用系统最大的好处就是不依赖企业外面环境,既无论企业是否能够上网都u影响应用。
还有一个类通信的软件,比如:百度云盘、迅雷下载等也属于C/S结构,它们之间的数据传输不需要经过服务器处理业务,可以直接通过客户端进行传输,这种结构通常称为P2P(peer to peer)点对点结构。
P2P是可以简单的定义成通过直接交换来共享计算机资源和服务。
2、什么是B/S结构
B/S(Brower/Server)结构即浏览器/服务器结构,对C/S结构的一种变化或者改进的结构,用户工作界面是通过浏览器来实现,极少部分事物通过逻辑在前端(Browser)实现,但是主要事物逻辑在服务器端(Server)实现,形成所谓三层3-tier结构B/S是目前互联网中应用最为广泛的系统结构,不需要专门的操作环境,在任何地方、只要能上网就能够操作MIS系统。
3、什么是A/S结构
A/S(Application serving)系统结构,A/S体系结构提供设置应用服务器,将关键性的业务软件集中安装并进行发布,客户端可完全在服务器上执行所需的应用,A/S结构利用ICA协议将应用程序的逻辑从用户界面中分离开来,使得网络传输数据量很小,对网络宽带的要求低、保证多用户同时工作,提供数据的实时访问和更新。
应用服务器与后台数据库通常采用局域网连接,计算和查询所需的大量数据都是基于LAN传输,因此远程用户的网络性能非常理想,同时在A/S结构中,网络中传输的仅仅是通过用户界面以及操作动作更新信息,因此系统的安全性更好。
1.2软件研发模型
软件研发模型是指软件开发全部过程,活动和任务的结构框架、合理使用研发模型可以提供软件研发效率、降低成本、提升软件质量、软件开发模型能清晰、直观地表达软件开发全过程、明确规定了要完成的主要活动和任务,用例作为软件项目工作的基础。
目前比较流行的研发模型主要有:瀑布模型、快速原型模型、螺旋模型、RUP流程和敏捷模型
1.2.1瀑布模型
如图1.2所示在早期该模型应用最为广泛,也容易理解和掌握的研发模型,现在已经不再合适现代的软件开发模式,几乎被业界抛弃、我也不多赘述。
1.2.2快速原型模型
快速原型模型又称为原型模型,,如图1.3所示
是在瀑布模型基础上演进的一种研发模型,弥补了瀑布模式的不足的地方,原型模型更关注用户需求的正确性。
该模型的主要思想就是通过用户提供原型获得用户的反馈,使开发出的软件能够真正反映用户的需求,同时原型模型采用逐步求精的方法来完善原型,使得原型能够“快速”开发。
在工作中很多公司把原型称为DEMO,即演示版,便于吧需求调研以及软件初期的设计。
1.2.3螺旋模型
1988年巴利.玻姆正式发表了软件系统开发的螺旋模型,如图1.4所示
它将瀑布和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合大型复杂的系统。螺旋模型采用一种周期性的方法来进行系统开发,该模型是快速模型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法,这种模型的每一个周期都包括了指定计划,风险分析、实施工程和客户评估4个阶段,由这4个阶段进行迭代,螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别,风险分析和风险控制,它把软件项目分解成一个小项目、每个小项目都标识一个或多个主要网络,直到所有的主要风险因素都被确定。
由于该模式成本过高,目前商业模式几乎不采用该模型,但该模型相关安全系数极高,目前用在军方应用比较多。
1.2.4RUP流程
RUP是由Rational 公司(已被IBM并购)退出的一种统一软件开发过程,以用例驱动和体系结构为核心的增量迭代的软件过程模式,如图1.5所示、目前也是比较流行的研发模型。
RUP有2个轴,横轴表示时间是过程的生命周期,体现了开发过程的动态结构主要用来描述软件的周期、阶段、迭代和里程碑;纵轴表示工作流,体现开发过程的静态结构、主要用来描述软件活动的工作量。
1、RUP的阶段划分
RUP的软件生命周期在时间上被分解为四个顺序的阶段分别是:初始化、细化、构造和发布。每一个阶段结束于一个主要的里程碑(Milestones)每个阶段本质是两个里程碑之间的时间跨度,下面简单结束RUP的四个阶段
(1)初始化阶段:本阶段具有非常重要的意义,必须识别所有与系统交互的特性,在这个阶段中所关注的是整个项目进行的业务和需求方面的主要风格。
(2)细化阶段:分析问题领域、建立完善的系统结构基础,编制项目计划规避项目中风险较大元素,同时为项目建立支持环境、包括模板、准则等、并准备工具。
(3)构造阶段:由开发人员对所有的构件和应用程序进行集成,并对所有功能进行详细测试:其重点放在管理资源及控制运作以优化成本进度和质量。
(4)发布阶段:重点是确保软件对最终用户是可用的,发布阶段可以跨越几次迭代,包括为发布做准备的产品测试:基于用户反馈的少量调整。
2、RUP的核心工作流
RUP的9个核心工作流,它们分为6个核心过程工作流和3个核心支持工作流,下面简单介绍RUP的每个工作流,
(1)业务建模:描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
(2)需求(Requirement)主要的目标时描述系统应该做什么,并使开发人员和用户就这一点达成共识,要对需要的功能和约束进行提取,组织和文档化。最重要的是理解系统所解决问题的定义和范围。
(3)分析和设计:将需求转化成系统设计,开发一个健壮的结构并调整设计使其与实现环境相匹配,并优化其性能、其结果是一个设计模型和一个可迭代的分析模型,设计模型是源代码的抽象,它由设计类和一些描述组成,设计类被组织成具有良好接口的设计包和设计子系统。
(4)实现:将层次化的子系统形式定义代码的组织结构:以组件的形式(源文件、二进制、可执行文件)实现类和对象,将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
(5)测试(Test)通过三维模型(可靠性、性能、功能性)进行测试,主要检测所有的需求,是否以被正确,所有的组件是否被正确集成。
RUP提出了迭代的方法,在整个项目中进行测试,尽可能早地发现缺陷从根本上降低了修改缺陷的成本。
(6)部署:描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生存软件本身以外的产品、安装软件、为用户提供帮助。
(7)配置和变更管理:其描绘了如何在多个成员组成的项目中控制大量的产物,配置和变更管理工作流提供了准则来管理演化系统中的多个变体,并跟踪软件创建过程中的版本。
(8)项目管理:平衡各种可能,产生冲突的目标管理风险、克服各种约束并成功交付使用户满意的产品,其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供使用的准则,为管理风险提供框架等。
(9)环境管理:该工作流向软件开发组织提供软件开发环境,包括过程和工具,并集中于配置项目过程中所需的活动,同样也支持开发项目规范的活动。
1.2.5敏捷模型:敏捷开发是以用户需求进化为核心,采用迭代循序渐进的方法进行软件开发,在敏捷开发中,软件项目在构建初期被分为多个子项目,各个项目的成果都经过测试:具备可视可集成和可运行使用的特征。
敏捷开发宣言就是尽早的、持续的交付有价值的软件来使客户满意,如图1,6所示
敏捷模型的原则有以下几点
1、快速迭代:敏捷中采用小版本、其需求、开发和测试更加见得快速。
2、让测试人员和开发人者参与需求讨论
需求讨论以研讨组织的形式展开,最具有效率。研讨组需要包括测试人员和开发者,这样可以更加轻松定义可测试的需求,将需求分组并确定优先级。
3、编写可测试的需求文档
开始就要用“用户故事” 的方法来编写需求文档,这种方法可以让我们将注意力放在需求上,而不是解决方法和实施技术上
4、多沟通、尽量减少文档
好的沟通,是敏捷开发的先决条件,面对面沟通比邮件效果方法强的多,越有经验、约会强调良好的高效的沟通重要性。
5、做好产品原型:建议使用草图和模型来阐明用户界面
6、及早考虑测试:及早地考虑测试在敏捷开发中很重要,较早地开始编写测试用例,当需求完成时,可以接受的测试用例也基本一块完成。