软件工程师生产数据库系统案例.docx
- 文档编号:29528557
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:9
- 大小:31.96KB
软件工程师生产数据库系统案例.docx
《软件工程师生产数据库系统案例.docx》由会员分享,可在线阅读,更多相关《软件工程师生产数据库系统案例.docx(9页珍藏版)》请在冰豆网上搜索。
软件工程师生产数据库系统案例
某公司生产测试数据库系统案例分析ProductionDatabaseCaseAnalysis
软件工程案例分析报告
一、案例简介
某企业是从事探测器生产的一家中小型外商独资企业,为节省人力成本和原材料成本,于06年开始,由外国总部开始将设计和生产制造中心向国内进行转移,先后在北京、宁波、香港等地建立分公司或分支办公室,并开始拓展大中国区和亚太区市场。
由于所生产的产品需要有极高的技术工艺水平,所以在本地招募高级技术型人才以满足发展的需要。
一切似乎都在意料中进行,但是在06年底产品转移出现严重问题,由于产品的环境适应性能较差,北京这个内陆城市的气候又比较干燥,冬天干冷,生产的环境一度无法保持原有的水平,成品率一落千丈,生产效率严重下滑,公司效益收到直接影响。
一套完善、标准、可行性高、高效率、低成本的解决方案势在必行。
在建设完善的物理环境以保证生产可以正常进行之外,公司领导层还提出了建立一套生产数据库系统的需要,以更进一步的保证生产效率,对于生产和测试流程进行良好的监控和管理,利用技术手段对于失败产品进行错误分析,以便于及时发现生产中出现的漏洞和隐患之后,可以提供最快最好的解决方案。
由于该企业从事业务包括市场分析调研、自主研发、用户定制、生产制造、销售等一条完整的链式流程,所以产品都是基于某特定用户的特定需求来进行生产。
这样的需求在市场上很难有现成的系统或软件产品可以完全胜任该企业生产发展的需要。
所以领导层在经过多次讨论和协商后决定:
自主开发这套生产数据库测试系统,由企业内部的IT人员和软件工程师协同合作,先后进行引导式需求分析、可行性分析、流程设计、概要和详细设计、测试和培训等,开发周期历时8个月。
这套生产测试数据库系统(ProductionTestingDatabaseSystem)基于Linux系统平台,具有一定的可移植性和可扩展性。
由于考虑到成本问题,开发平台基于PHP+Apache+MySQL的黄金组合,开发平台和系统平台符合GPL规范,系统架构成熟,具有一定的安全性、实用性和稳定性。
系统内部的核心测试模块符合该企业现有的业务和测试流程,满足客户的需求,可即时生成报表以便管理层对任意时期或时段的生产和测试情况、良率等指标进行监控和统计,对库存和发货进行管理等。
二、案例分析
(一)系统目前运行状况
该系统目前运行正常,硬件系统可以很好的满足系统的需要,负载均衡。
网络通信流畅。
整个系统平台按照设计的功能在正常的运行。
数据库工作正常,用户可以正常的对数据进行增加、修改以及查询。
备份方案完善。
如果出现停机或拒绝服务等情况,本地管理员会及时查看并修复,如果无法解决,本地管理员有义务或责任把问题升级至公司总部,由远程工程师协助进行远程修复。
综上所述,该系统目前运行良好,所以该案例为成功案例。
(二)标准化的软件开发模型标准化的软件开发模型
1.宏观角度该生产测试数据库系统在宏观角度采用瀑布模型作为软件开发模型。
瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。
将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
从本质来讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是瀑布开发名称的由来。
瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。
其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。
同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。
对于经常变化的项目而言,瀑布模型毫无价值。
该系统在总体的开发和设计角度采用瀑布模型进行参考。
起初在产品转移的阶段由于产品成品率下降严重,给公司的效益带来很大损失。
为了更好的从质量角度监控所有产品的生产流程并有效执行,开始着手制定生产测试数据库系统的解决方案,并制定项目经理。
在制定了自主开发的计划之后,所有的项目开发人员遇到了一个难题——需求分析。
由于是自主研发一整套的软件系统,开发人员必须对整个系统的流程和业务流非常熟悉。
但是在开发之前所有的开发人员并不具备这样的条件,也从来没有在这些方面被培训过。
需求分析是一个软件项目的重中之重,有的比较复杂的项目,需求分析的时间可能占到总开发时间的60%以上。
如果不了解用户确切的需求,便不能开发出一套实用性强且完整的系统。
为了尽量贴合用户的需要,了解细节,在公司和相关领导的大力支持下,在项目开发时间允许的范围内,开发人员以分组的形式到各个所涉及的部门中去学习和实践,亲身了解各个产品的开发流程、测试步骤和生产的方法等,并对今后在软件开发的过程中可能涉及或考虑的问题进行详尽的记录。
在学习和实践中,用户的需求自然而然的被描绘出来。
这其实也是一种引导式的需求分析,在用户不能把需求很完整很明确的表达出来时,开发人员可以借助引导的方式来探知用户的真实想法,并最终把这些想法变成软件模型呈现出来。
这在当今软件工程的需求分析阶段也是一个非常常用的方法。
在进3个月的实践结束后,开发人员开始对在实践中遇到的问题,了解的情况等进行汇总和总结,并找到相关部门的负责人再次进行确认,收集意见和建议。
在质量部门的监管下,着手发布正式的文档和文件。
其中包括《某企业生产测试数据库系统开发项目——需求分析说明书》《某企业生产测试数据库系统开发项目——可行性分析报告》、。
在质量部门同通过验收后,需求分析阶段结束。
由于需求分析阶段全部人员的出色和到位的表现,使得这个项目开了一个好头。
之后的系统概要设计和详细设计阶段就变得相对轻松。
在质量部门的配合下,整个团队严格遵守系统开发的标准化流程,用ISO9000系列质量认证体系作为参考。
按照ISO9126的定义,软件的质量通常可以从以下六个方面去衡量(定义):
1)功用性(Functionality),即软件是否满足了客户功能要求。
2)可靠性(Reliability),即软件是否能够一直在一个稳定的状态上满足可用性。
3)可用性(Usability),即衡量用户能够使用软件需要多大的努力。
4)效率(Efficiency),即衡量软件正常运行需要耗费多少物理资源。
5)可维护性(Maintainability),即衡量对已经完成的软件进行调整需要多大的努力。
6)可移植性(Portability),即衡量软件是否能够方便地部署到不同的运行环境中。
(此部分在此只是先提到,在后续的章节中会详尽介绍。
)开发团队先后进行了硬件平台的搭建和网络设计、数据库设计、用户界面设计等详尽的设计工作。
并在质量部门的协助下,完成并发布了正式的设计文档。
其中包括《某企业生产测试数据库系统开发项目——概要设计报告》、《某企业生产测试数据库系统开发项目——系统详细设计报告》,并由网络管理员撰写《某企业生产测试数据库系统开发项目——搭建生产测试数据库系统的系统运行平台和网络环境指引》在质量部验收后,等。
设计阶段结束。
接下来的工作更为具体,所有的开发人员要从奔走转为安定,那就是——代码的编写和具体应用的实现。
在编写之前,所有的开发人员务必熟读详细设计报告,充分了解其中的内容,统一开发工具的厂商和版本,统一开发方法和开发习惯(如注释的方法等等),以避免在日后的具体开发工作中产生不必要的兼容性问题,确保开发进度。
在代码编写阶段,质量部严格按照ISO9000系列质量认证体系对系统开发进行评估和监管,并按照企业相关发布的对项目控制的文档对工作的开展进行有益的约束。
设置周例会,对本周在工作中遇到的问题进行汇总、探讨和解决,使开发人员明确目前进度以及了解并协助规划下一周的工作开展方向和任务。
每月由项目负责人(项目经理)提交书面开发进度报告并通过电子邮件的方式汇报给公司领导层。
另外,在代码编写过程中,采用开发人员责任制,按功能模块划分,尽可能的少出现错误,完善自己的代码,并设立共享库,尽量提高代码的重用性,大大的节约了开发时间。
代码编写阶段历史大约2个月。
当系统基本成形,开发人员向项目经理提交了代码编写完成报告,由项目经理和质量部门一同向管理层汇报开发进度并开始制定测试计划。
在征求了开发人员的意见之后,由项目经理提交书面的《某企业生产测试数据库系统开发项目——测试计划说明书》,在质量部验收之后,系统测试开始。
由于开发人员有限,该套系统又是面向公司内部使用,所以采用了黑盒测试的方法。
开发人员互换在代码编写阶段自己负责的模块,按照《某企业生产测试数据库系统开发项目——需求分析说明书》进行功能性检测,排除系统BUG。
一旦发现错误,在找到原先的责任人确认之后,及时进行更改。
建立《某企业生产测试数据库系统开发项目——排错列表》,用数字对已存在的BUG进行编号,如果日后再遇到此类问题,可以方便及时地进行查询。
在开发团队内部测试之后,由网络管理员将系统安装上线,完成网络环境的配置,经生产中心领导的同意,挑选生产测试操作人员对系统进行公开测试,依然采用黑盒测试的方法着重功能性检测,并指派开发团队中的人员进行跟踪,一旦发现问题或者与实际需求不符时,立刻和开发团队沟通,能更改的尽量更改,尽量贴合用户需求。
并将所有问题记录在《某企业生产测试数据库系统开发项目——排错列表》中,保证文档的实时更新。
在测试临近尾声的时候,由项目经理提交《某企业生产测试数据库系统开发项目——测试报告》,由相关人员书写《某企业生产测试数据库系统开发项目——用户手册》并开始着手对用户进行培训。
2.微观角度在软件系统开发完毕之后,最重要的工作莫过于对该系统的运维工作。
由网络系统管理员定期检查服务器及网络使用情况,例如系统性能等参数。
保证系统的硬件水平以满足用户的需求。
由数据库管理员(DBA)定期对数据库进行备份和优化,保证系统稳定可靠的运行和数据安全。
另外,开发团队成员则考虑如何进一步的优化系统,以提高系统的可用性和效率。
在软件维护阶段,用户的需求还会根据生产流程的细微变化而膨胀。
由于该企业的产品大多为定制类产品,生产的工艺和技术指标,以及客户的需求难免会有不同,所以如果有新产品的诞生,该生产测试数据库系统还需要为新的产品添加新的模块。
所以在软件的维护阶段,从微观角度讲,在产品模块上开发人员采用了增量的软件开发模型。
增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。
当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。
客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。
增量模型强调每一个增量均发布一个可操作的产品。
增量模型与原型实现模型和其他演化方法一样,本质上是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品。
早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且为用户提供了评估的平台。
增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。
虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。
为了在新的产品生产工艺公布之后能尽快地使系统支持这种产品的测试,也为了提高代码的重用性,节省更新时间和人力资源,开发团队采用产品类型模块化,即相同或相似的产品将有一部分源代码是相同的,这样可以很方便的在短时间内把模块移植以适应新产品的需要。
这也就是我们常说的软件工程开发中的复用原则。
在新模块上线之后,将更新某企业生产测试数据库系统开发项目系列文档及《用户使用手册》。
软件工程从计划到实现再到最后的运维工作,积聚着很多人的辛勤努力和汗水,在公司领导的支持,质量部门的协助配合下,项目经理带领开发团队,采用规范的开发标准,圆满的完成了这个历史8个月软件工程项目。
(三)ISO9000系列质量认证体系
该项目涉及公司大部分的业务链,其中包括设计和研发、测试和生产、发货等。
在开发人员需要深入了解系统相关的部门所涉及的业务之外,质量部门也通过ISO9000系列质量认证体系对该项目的开展和实施进行了标准化的监管。
由于开发周期历时8个月,在项目开发的过程当中,还经过了公司每年一次组织的内部审核和审核机构每年进行一次复查,即监督审核。
通过ISO9000系列质量认证体系的审核之后,为这个项目注入了新的血液,审核的专家对此做出了一些建设性的建议和意见,在考虑到这些问题之后,整个系统的架构更加合理,功能也更加完善。
1.严格遵守ISO9000系列认证规定的软件产品质量特点上文已经提到:
按照ISO9126的定义,软件的质量通常可以从以下六个方面去衡量(定义)。
1)功用性(Functionality),即软件是否满足了客户功能要求。
在功能性方面,开发人员对用户需求进行调研并亲身实践,从目前的使用状况来看,该系统完全满足企业用户的功能要求。
2)可靠性(Reliability),即软件是否能够一直在一个稳定的状态上满足。
该系统采用成熟工具和技术作为开发平台,利用Linux作为系统平台。
基于B/S架构,可为用户提供24小时全年不间断的服务。
由于公司的生产部门为24小时倒班制,所以24小时都会用到该套系统,从目前的使用情况来看,该系统的稳定可靠性完全可以适用企业发展和生产的需要。
(3)可用性(Usability),即衡量用户能够使用软件需要多大的努力。
友好的用户界面,直观地操作方式,在对用户进行简单的培训之后,用户可以很容易的上手并熟练操作。
如果遇到问题,可及时向管理员或相关人员咨询,并能获得最快的答复。
4)效率(Efficiency),即衡量软件正常运行需要耗费多少物理资源。
目前在系统硬件架构上,采用2台服务器,即主服务器(master)和从服务器(slave),主服务器采用双核心CPU,挂有8G内存,硬盘采用SCSI可插拔式,并做有同步镜像RAID1,以确保数据安全。
从服务器主要用于网络备份和资源共享,DoubleCheck(每天的差异备份和每周一次的完全备份)的备份模式再次确保数据万无一失。
并从服务器被置于另一物理机房,实现了异地备份,以预防火灾、地震等物理事故引起的数据灾难性损失事故。
5)可维护性(Maintainability),即衡量对已经完成的软件进行调整需要多大的努力。
目前该系统有专人维护,系统一旦瘫痪,停机时间不超过30分钟。
6)可移植性(Portability),即衡量软件是否能够方便地部署到不同的运行环境中。
在软件工程计划阶段,考虑到公司成本问题和可移植性的问题,该系统软件开发采用了跨平台切开源的工具来架构系统,PHP,Apache,MySQL,还有基于GPL的linux系统平台,均为该系统提供了最好的可移植性能。
可以任意方便的部署在Windows系列、Unix,或是其他Unix-Like的操作系统上。
2.文档发布的重要性对开发文档的评审是产品检验的重要方式,由于软件是在计算机上执行的代码,离开软件的安装、使用说明文档等则寸步难行,所以开发过程中的很多文档资料也作为产品的组成部分,需要像对产品一样进行检验,而对文档资料的评审就构成了产品检验的重要方式。
该系统严格遵守文档发布的规范,在质量部门的监管下,在开发过程的各个阶段提交相关文档,对软件产品的设计、编码、测试等核心环节提供了有力的保障。
3.大型软件开发流程ISO9000认证体系中规定的软件开发流程如下,,采用螺旋式增量开发方式。
本项目也遵照这种开发流程进行开发,图中1~7是各阶段的输出点,也是质量控制点,有相应的输出文档和软件代码,均需要得到QM(QualityManager)的确认和验证后,才可以发布。
除了上述7个阶段外,还有项目管理(PM)、变更控制、需求控制、文档控制、用户满意度管理等流程贯穿全部阶段。
4.严格的质量管理体系1)管理层该企业对于项目的开展和实施有严格的制度规范,实施ISO9001,总经理亲自制定企业的质量方针和质量目标,配备足够的人力、物力资源,明确各岗位的质量职责,并保证质量体系的运行。
质量方针要反映对用户的承诺。
公司的质量方针是:
-公司确保通过与客户长期互利的合作达到顾客满意。
-公司为确保达成此目标,设计生产满足或者超越客户需求的产品。
-致力于运营质量的持续改善。
-管理层决定每一个过程的可量度的质量目标。
-总经理确保质量方针在公司范围内得到理解,实施和保持。
从技术、管理、产品质量和满足顾客方面做出了承诺。
总经理通过管理评审对公司的质量体系是否适用、有效做出评价,这样就从组织上保证了质量体系的运行.实施ISO9001还建立了文件化的操作规程,即根据ISO9001标准的要求,建立了程序文件、操作指导书和质量记录,对公司运行的主要过程规定了操作的规范,并在工作中严格执行。
对ISO9001的审核,一是看企业的运行流程规范是否包括了ISO9001标准的要求,二是看这些流程是否被有效执行。
对开发人员、测试人员和内审员进行各自专业的培训,是质量体系运行和产品质量的保证。
公司内部还经常进行技术培训和质量培训。
2)质量部门由于软件质量管理的专业性和复杂性,公司实行“检、监、控”三分离的职责设置:
“质量检验”部门是“系统测试部”,负责软件质量的检验(功能、性能测试、回归测试等);“质量管理部”的角色和功能定位为:
在管理者代表的领导下,独立于项目的运行之外,规划、监督、指导和改进项目质量的运行,检查开发结果是否符合规定,可以更全面、客观、公正地观察项目的运行。
3)项目管理人员(PM)项目管理人员的职责包括:
-项目相关信息的交汇者,也是项目信息的最终发布者;-帮助项目组成员明确各自的职责;-跟踪项目组成员的工作情况;-跟踪项目的进展情况;-制定详细的项目计划,并获得相关职能部门经理的认可;-项目实施过程中有关统计数据的收集、整理;-向管理层汇报项目状态。
在该项目中,项目经理(PM)的工作非常到位,在控制项目进度,项目实施过程中对相关数据的收集整理非常到位。
三、总结
该项目历时8个月,最终取得圆满成功。
目前已经正式上线一年多,系统正常运转,为公司生产效率的提高起到了至关重要的作用,大大地减轻了操作人员的负担和压力。
项目的成功和所有参与项目的工作人员的辛勤努力是分不开的。
首先是公司大环境和领导层的支持,并具有一套完整、规范、正式的质量控制标准。
其次当然离不开质量部门的积极配合和支持,对项目的有益监管,文档控制,如果没有他们的努力工作,项目则有可能出现相对混乱的情况。
这样势必会影响项目的质量效果和进度。
第三,项目经理严格负责,跟踪项目的实时状态,作为项目的负责人,对项目有积极的推动作用。
第四,开发人员的辛勤工作和端正的态度当然是不可或缺的,他们的工作态度直接决定项目的质量和水平,他们的技术素质对项目在期限之内完成有巨大影响力。
他们明确的了解用户需求,并亲身到各部门去了解生产流程和测试情况,服从标准化的开发模式,配合其他部门的协同合作,都是项目成功的必要基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程师 生产 数据库 系统 案例