互联网软件工程浅谈
很高兴能看到阿捷的"网站工程浅谈",在交流中,阿捷强力向编辑推荐我所谈的一些内容。感谢阿捷和编辑!
在互联网应用日益发展,规模和复杂度日益加深的今天,我非常同意阿捷的观点:应该开始重视工程和项目管理的知识和规范。很愿意与更多的朋友进行更多的交流,共同提高,共同发展。
关于"怎样协调不同人员工作保证质量"的问题,我个人的观点和我们在实际中所使用的主要是从两个方面进行,即项目开发流程和在此基础上的项目管理,项目管理中主要采用了项目站点(project site)的方法,实际上就是一个使用互联网的项目管理工具。我在后面附上相关的一些信息。更具体的则需要更多时间整理。
关于另外一个问题"关于客户需求怎样才能有控制的满足"我觉得更好的方法是采用案例分析的方法来讲,因为肯定不同的公司有很多成功和可以借鉴的方法。
这里附上我关于web engineering的报告的一部分slides内容,希望能有用。这里选择了两个报告
(1)互联网应用及其主要软件模型
(2)互联网应用开发项目管理
网站,在我的理解中,是互联网应用的用户界面。
== 互联网应用及其主要软件模型
什么是互联网应用(1)
概括讲,互联网应用是一切使用互联网环境或媒介提供某种服务或
实现某种功能的系统。
严格讲,根据互联网的特点充分发挥其作用的在互联网环境中运行的系统。
有两种互联网应用:web-enabled和web-based.
互联网环境具有交互性、即时性、开放性、分布性等特点。
互联网应用如果使用传统的软件开发方法进行开发,很容易产生问题。最重要的问题有两个:开发与维护期界限模糊、不能充分发挥
互联网特性。
什么是互联网应用(2)
示例
信息管理系统。传统的信息管理系统都是基于典型的客户机/服务器结构。系统中只有不同的功能模块和有关数据库。可以将这样的系 统使用互联网技术实现,即基于浏览器/服务器结构的系统。这只能是称做web-enabled的系统。系统的设计和结构仍然是原来的。如果是根据互联网特点(交互、开放)进行设计,则是web-based应用。
什么是互联网应用(3)
示例
一个地区的招商引资项目管理系统 。传统的系统是基于普通数据库系统所建立的。对系统的管理必须要先集中再更新维护。通过互联网实现,可以使得项目承担人直接对数据库进行查询、更新和维护。是一个开放式的分布式应用系统。这其中对原来的数据库的结构并不需要改变,但对其使用则有很大的变化?quot;
互联网软件(1)
网上书店是不是互联网软件?
--如果仅仅是后台有一些数据库系统,前台有一些页面,不能严格讲是。但这样的书店也没有很大的作用。
--如果是帮助浏览者能够对书店的书籍进行方便的查找,甚至阅览,查找作者资料、阅读别人的评价,在线订购和交易,在线查找最新 进展等,则肯定是。
互联网软件(2)
办公室自动化系统可不可以成为互联网软件?
--可以。
--而且应该。
互联网软件(3)
互联网软件对软件行业的影响
--如同八十年代初个人机软件对大型机软件
--国外已经在过去三~四年中从互联网软件占新软件项目的30%上升到超过90%。
--很快的将来,互联网软件就是软件业的主体。
--例如,一个企业可以在互联网环境下建立办公自动化系统,对内衔接其MRP或ERP系统,对外衔接其电子商务平台和客户服务管理。
网站与软件(1)
什么是网站?
--网站作为媒体。宣传作用。
--网站作为交流渠道。信息发布和采集。
--网站作为界面/窗口。企业或机构内部应用系统和外部应用系统的接口,互联网应用的界面。
网站与软件(2)
网站发展的四个阶段。
--第一阶段:单纯页面,由超链接相连。
--第二阶段:页面仍然是主体,但具有一定的信息发布、数据采集和交互功能。
--第三阶段:页面系统和后台(服务器端)软件系统协同工作。
--第四阶段:后台软件系统为主体,控制前台页面做为界面。页面已经完全变成动态生成。
网站与软件(3)
网站就是(互联网)软件
--所处的环境是互联网环境(基于相关规范)
--接受通过内部网或互联网浏览者发出的请求。通常以URL加参数表达。
--通过处理后产生结果,再生成合适的页面表达形式返回(通过互联网)
--个性化是一个重要需求。
--页面生成和数据处理是一个问题。
--访问者session管理和控制。
--安全性。
互联网对象模型(WOM)(1)
早期互联网发展中,对页面是作为一个经过格式化的文本看待的。通过地址存取一个页面文档。
随着互联网的发展,页面需要变成动态生成,需要对一个页面上不同的数据进行处理。有必要区别表达形式和数据格式。
对一个页面的访问,看做是对一个对象发出一个请求。
互联网对象模型(WOM)(2)
互联网对象模型的核心是从页面及其所表达的数据和(间接或直接)所具有的功能使用对象模型进行描述。
页面数据(对象数据)与表达形式(对象界面)的分离。
页面数据(对象数据)的处理(对象语义)的联系。
互联网对象模型(WOM)(3)
在过去的五年中,逐渐成熟了一个共同接受的互联网对象模型。
这一模型的关键点在于其数据表达的普遍性以及与页面表达的一致性。
最重要的发展是对XML语言和相关语言例如DTD,XMLSchema语言,XSL语言的标准化。
成百上千种基于XML标准的技术需要发展。
互联网软件工程(1)
软件工程是使用科学的方法对软件系统的建设、维护和使用的可控制、质量可保证的一整套方法。
互联网工程具有与软件工程和其它工程领域一样的出发点,所不同的是其对象是互联网软件。
互联网软件与传统软件的不同导致了需要对软件工程方法进行改进。
互联网软件工程(2)
分析和建立模型阶段
--与软件工程一样,需要对客户需求进行分析。
--所不同的是,其界面是网站形式。
--更为不同的是,其工作方式以及能够提供的服务具有更开放、交互性更强等方面的因素。
--尤其重要的是要与其它系统、机构和企业能够进行更方便的交流。数据交换的通用性。
互联网软件工程(3)
设计和实现
--需要设计前台和后台两个部分。
--需要区分数据与表达。
--需要更多的特定考虑,例如安全和session。
测试与维护
--需要能够非技术人员进行维护。
--需要能有可扩充性。
--需要能够远程进行。
以数据为中心的模型(1)
以数据为中心的模型是目前互联网应用的主要方法的基础。其核心是将一个互联网软件看做是一个信息系统。数据库是这个系统的中心。
目前主要使用的数据库系统仍然是关系数据库。对于许多应用来讲这种模型已经足够。
以数据为中心的模型(2)
随着互联网应用的不断发展,并非所有应用都是基于数据库的系统。与互联网对象模型有一定的不一致性。
许多功能性模块只能作为系统外挂部分。对于大型和复杂系统,这并非是最好的方式。尤其重要的是数据库方式对于数据的语义表达是局限的。
以用户为中心的模型
以用户为中心的模型更能适合与界面的设计以及间接对系统功能需求和流程的设计。但对于软件开发来讲并没有解决使用什么模型的问题。
这种方法很适合于分析和用户模型建立。可以与其它模型结合使用。
这种模型尤其适合于导航流程/工作流程的分析和设计。
以内容构件为中心的模型(1)
(注,所有关于内容构件技术的图示都将只在此报告中解释但不列入报告所提供的材料之中。)
内容构件的核心是将数据、数据处理(语义)、以及数据的表达形式结合起来的方法。
内容构件模型是互联网软件模型的基础。基于内容构件的互联网软件结构中内容构件与其它部分结合。
其它部分包括基本支撑层(系统调用)、数据仓库管理、和界面表达生成等。
以内容构件为中心的模型(2)
基于内容构件模型在分析阶段可以集中分析应用的机构结构和工作流程。
基于分析的结果,可以直接用来对软件的结构和界面进行设计。实现的方法是基于面向对象技术和构件技术。数据表达方法采用XML。 不再以数据为中心。
为什么互联网应用不同(1)
应用组成部分的不同
--应用中软件的不同部分可能跨平台
--应用中所需要的数据库可能不在本地
--界面媒介与传统软件的不同
--软件需要不同的界面
为什么互联网应用不同(2)
应用开发和运行环境的不同
--开发所需要的环境比较复杂
--开发不同部分需要不同的项目组
--很难构造与运行环境一样的环境
--运行环境需要考虑到开放性
--性能方面的设计考虑目前没有很好的方法来保证
为什么互联网应用不同(3)
质量保证问题的不同
--不仅仅是软件本身的问题
--界面的质量保证是一个很重要的方面
--界面与功能连接的质量保证很难控制
--性能要求的测试很难系统化
--测试本身需要考虑运行环境的开放性
--安全测试不仅仅是应用系统的问题
实例之一:企业内外网站系统(1)
(应用图示三张,略)
--是一个进出口企业
--已经具有很强的内部信息化管理水平
--传统的内部局域网环境不能满足所有需求
--外部互联网站与内部系统没有联系
--电子商务发展需要新的体系结构
--内、外网有必要连接
--内、外网有不同的安全性要求
实例之一:企业内外网站系统(2)
--内部网建立在互联网体系结构上
--B/S结构提供了各个部门协调工作更好的空间和方式
--内部网站是其管理和商务的中心
--内部网站的管理维护更新分散化
--外部网站是内部网站的一部分
--关键性数据资源单独保存
--只需要维护一个数据中心
--内部网站分级和管理
--外部访问分级进行审核
实例之二:企业商务办公系统(1)
(应用图示三张,略)
--是一个基本原料加工为主的集团企业
--还没有建立完善的内部信息化系统
--希望建立其内部办公和生产管理信息化系统
--同时希望对外进行客户服务
--有打算进一步开展电子商务应用
--希望整体上有前瞻性(今后3-5年内先进)
实例之二:企业商务办公系统(2)
--内、外网采取统一结构
--内部网办公系统基于B/S结构
--外部网首先服务客户,今后开展进一步的电子商务,同时作为
不同分公司之间业务联系的接口
--生产管理等系统处于内部网环境之下
--需求分析
--公众界面、管理界面的设计
--界面设计和制作项目管理
--后台软件设计和实现的管理
--质量保证问题
--更新和维护管理问题
需求分析(1)
需求分析目前的主要问题是客户经常并不清晰应用的模式 ,而目前仍然没有很确定和公认的应用系统模式 ,目前可以借鉴一些厂商所提供的解决方案中的部分,核心的问题是应用模式和怎样更好的利用互联网特点
需求分析(2)
应用模式需求分析中,更多的是商务方面的内容,例如对象和服务等。
在应用模式确定下,更多的是确定如下几个方面的具体需求
--公众界面和流程
--管理界面和流程
--系统功能需求
--系统维护管理需求
公众和管理界面设计(1)
典型的公众界面是我们通常通过浏览器所看到的网站部分,包括
--结构(动态和静态)
--导航系统
--形象系统
--内容设计
--功能
公众和管理界面设计(2)
管理界面通常也是通过浏览器进行,但需要有保护的进行访问,包括
--针对公众界面结构所建立的管理维护机制
--对内容的管理
--对功能设置的管理
--对数据资源的管理
--对访问者的数据采集和分析
--经常需要分布式、分级进行管理
界面设计和制作项目管理(1)
--界面设计和制作首先应该从公众界面开始
--公众界面(网站)从根本上讲是动态的,但随应用复杂程度有部分可以静态实现
--公众界面设计和制作更多的是考虑到应用逻辑和流程
--管理界面设计和制作应对应于公众界面结构,但更多的强调的是管理流程
--后台功能应围绕公众界面和应用逻辑(流程)进行
界面设计和制作项目管理(2)
--界面设计和制作项目所涉及人员和类型复杂众多
--界面设计和制作中主要涉及人员为:应用分析师(内容编辑)、形象设计师、制作人员、应用支持工程师、质量保证和项目管理人员
--应用支持工程师是与后台软件开发工程师(组)联系的桥梁
--后台软件系统是整体工程项目的一个部分,界面设计与制作项目管理中包含软件,但具体开发管理和质量保证在软件开发部门内部进 行。界面设计和制作项目管理对软件的管理相当于用户
--界面设计和制作项目管理是通过"项目站点"来进行的
界面设计和制作项目管理(3)
项目站点(Project Site)
--项目安排 项目安排(说明项目人员)
--项目周期
--项目站点最新更新
--需求分析文档
--设计文档,包括内容设计、结构设计、形象系统、导航系统、功能
设计(需求说明)
界面设计和制作项目管理(4)
项目站点的主要组成部分
--问题讨论区
--项目进度安排
--客户浏览区
--内部测试版要求
--测试报告
--改进安排
--客户测试版要求
--客户测试版
--客户意见
--改进安排
--最终确认版
后台软件设计和实现管理(1)
--后台软件系统本身并不能总是组成完成的系统,必须与前台(界面)结合
--界面设计中对功能的设计就是后台软件系统的需求说明
--后台需要在开发中与界面设计保持一致
--保证整体系统应用逻辑和维护逻辑
--只能进行单元和部分系统的综合测试
后台软件设计和实现管理(2)
--后台软件在开发中需要建立开发所需要的平台
--管理方面根据所采用的软件开发方法来确定
--内部需要进行软件基本的测试
--需要特殊考虑的有:session管理、数据库存取、界面生成等
--最好能够与具体数据库分离,可支持多种数据库
--最好能将数据及其处理从界面表达中分离出来
--一般要支持两个流程:工作流程和管理维护流程
后台软件设计和实现管理(3)
--软件完成单元测试和部分集成测试后,其主要的集成测试将与界面结合起来进行
--集成测试进行之前,界面的单元测试也应该进行完毕
--集成测试需要按照黑箱方法进行,需要重点测试:不同单元协同工作、典型流程、界面和软件交接
--很重要的一点是还需要进行试运行,进行其它非功能测试
质量保证(1)
需求分析和设计中的质量保证问题
--对公众工作流程需求
--对管理工作流程需求
--界面数据需求
--界面表达需求
--界面与功能的联系
--功能与数据仓库的联系
--安全和性能要求与设计
质量保证(2)
实现中的质量保证
--构建开发环境和测试运行环境
--各种文件的编写以及对需求和设计文件的验证
--项目进行和衔接安排
--单元测试要求和测试报告
--集成测试要求和测试方案
--非功能性要求的测试要求和测试环境建立
质量保证(3)
集成中的质量保证
--功能测试
--性能测试
--安全测试
更新和维护管理问题(1)
更新和维护的管理对系统运行的效果至关重要。
更新和维护功能的支持对系统运行费用和速度也至关重要
更新和维护的人员设置和技能职责要求
--内容编辑
--设计
--技术支持
更新和维护管理问题(2)
更新和维护的流程
--在线或是非在线更新维护
--分布式或是集中式更新维护
--日常维护流程
--增添内容流程
--修改结构流程
--系统功能设置流程
更新和维护管理问题(3)
更新和维护中所需要的规范
--内容编辑规范
--维护测试规范
--模板设计规范
--交互管理规范
--安全检查规范
--备份规范
本文摘自ChinaByet
……