软件工程及实践报告
时间:2025-12-13 作者:工作汇报网软件工程及实践报告(分享十篇)。
❖ 软件工程及实践报告 ❖
一、选题背景
当今的互联网服务面临着许许多多的挑战和千变万化的需求,其中就包括需要管理海量的数据,并且能为高速增长的用户群提供持续可依赖的服务。这里所说的互联网服务包括了诸如在线邮箱、搜索引擎、在线游戏、在线金融系统、内容分发网络、文件共享网络等等。因此,能提供这些互联网服务的系统往往很庞大:由成百上千台机器组成,并且这些机器可能在同一个数据中心里,也可能分散在不同的数据中心,之间通过不可依赖的网络进行通信。在具有如此巨大的扩展性的集群中,错误的发生变的很常见:一部分机器可能随时会遇到硬件或者软件故障;网络延迟和网络故障随时可能发生,导致丢包、网络分区等情况;偶发的恶意攻击或是操作错误,也有可能导致不可预测的灾难性错误发生。所以,构建这种系统的软件往往很复杂,同时,每隔一段时间,系统都需要进行一定的修改(升级)以提升性能、修改错误或增加新的功能。本文工作所面临的最基本的问题就是如何有效地设计一种工程上可行的升级方案,使得这种规模的分布式系统能在升级期间能持续地提供服务。
二、研究目的和意义
时下云计算十分火爆,各种互联网公司、银行、政府都经常提及云计算,各种各样的分布式系统也层出不穷,不论是著名的大型分布式产品的开源项目诸如Hadoop、Open Stack、Mongo DB等等,又或者是国内外的著名的云计算服务提供商Amazon AWS、Microsoft Azure、阿里云们,云计算早已从纸面或者是宣传标语中,走向了实实在在的落地阶段。但是,针对云计算抑或是分布式系统中一个比较具体的问题的相关研究,尤其对于国内的相关领域而言,却是比较缺少的,国内工业界的著名厂商们似乎都在闷头造车,分享出来的解决云计算工程中实际具体问题的论文和研究成果依然较少。本人深知自己的能力有限,仅得益于研究生期间的一些实习经历,结合工程实际,尝试对分布式系统的升级和数据迁移问题做一些总结和提炼的工作,并且有一定的创新。
三、本文研究涉及的主要理论
分布式系统是其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的软件系统[2]。分布式系统是一个统称,常见的有分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库(存储)系统等等。本文所面临的升级和数据迁移的问题涉及到更多的是分布式存储系统,分布式存储系统的定义如下:分布式存储系统是大量的普通的PC服务器通过互联网互联,对外作为一个整体提供存储服务。也可以说,那些以数据存储和访问为目的而设计的分布式系统称之为分布式存储系统。与普通的软件系统不同,分布式存储系统具有以下几个特性,理解这些特性对解决本文所提出的问题具有基础性的意义。
扩展性:分布式存储系统的扩展性是最重要的优势,往往可以扩展成百上千台的规模。同时随着集群规模的增长,其系统整体性能表现为线性增长。并且,可以根据一定的策略将数据和请求分配到不同的物理节点,物理节点的数目和集群处理能力成正比,集群是线性可扩展的。同时,集群能否扩展,可否线性扩展是衡量分布式存储系统的一个重要指标。
低成本和高性能:分布式存储系统具有的自动容错、自动负载均衡机制使其可以构建在普通的PC机之上。另外,线性扩展能力也使得增加、减少机器非常方便,可以实现自动运维。因此,对整个集群而言,分布式存储系统具备高性能。
数据分布:分布式存储系统区别于单机存储系统最大的特点是它可以按照一定方法进行数据切片,不同的物理节点分布不同的数据分片,从而将系统的存储容量压力和访问请求压力分散到系统集群的各个物理节点上,使系统整体能够存储超大规模的数据量,同时能够接受更多的并发请求。那么如何将数据分布到多台服务器才能够保证数据分布均匀?数据分布到多台服务器后如何实现跨服务器读写操作?
常用的数据分片和分布方法有两种:
a.哈希分区方法,即根据数据的Key进行哈希取模,离散的分配到集群的物理节点上,Amazon的Dynamo采用了一致性哈希算法进行分区;
b.连续分区方法,即将整个数据集合按照key来排序,根据key的范围进行分片。
❖ 软件工程及实践报告 ❖
一、判断题(每题2分,共30分)
1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(对)
2.数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。(错)
3.JAVA语言编译器是一个CASE工具。(对)。
4.软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。(错)
5.软件模块之间的耦合性越弱越发。(对)
6.数据库设计说明书是一个软件配置项(对)
7.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。(错)
8.过程描述语言可以用于描述软件的系统结构。(错)
9.如果通过软件测试没有发现错误,则说明软件是正确的。(错)
10.快速原型模型可以有效地适应用户需求的动态变化。(对)
11.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。(对)
12.集成测试主要由用户来完成。(错)
13.确认测试计划应该在可行性研究阶段制定(错)
14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。(错)
15.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。(对)
二。单选题(每题2分,共20分)
1.瀑布模型的关键不足在于(2)
(1)过于简单(2)不能适应需求的动态变更(3)过于灵活(4)各个阶段需要进行评审
2.在面向对象软件开发方法中,类与类之间主要有以下结构关系(1)
(1)继承和聚集(2)继承和一般(3)聚集和消息传递(4)继承和方法调用
3.以下哪一项不是软件危机的表现形式(3)
(1)成本高(2)生产率低(3)技术发展快(4)质量得不到保证
4.以下哪一项不是面向对象的'特征(4)
(1)多态性(2)继承性(3)封装性(4)过程调用
5.面向对象模型主要由以下哪些模型组成(1)
(1)对象模型、动态模型、功能模型(2)对象模型、数据模型、功能模型(3)数据模型、动态模型、功能模型(4)对象模型、动态模型、数据模型
6.软件可行性研究一般不考虑(4)
(1)是否有足够的人员和相关的技术来支持系统开发(2)是否有足够的工具和相关的技术来支持系统开发(3)待开发软件是否有市场、经济上是否合算(4)待开发的软件是否会有质量问题
7.软件维护的副作用主要有以下哪几种(3)
(1)编码副作用、数据副作用、测试副作用(2)编码副作用、数据副作用、调试副作用(3)编码副作用、数据副作用、文档副作用(4)编码副作用、文档副作用、测试副作用
8.软件项目计划一般不包括以下哪项内容(4)
(1)培训计划(2)人员安排(3)进度安排(4)软件开发标准的选择和制定
9.以下哪一项不属于面向对象的软件开发方法(3)
(1)coad方法(2)booch方法(3)jackson方法(4)omt方法
10.以下哪种测试方法不属于白盒测试技术(2)
(1)基本路径测试(2)边界值分析测试(3)循环覆盖测试(4)逻辑覆盖测试
三。简答题(每题5分,共25分)
1.分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加
1 个要点1分,只要答上5个要点得5分!
2.说明结构化程序设计的主要思想是什么?
答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单入口、单出口来构造程序。(3分)
3.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?
答:(1)单元测试,测试对象对单元模块(2分)(2)集成测试,测试对象为组装后的程序模块(2分)(3)确认测试,测试对象为可运行的目标软件系统(1分)
4.需求 分析与软件设计二个阶段任务的主要区别是什么?
答:需求分析定义软件的用户需求,即定义待开发软件能做什么(2.5分)
软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。(2.5分)
5.说明软件测试和调试的目的有何区别?
答:测试的目的是判断和发现软件是否有错误(2。5分)调试的目的是定位软件错误并纠正错误。(2.5分)
❖ 软件工程及实践报告 ❖
2.2软件开发的基本策略
人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。
2.2.1复用
复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。
复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。
把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。
将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。
软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。
2.2.2分而治之
分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?
图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。
2.2.3优化——折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。
著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。
就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。
软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。
人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。
下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。
问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?
解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。
2.3一些不正确的观念
本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。
观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。
客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。
观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。
客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。
观念之三:如果我们落后于计划,可以增加更多的程序员来解决。
客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。
观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。
客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。
2.4一些有争议的观念
本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。
争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。
类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。
争议之二:有最好的软件工程方法,最好的编程语言吗?
作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。
程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。
争议之三:编程时是否应该多使用技巧?
作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。
《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。
争议之四:软件中的错误是否可按严重程度分等级?
作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。
一级严重:错误导致软件崩溃。
二级严重:错误导致一个特性不能运行并且没有替代方案。
三级严重:错误导致一个特性不能运行但有替代方案。
四级严重:错误是表面化的或是微小的。
表1.1 错误的四个等级
上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。
开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。
2.5小 结
软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些
思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。
3程序员与程序经理
工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。
我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”
不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:
(1)项目经理对软件一无所知;
(2)技术负责人对编程不感兴趣;
(3)真真编写代码的程序员是临时雇用的。
如果上述三个条件同时具备,就请放心失败好了。
让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。
3.1了解程序员
早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。
❖ 软件工程及实践报告 ❖
1.软件工程:是指导计算机软件开发和维护的工程学科
2.软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
3.软件过程:是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤
4.软件生命周期:是指从软件定义、开发、使用、信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存 储。
23.软件危机有那些典型表现?
(1)央一个索引号)。
针对若干个不同的NAME重复执行上述命令序列。
⑫测试系统非正常操作的测试数据 ①用过长的关键字作为命令b的参数:例如,b(reliability software and hardware combined)
预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能性被截预期的输出:X=1,Y=20,Z=3 ④ 3个判定表达式依次为假、真、真 输入:A=1,B=40,C=60 预期的输出:X=1,Y=20,Z=30 ⑤ 3个判定表达式依次为真、假、假 输入:A=20,B=1,C=1 预期的输出:X=10,Y=2,Z=3 ⑥ 3个判定表达式依次为真、假、真 输入:A=20,B=1,C=60 对软件开发成本和进度的估计常常很不准确。维护到淘汰的全过程
5.软件工程环境:方法与工具的结合,加上配套的软、硬件支持称为软件工程环境
6.模块:是数据说明、可执行语句等程序对象的集合7.模块化:是按规定的原则将一个大型软件分为一个个较小的、相对独立但又相关的模块
8.耦合:是对一个软件结构内不同模块之间互连程度的度量
9.内聚:标志着一个模块内各个元素彼此结合的紧密程度
10.结构程序设计:如果一个程序的代码块只有一个入口和一个出口,则称这个程序是结构化的11.实现:通常指编码和测试
12.软件可靠性:是指程序在给定的时间间隔内,按照规格说明书的规定成功地运行地概率
13.集成测试:是测试和组装软件的系统化技术 14.软件维护:是指软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程
15.对象:在应用领域中有意义的、与所解决的问题有关系的任何事物
16.对象模型:表示静态的、结构化的系统的“数据”性质
17.功能模型:表示变化的系统的“功能”性质 18.面向对象分析:就是抽取和整理用户需求并建立问题域精确模型的过程
19.重用:是指同一事物不作修改或者稍加改动就多次重复使用
20.可行性分析包括:技术可行性、经济可行性、操作可行性
21.北京某高校可用的电话号码有以下几类:校内电话号码由 4 位数字组成„„定义上述电话号码
电话号码=[校内电话号码|校外电话号码]
校内电话号码=非零数字+ 3 位数字 //后面继续定义 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8 位数字
外地号码=数字零+3 位数字+8 位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0位数字=3{数字}3//3 至 3 个数字 8 位数字=非零数字+7 位数字 7 位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9]
22.目前住院的病人主要由护士护理,这样做不仅需要大量护士„„写出问题定义,分析可行性 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告
(2)用户对“已完成的”软件系统不满意的现象经常
发生。
(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例
逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算
机应用迅速普及深入的趋势
25.银行计算机存储系统的工作过程大致如下:„„请用数据流图描绘本系统的功能,并用实体—联系图描绘系统中的数据对象 26.复印机的工作过程大致如下:未接到复印命令时处于闲置状态„„请用状态转换图描绘复印机的行为
27.用面向数据流的方法设计下列系统的软件结构
(1)机票预定系统(2)患者监护系统 28.耦合包括数据耦合、控制耦合、公共环境耦合、内容耦合29.内聚包括功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚
30.美国某大学有200名教师,校方与教师工会刚刚签订一项协议。按照协议„„
31.画出下列伪代码的流程图,计算它的环形复杂度
32.某图书馆有一个使用CET
终端的信息检索系统,该系统有下列4个基本检索命令:
(1)设计测试数据以全面系统的正常操作
(2)设计测试数据以测试系统的非正常操作
解:⑪测试系统正常操作的测试数据 ①顺序执行下列3个命令:b(KEYWORD)s(L)d(N)
其中KEYWORD是正确的关键字;L是执行命令b后在屏幕上显示的约20个行号中的一个(至少应该使L分别为第一个、最后一个和中央一个行号);N是执行命令s后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。
针对若干个不同的KEYWORD重复执行上述命令序列。
②顺序执行下列2个命令:f(NAME)d(N)
其中,NAME是已知的作者姓名;N是执行命令f后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中
短为reliability software
②用不正确的关键字作为命令b的参数:例如,b(AARDVARK)
预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示 1.AARON,JULES(book)③用比执行命令b后列出的最大行号大1的数作为命令s的参数
预期的输出:“命令s的参数不在行号列表中”
④用数字和标点符号作为命令b和命令f的参数
预期的输出:“参数类型错”
⑤用字母字符作为命令s和命令d的参数 预期的输出:“参数类型错”
⑥用0和负数作为命令s和命令d的参数 预期的输出:“参数数值错” ⑦命令顺序错:例如,没执行命令b就执行命令s,或没执行命令s就执行命令d 预期的输出:“命令顺序错”
⑧命令语法错:例如,遗漏命令名b、s、d或f;或命令参数没用圆括号括起来 预期的输出:“命令语法错” ⑨命令参数空:例如,b()、s()、d或f()
预期的输出:系统提供默认参数或给出出错信息
⑩使用拼错了的作者姓名作为f的参数 预期的输出:“找不到这们作者的著作”
33.(2)答:经验表明,在类似的程序中,单位长度
里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常
0.5X10-2≤ ET/IT ≤2X10-2
也就是说,在测试之前每1000条指令中大约有5~20个错误。
假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为
5000X10/1000=50(个)(3)① 使3个判定表达式之值全为假 输入:A=1,B=1,C=1 预期的输出:X=1,Y=2,Z=3 ② 使3个判定表达式之值全为真 输入:A=20,B=40,C=60 预期的输出:X=10,Y=20,Z=30 ① 3个判定表达式之值全为假 输入:A=1,B=1,C=1 预期的输出:X=1,Y=2,Z=3 ② 3个判定表达式依次为假、假、真 输入:A=1,B=1,C=60 预期的输出:X=1,Y=2,Z=30 ③ 3个判定表达式依次为假、真、假 输入:A=1,B=40,C=1
预期的输出:X=10,Y=2,Z=30 ⑦ 3个判定表达式依次为真、真、假 输入:A=20,B=40,C=1 预期的输出:X=10,Y=20,Z=3 ⑧ 3个判定表达式全为真 输入:A=20,B=40,C=60 预期的输出:X=10,Y=20,Z=30 34.软件的可维护性与哪些因素有关:软件的可理解性、可测试性、可修改性、文档描述符合要求、用户文档简洁明确、系统文档完整并且标准
35.面向对象方法是一种运用对象、类、继承、封装、聚合、消息、多态等概念来构造系统的软件开发方法。
面向对象方法的优点是:符合人们习惯的思维方式、稳定性好、可重用性好、可维护性好、容易开发大型的软件产品
❖ 软件工程及实践报告 ❖
1 概述
实习是一种实践,是理论联系实际,应用和巩固所学专业知识的一项重要环节,是培养我们能力和技能的一个重要手段。八月初,我们来到大连东软实训中心进行为期20天的实习,我们要做的是物流配送管理系统,我要做的是配送中心管理模块。它的主要功能是完成对商品、库房和供应商的管理,缺货查询和进货安排。由于大家负责不同的模块编写,作为组长的我需要充分考虑各个模块之间的交互,系统风格一致性等问题。
为此,项目启动之前我们小组6人开会讨论了整体的业务流程,明确了数据库表之间的关联和各个模块之间的接口。在项目验收阶段我们顺利地通过了答辩,圆满完成了预期目标,虽然和优秀的小组开发的系统还有一些差距,但是我们发挥了每个人的能力,结果也令我们满意。
2 感受与体会
在为期20天大连东软实训中心的实习过程中,我每天都感觉很充实,从基础知识的巩固,项目整个的开发过程,我都认真学习,勤于思考,并且不断动手实践,我感到收获很大。
这是我们在学习专业课程之后走向工作岗位之前的 不可缺少的实践环节。它对于培养我们的动手能力有很大的意义。这次实习旨在培养学生综合运用所学的软件工程专业基础理论、基本技能和专业知识分析问题和解决问题的能力,培养我们的专业素质、应用科学的思维方法和计算技巧,使我们明白科学研究工作的一般程序和方法,撰写科技论文的能力;培养我们直接参与科研活动、科研文献和资料的调研,对研究工作以及相关的研究结果分析、综合的能力;重点培养我们积极的创新精神、严肃认真的科学态度和严谨求实的工作作风,增强我们的综合素质以及对毕业后工作岗位的适应能力;有利于扩大我们的知识面,并掌握一些软件工程技术的发展前沿。
这次实习让我们走出校园,切身体会公司的企业文化,感受到了和学校里面不一样的学习方式和氛围,也可以从中学到很多社会经验,明白了很多行业需求和动态,使我们视野更加开阔。
我是JAVA开发方向的,前一周时间主要是老师给我们讲解JAVA的基础知识,Web实用页面的设计方法,ORACLE数据库的使用,这些知识有些我们在课堂上学过,这次是系统的讲解,为我们之后的项目开发打下了良好的基础。
对于像我这样软件工程专业的学生,JAVA语言是我们的立身之本,然而在学习的过程中我发现自己的基础知识掌握不是很牢固,学过的知识存在遗忘的现象。就像老师强调的那样,我需要注重学习的细节,不能模棱两可。
在Web开发技术是我的薄弱环节,以前只知其然不知其所以然,在讲解过程中,我明白了在JavaEE框架下对于一个B/S架构的网络应用程序是如何基于HTTP协议进行通信的。掌握了请求和响应是如何发送和处理,过滤器的使用,Session技术原理等等。
之后我们6个人一组开始了项目开发。我们要做的是物流配送管理系统,物流配送管理系统是一套专门针对配送行业实现销售管理的软件系统,全面适用于物流配送领域中的各级各类经营企业。时间紧任务重,对我们来说是个不小的挑战。我们先根据需求确定功能点,根据功能点我们搭建了每个模块的静态界面,通过实现前台跳转我们逐渐明晰了流程,也顺利通过了评审。
在开发过程中我们也遇到了很多问题,由于小组6个人实践能力不同,大家的进度就很难统一。还有一个就是版本控制的问题,为了避免工程修改冲突,我们为每个人建立了了自己的开发包,大家将自己开发的文件放置其中。我们用到的Struts和Hibernate框架里面有些文件需要公用,这样我们决定在项目整合的时候统一修改。这样我们就避免了很多不必要的麻烦。
由于我们选用了我们比较熟悉的开发工具和框架,所以我开发起来比较流畅,技术上没有遇到太大的问题。在开发过程中我们建立了很好的信任关系,良好的沟通机制,让我们每个组员有问题马上分析和解决。我们也充分体会到了,团队合作开发中每个人应该承担不仅仅是自己的责任还有团队的利益。
在实习过程中,实训中心还为我们安排了几次专题讲座。在项目管理和质量管理讲座中,张老师为我们讲述了软件行业一条非常重要的项目管理标准—— CMMI,能力成熟度模型。它用于指导软件公司开发出合理高效的产品。我们需要掌握这些标准,使自己的技术和方法在以后的工作中处于行业的领先地位。通过职业生涯规划的讲座,我深切明白到生涯规划是确定人每个阶段发展的方向,立足于本职工作,不断自我管理,最终达到职业目标的一种方法。还有面试技巧训练,这些对于目前尚未走向工作岗位的我们大学生来说,是大有裨益的。
3 总结
这次实习让我理论联系实际,在团队软件工程的开发、数据库的设计、分析问题解决问题的能力上有了很大的提升,积累了开发经验,达到了实习效果,让我得到了难能可贵的锻炼。
❖ 软件工程及实践报告 ❖
1 企业概述
1.1 企业发展简史
开封天一软件科技有限公司(原河南省开封市王子科技公司)是经国家工商管理机构注册批准的一家专门从事企业软件开发与办公信息化建设的高科技企业,公司拥有一批经验丰富、技术精湛的系统设计、实施及售后服务人员;公司拥有雄厚的技术实力和核心自主知识产权,能为企业提供从技术咨询到解决方案;从电脑设备供应到软件产品定制;从软件操作培训到售后维护服务等全过程的高层次优质服务。
公司自主研发的软件产品涵盖了企业办公、财务管理、互联网应用、服务器出租、服务器托管、进销存管理、工业控制,仪表数据采集与测控,人工智能等多种商业领域。公司本着“采用先进技术和平台,提供高效、稳定的软件系统”的产品质量方针和“一切以用户为中心”的企业服务理念,与您共同推动我国企业的信息化建设。
1.2 企业现状
一个没有优秀民族文化的民族,不能自强于世界民族之林;同样,一个没有优秀企业文化的企业也不能自强于强烈的市场竞争之中。天一软件科技有限公司将禀承“用户至上、用心服务”的服务理念,创建独具特色的国际化IT企业文化,借鉴中外软件企业的成功经验,与国内外友商精诚合作,紧趋世界信息技术发展潮流,致力于民族软件业的腾飞,向着成为中国一流的国际化IT企业的目标迈进!为了实现“让客户尽情享受信息新生活”的企业使命,天一软件着力进行业务与服务创新,持续不断地向广大客户推出科学、适用的业务,较好地打造了业务品牌的形象和优质服务形象,理念先进、功能完善的天一综合短信系统系列产品,天一商务领航平台、天一统一充值平台等系统逐渐深入客户的实际应用,提升客户感知的进程没有终点,福富软件以创新的精神推出业务、服务客户的追求永无止境。
天一软件强调以人为本,认为对员工的投资是最重要的投资,通过对员工的培训提高员工的技术能力,并在平时通过多个方面让员工随时随刻感受到盛鸿这个大家庭的温馨、友爱。
创新是一种积累。不积跬步,无以至千里;不积小流,无以成江海。我们的邻国日本战后一片狼籍,但是凭着“每天PDCA,每天进步1%”的精神,一点一滴的创新,终于成就了一个科技和经济强国。创新不是海市蜃楼,她就在我们身边,伟大的创新也许当初只是一个看似很傻的念头,但如果当初没有人插上翅膀想飞却飞不起来,有怎么会有今天的飞机呢公司将创新理念运用在公司的发展,项目的开发当中。天一当前的创新重点在于业务创新、技术创新、管理创新,提倡大胆创新,不怕失败,“莫以善小而不为”,从工作中的每个细节入手,从一点一滴做起,让创新逐渐成为习惯。
2 实习过程
最为一个软件开发技术公司,不同于一般的那种严肃的气氛,天一中给人的感觉是比较的宽松,公司的人情味也比较浓。对于我们这一批参加暑期社会实践短期活动的在校学生,也都按照一般公司的标准要求我们,当然在这期间对我们的待遇,如:伙食、上下班的班车接送、业余文体活动等,也对我们一视同仁,这也是我们真正的体验该公司的生活工作提供了不小的帮助。
这种气氛,加上先前进入公司的师兄师姐,以及其他的热心的老员工的帮助,使我们几个很快的融入了这个公司中,在工作中更好的与周围的同事的进行交流、合作;在工作之余我们也参加了公司组织的一些文体活动,如羽毛球、卡拉OK等。
2.1环境适应
这次的社会实践活动,每个人都有一个很明确的任务,所以意味着我们不可能如以往的简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这一个多月必将是一个繁忙的一个星期,也必将是一个充实的,进步的一个星期。下面介绍的是我们在公司的生活与工作中所遇到的一些困难,还有我们一般的生活工作时间安排以及具体的工程开发内容。克服困难,养成良好的工作生活习惯。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如工程阶段比较繁多,但时间又比较的短。
由于我们可算是第一次正式的参与企业的开发,在经验、知识上必然是有所欠缺,所以在开始阶段我们主要都是了解项目的背景知识,进一步学习基本的一些项目原理等。而后要进行设计工作,然后才是真正的工程开发过程,还有调试过程。再由于我们只是短期的社会实践工作,为了所做的工作在以后能真正为人所用,我们在走之前还要留下完善的相关文档。短短的一个星期,要分成这么多的阶段,而任务就摆在那,每一阶段的时间可想而知是多么的宝贵。
由于时间比较的紧。在这段时间我们既要看文档、又要搞设计,既要编程序,又要测试,还要编写整理对应文档。所以有时是每天中午都没得休息赶着的干,下午下了班,别人都回去了,我们还在那儿加班,一直到晚上9点多,才坐上公交车花一个小时回住处休息。大家常常是坐在车上就睡着了。
另一方面,由于公司没有给我们解决住宿问题,我们刚开始是在在公司同学的帮助下在体育场附近找的一个地方住着,后来又找了个地方,但还是在那一块。虽然是坐在公司的班车上班,但由于是班车的第一站,很早就要上车,每天6:30就得起床。而在公司中午1:00上班,原来在学校的午睡习惯也只能去掉了,所以为了保持上班时有旺盛的精力,我们一改在校晚睡得习惯,每天晚上回去10:30就会睡觉。这样的一坚持就是一个星期,虽然是苦了一点,但我想这也无形中让我们培养了一个良好的作息习惯。
而在这一个多月中,我们基本做到按照公司正式员工的标准来要求自己,跟他们一样的上班时间,遵守一样的规章制度,保持旺盛的工作动力。一般是每天工作7个半小时,从8:45-12:00和13:00-17:15。当然有时候为了赶进度我们会在晚上或周末加一下班,而在相对比较轻松的阶段,特别的是在初期时,我们也会在工作中,找机会多学一些相关的知识。
2.2具体的工程开发内容
由于我们四个人分别的加入了三个不同的项目开发小组,以下是他们对于这次工作的一个小小的总结:
我们于今年的暑假去天一软件进行社会实践,所做的项目为ST(系统测试)部门的MR(Modify Request)系统,MR系统为ST部门的最常用软件,是进行软件测试的必备工具,由于原有的工具已经不能满足现在的要求,我们将利用更新的技术,基于新的需求分析,重新编写该应用软件,该软件采用流行的Web_Browser的结构,利用ASP SQL Server来实现整个系统,整个开发过程完全采用现代软件工程的方法来监控整个软件的质量。第一步的需求分析由朗讯公司提出,并做出了相应的Tier2文档。第二步的系统设计和数据库建模由我和另一位同学完成及相应的Tier3,其中经历了数次反复和review最终得到了一个完整的Tier3文档,第三步为coding,由于有前两步的基础,此步骤得以很快的完成。最后的软件通过了ST部门的专门测试,最终得到了部门经理的好评。
通过这一次社会实践,使我们在课堂上学习到的抽象的软件工程的理论有了一次实践的机会,经历了正规的软件过程,而且给了我们一次难得的与人合作的机会,相信这一切对我们将来从事大型软件开发都将是难得的财富。
TMS(Task Management System)项目管理系统
这个系统是由同事独立完成的,以下是他对于这次作的一个小小的总结:
在暑假期间,我到了天一软件科技有限公司实习,在软件部(SW部门)负责基于web的项目管理系统的开发工作,即TMS(Task Management System)。
开发这个系统的目的是为了管理天一软件公司SW部门现在正在开发的发展情况,以方便管理者和项目的参与者之间的协调。开发的系统应该能够跟踪项目的最新进展情况。
在这个系统里,最上层的对象是项目,下面分成若干子项目:子项目下又分成若干Task(任务)(Project-Sub_Project-Task)这样的层次结构。对应于项目(Project)有项目主管PM(Project Manager),对应于子项目,有Team Leader;对应于任务,有Task Owner、Task Member、Task Reviewer。PM负责添加、修改项目和子项目,以及添加上面所述的他以下的任何角色。上面的角色能加下面的角色,而下面的角色不能加上面的角色。TeamLeader负责子项目的管理(添加,修改,等等)。TaskOwner负责自己的一个或多个Task,定时向PM作报告(通过程序设置的时间发送定制的Email)当一个Task完成后,PM检查,确认后就结束此一Task并向所有的人(SW部门的人)发程序定制的邮件。当所有Task,Sub_Project都完成或部分、全部被取消后,整个项目就结束了。
整个系统用Web形式显示和使用。采用Active Server Pages即所谓ASP技术。数据库采用Oracle数据库,采用OLE连接远程数据库(TMS和数据库不在同一台机器上)。
虽然实践的时间比较的短暂,但我还是有了不小的收获,最大的收获是了解了一些软 件开发的程序化生产过程。还有就是能有机会向SW部门的职员的一丝不苟、兢兢业业的敬业精神学习。相信这些都将给我以后的学习和工作带来不小的帮助。
呼叫中心项目关于电话银行的开发公作前面已经提到过呼叫中心CALLCENTER解决方案是天一软件作为该公司新的经济增长点来开发的,文书解决方案适于针对不同的需求在上面开发一步的CTL应用,就如民 航语音电子系统、电子股票交易系统等,电话银行地其中一个可能的应用,也是公司在该解决方案上正在开发的第一个系统,而我本人则就是参加这个项目的工作。介绍如下:
电话银行系统的目标是提供银行的基本业务处理功能,其服务形式可发是自动语音或人工坐席。电话银行系统的主要功能包括账户查询、账户转账,、客户信息服务及客户投诉四大部分,我在该项目的具体工作就是,参与初期的需求分析以设计的讨论,提出一些建议,并在后面负责其中一个数据应用网的设计、开发以及调试。
该数据应用网关主要用来与电话银行系统以外的数据源进行通信,用于向电话银行系统屏蔽外界的数据的细节,如存放格式、存放地点、版本等。应用网关有以下的接口,如与电话银行系统的TCP/IP通信接口及DCOM维护管理接口,还有与外界数据源的数据接口。针对于电话银行的这个应用网关的开发的主要工作由以下几部分组成:
a. 根据电话银行IVR流程的具体需求,和IVR协商确定IVR数据请求以及返回的接口,建立与数据库的连接,并且根据和IVR的数据接口编写具体的数据应用流程。
b. 应用维护管理接口进行应用网关与网关服务器的连接、注册工作,并实现网络服务器对应用网关远程操作中的一些方法。
c. 应用TCP/IP通信接口,在应用网关上实现IVR经由网关服务器的数据请求的处理。
d. 修改完善操作界面并编写《应用网关用户操作说明书》。
这些工作主要涉及到数据库的远程操作、微软的COM/DCOM通信机制还有TCP/IP通信原理,所以说这一次的工作不仅给了我深入了解一个大型软件开发企业的机会,也给了我一个很大的锻炼学习提高的机会。
3 总结
3.1 学习所得
如今一个星期的天一软件科技有限公司社会实践活动已经结束了,从这次活动的成果上来看,还是比较成功的。辛勤的工作换来的是累累的硕果,不管是对于企业、 学校,还是我们自己。
首先我们几个人在较短的时间内,克服各种困难,从最初的阅读文档,设计、开发,到最后的调试,完善,我们都按质按量的完成了,完成预定的工程开发任务,通过了公司相应项目小组的验收,也得到了他们的一致好评,实现了最初为企业作实际共享的目标。
其次在这个过程中,我们也通过了深入的调查、讨论,以对一个大型软件开发企业的结构、管理、文化、气氛有了比较详细的了解。而通过我们在公司中的工作上的良好表现,还有生活中与公司员工的交流,我们也在他们面前展现了了一个积极进取、勇于创新形象,起到了加强学校与企业双向交流的作用。
再有的一点就是,通过这次活动,让我们理论联系实际,在软件工程的开发过程、数据库的开发、分布式计算等工程实践经验上有了很大的提高。在公司中也培养了初步的大型项目合作开发经验,这一些都很好的增强了我们的个人的能力和并提高了自身的素质。
3.2经验教训
类似的以上的收获还有很多很多,但在活动结束的这个时候,仔细考虑一下,还是有一些地经验教训的。
例如在活动中我们能够感觉得到,很多的工作经验,开发的知识我们了解的还是不够充分,致使我们在开发初期要发费较多的时间用于入门。但有一点感觉就是,我们在学校所学的一些基本知识还是比较有用的,例如网络通信砂理,数据库基本原理等,正是这些基础知识使我们在缺少工程经验的情况下还能尽快入手,后来赶上。
针对我们学校部分学生普遍基础理论知识较多,对于工程的经验不足的现象,我们同学大可以去掉以往羞于参与工程,怕在别人前认短的心态,因为北京邮电大学学生在通信理论方面的基础知识还是比较丰富的,有了这一些知识,我们一般在工程面前还是能很快入手的,而为了更好的进行开发,我们也应该在校期间就多进行一些工程方面的锻炼,培养实际动手能力。
我想象这样一此让同学接触社会,培养实际动手能力的活动真的很不错,也是同学们所欢迎的,当然把这样的活动办好需要学校的老师和同学们共同努力。也希望,这样的活动能不断地继续下去,并发展壮大。
3.感谢
虽然就短短的一个星期,但我想这一份经历必将会为我们将来进入社会打下一个良好的基础,不管是在以后的就业指导上、还是在工作生活为人上,我们都拥有了一笔宝贵的财富。
所以在最后我想我们应当感谢为我们提供这次活动机会、还有在此过程中热心帮助我们的学校学生工作部,学校团委,研究生团委的老师们,另外还要感谢天一软件科技有限公司及其中的员工们。
❖ 软件工程及实践报告 ❖
一、选题背景
当今的互联网服务面临着许许多多的挑战和千变万化的需求,其中就包括需要管理海量的数据,并且能为高速增长的用户群提供持续可依赖的服务。这里所说的互联网服务包括了诸如在线邮箱、搜索引擎、在线游戏、在线金融系统、内容分发网络、文件共享网络等等。因此,能提供这些互联网服务的系统往往很庞大:由成百上千台机器组成,并且这些机器可能在同一个数据中心里,也可能分散在不同的数据中心,之间通过不可依赖的网络进行通信。在具有如此巨大的扩展性的集群中,错误的发生变的很常见:一部分机器可能随时会遇到硬件或者软件故障;网络延迟和网络故障随时可能发生,导致丢包、网络分区等情况;偶发的恶意攻击或是操作错误,也有可能导致不可预测的灾难性错误发生。所以,构建这种系统的软件往往很复杂,同时,每隔一段时间,系统都需要进行一定的修改(升级)以提升性能、修改错误或增加新的功能。本文工作所面临的最基本的问题就是如何有效地设计一种工程上可行的升级方案,使得这种规模的分布式系统能在升级期间能持续地提供服务。
二、研究目的和意义
时下云计算十分火爆,各种互联网公司、银行、政府都经常提及云计算,各种各样的分布式系统也层出不穷,不论是著名的大型分布式产品的开源项目诸如Hadoop、OpenStack、MongoDB等等,又或者是国内外的著名的云计算服务提供商AmazonAWS、MicrosoftAzure、阿里云们,云计算早已从纸面或者是宣传标语中,走向了实实在在的落地阶段。但是,针对云计算抑或是分布式系统中一个比较具体的问题的相关研究,尤其对于国内的相关领域而言,却是比较缺少的,国内工业界的著名厂商们似乎都在闷头造车,分享出来的解决云计算工程中实际具体问题的论文和研究成果依然较少。本人深知自己的能力有限,仅得益于研究生期间的一些实习经历,结合工程实际,尝试对分布式系统的升级和数据迁移问题做一些总结和提炼的工作,并且有一定的创新。
三、本文研究涉及的主要理论
分布式系统是其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的软件系统。分布式系统是一个统称,常见的有分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库(存储)系统等等。本文所面临的升级和数据迁移的问题涉及到更多的是分布式存储系统,分布式存储系统的定义如下:分布式存储系统是大量的普通的PC服务器通过互联网互联,对外作为一个整体提供存储服务。
也可以说,那些以数据存储和访问为目的而设计的分布式系统称之为分布式存储系统。与普通的软件系统不同,分布式存储系统具有以下几个特性,理解这些特性对解决本文所提出的问题具有基础性的意义。扩展性:分布式存储系统的扩展性是最重要的优势,往往可以扩展成百上千台的规模。同时随着集群规模的增长,其系统整体性能表现为线性增长。
并且,可以根据一定的策略将数据和请求分配到不同的物理节点,物理节点的数目和集群处理能力成正比,集群是线性可扩展的。同时,集群能否扩展,可否线性扩展是衡量分布式存储系统的一个重要指标。低成本和高性能:分布式存储系统具有的自动容错、自动负载均衡机制使其可以构建在普通的PC机之上。另外,线性扩展能力也使得增加、减少机器非常方便,可以实现自动运维。因此,对整个集群而言,分布式存储系统具备高性能。
数据分布:分布式存储系统区别于单机存储系统最大的特点是它可以按照一定方法进行数据切片,不同的物理节点分布不同的数据分片,从而将系统的存储容量压力和访问请求压力分散到系统集群的各个物理节点上,使系统整体能够存储超大规模的数据量,同时能够接受更多的并发请求。
那么如何将数据分布到多台服务器才能够保证数据分布均匀?数据分布到多台服务器后如何实现跨服务器读写操作?常用的数据分片和分布方法有两种:a.哈希分区方法,即根据数据的Key进行哈希取模,离散的分配到集群的物理节点上,Amazon的Dynamo采用了一致性哈希算法进行分区;b.连续分区方法,即将整个数据集合按照key来排序,根据key的范围进行分片。
四、本文研究的主要内容及研究框架
(一)本文研究的主要内容
本论文共分为六章,各章的主要内容如下所述:
第一章为引言。介绍了本论文的研究背景,简述了云计算和分布式系统目前的现状,系统升级的必要性,以及本文的主要工作和组织结构。
第二章为文献综述。介绍了分布式系统相关的基本理论,分析了一些典型的Nosql系统,综述了在单机软件成熟的升级方案以及在分布式系统升级问题上前人的一些研究成果。
第三章为难点分析及总体设计。本章系统地分析了分布式系统升级问题的难点,并且提出了高可用的分布式系统升级设计的基本概念和原则,在此基础上,提出了该问题的总体设计方案。
第四章为详细设计和实现。本章在前一章的基础上,依次详细地设计了在单数据中心和跨数据中心的分布式环境下的系统升级方案,为本论文的最为重点的章节。
第五章为方案测试与实施。本章在详细设计与实现的基础上,提出了相应的测试和实施方案,通过测试分析和实验分析验证了升级方案的有效性。
第六章为总结和展望。总结了全文所做的工作,指出了论文的创新点,并且对论文的不足以及未来的后续研究做出了展望。
(二)本文研究框架
本文研究框架可简单表示为:
五、写作提纲
摘要4-5
ABSTRACT5-6
第一章引言9-11
1.1研究背景9
1.3本文组织结构10-11
2.1分布式相关理论11-14
2.1.1基本概念和特性11-12
2.2典型Nosql系统分析14-19
2.2.1Bigtable15-16
2.2.2Dynamo16-18
2.2.3Cassandra与Bigtable,Dynamo的对比18-19
2.5本章小结22-23
第三章难点分析与总体设计23-32
3.2高可用的分布式系统升级设计25-27
3.2.2升级设计的基本原则26-27
3.3总体设计方案27-31
3.3.2方案步骤28-30
3.3.3重点说明30-31
3.4本章小结31-32
第四章详细设计与实现32-51
4.2单数据中心分布式系统升级33-38
4.2.1设计意义33-34
4.2.2详细设计34-38
4.3跨数据中心分布式系统升级38-42
4.3.1区别分析38
4.3.2总体说明38-39
4.3.3读写请求处理39-40
4.3.4详细步骤40-42
4.4主要模块的实现42-49
4.4.2升级主要模块实现44-46
4.4.3数据迁移模块实现46-48
4.4.4回调函数的实现48-49
4.5本章小结49-51
第五章方案实施与测试51-70
5.1方案实施51-57
5.1.1系统部署51
5.2方案测试57-66
5.2.1单元测试57-61
5.2.2集成测试61-63
5.2.3系统测试63-66
5.3实际生产环境测试结果66-69GSI8.COm
5.4本章小结69-70
第六章总结与展望70-72
6.1回顾和总结70-71
6.2前景展望71-72
参考文献72-74
六、本文研究进展(略)
❖ 软件工程及实践报告 ❖
月末总结
这一个月在XX公司的实现,我开始渐渐的熟悉了这个环境,让我感觉到,要作为一个真正的优秀的软件工程师,我们还有很大的差距。
首先,我感觉到困难的是,在学校,我们都比较注重的是理论知识的学习,忽视了动手能力的培养,这跟我们出来实习到来了很大的麻烦,就造成了实习生的知识技能与用人单位要求的巨大代沟,但是通过这一个月的实习,我明白了我自身的差距,也在项目经理的培训和指导下,在自身的努力下, 不断的取得进步,我深知这种进步与实际的工作技能还有很大的差距,但是我会在之后的实习生活中不断的学习,不断的进步。
其次,在学校学习的面向对象的语言主要是java等,很少接触到c#/.net这就跟实习带来了不少麻烦,但是,我深信只要自己好好的努力,不断向师兄们学习,一定能克服这个问题的。在学校学习的阶段,对html、css+div、javascript、jquery、oracle等学习都比较粗浅,而且由于学习的时间比较久了,更是淡忘了不少,所以在实习的这个月中,就在不断的强化这些知识。我深知要学好这些东西,不是一朝一夕的事情,我会长此以往,不断的去学习,并掌握它们。
最后,要感谢师兄对我们的培训,分享自己的经验,让我们明白了实习中要学习的重点,让我们少走弯路。而且我知道自身的动手能力还很差,专业技能还不够好,所以,在之后的实习过程中,我会更加努力,虚心师兄们、同事们学习,不断取得进步。
Lixw_ok
❖ 软件工程及实践报告 ❖
姓名:
学号:
专业:
班级:
1、 企业概述
1.1、 企业简介
xx(xx)实训基地是xx省xx市xx政府与xx合作创建的软件及服务外包人才实训基地。该项目亦是xx市服务外包“123”计划(到20xx年末,全市集聚国际服务外包和软件出口企业100家,每家企业从业人员超过2000人、每家企业年出口超过3000万美元)的一个重要支撑项目。该实训基地是为了xx的产业转型,发展xx软件及服务外包业务,引进国内外知名外包企业到xx投资而创办,旨在为xx新区企业提供符合企业需要的人才。截至20xx年12月,xx(xx)实训基地已吸引了全国各高校近3500名有志学子参加实训,为xx软件及服务外包产业的发展提供了重要的人才支撑平台。
通过xx(xx)实训基地实训,学员可以掌握一线实践技能,学习和实践IBM公司规范化、专业化、标准化的管理运作、业务流程及项目开发流程, 体验和感受公司对员工知识结构、技术技能、团队合作的要求,熟悉企业文化氛围。通过项目实践训练(e-Learning、课堂式授课、案例讨论、方案评估、项目开发、过程回顾、事后评估、专家指导),学员将获得一定的项目开发经验和软件外包从业人员必备的职业技能,最后获得IBM颁发的IBM软件外包人才实训证书。
1.2、 企业现状
xx(xx)实训基地自20年2月正式成立以来,已完成十期学员的实训任务,通过该基地实训合格的学员主要就职于xx集团(xx)、xxxx计算机有限公司、xx集团(xx)、xx、xx(xx)信息系统有限公司、xx软件、xx网络、xx软件、无锡xxxx物联等xx企业,部分学员就职于xx、xx、xx、xx、xx、xx、xx、xx、xx、xx、xx、、xx、xx软件等著名跨国软件企业和国内知名软件外包企业。xx以跨国企业IBM标准设计的模拟公司为平台,将IBM在业务流程、商业氛围、行业经验等多方面的优势融合到一起,将企业文化教育、职业素养训练、外语技能、IT技能、业务流程实践等实训内容贯穿其中,打造出一个模拟IBM业务操作平台的实训基地。通过在该平台上面学习和实践,学员将获得部分职业经验和IT实践经历,成为IT外包行业“拿来就能用,拿来就好用”的复合型人才。
2、 实训内容
2.1、实训安排概况
xx(xx)实训基地的专业课程实训方向:Java web开发、软件测试、IBM大型机、数据仓库、嵌入式开发等,这些课程都是目前最先进和顶级的软件外包课程。 来到这里我选的欧美方向的java班,既然选择了就会努力去学好,
为自己的那个目标前进。对欧美的话,我们也每周有两节职业英语课,也锻炼了自己的口语能力和职场上的一些英语练习。
基本的课程安排:
一:培训Java基础,用时四周。
二:培训Html,XML,JavaScript,用时2周。
三:Oracle 10g 学习,用时2周。
四:Java Web 学习,用时 10 天。
五:开源框架Struts2的学习,用时 10 天。
六:开源框架Hibernate3的学习,用时 10 天。
七:开源框架Spring3的学习以及三大框架的整合,用时 10 天。
八:个人电脑保修项目开发,用时 1 个月
九:个人博客项目开发,用时 1 个月
十:职场培训、模拟面试,在项目开发期间抽时间联系。
十一:每周培训一次英语。
2.2、开发项目
2.2.1、个人电脑保修系统
本系统是在培训期间开发的第一个项目,利用eclipse来开发,采用oracle 10G数据库,采用三大框架整合技术,我主要负责管理员和用户的登录和校验模块以及报修信息的提交,这个项目使我们小组学习项目开发的基本流程,为下个项目的开发奠定了基矗
2.2.2、博客系统
该项目是在xx集成工具下使用Java、Jsp、mysql等又结合SSH框架开发完成,使用jdbc实现java与oracle数据库的连接。可以分为读者用户、管理员两大核心模块。管理员主要实现的功能是,删除图片、删除用户、删除日志、发表日志等,用户可以上传图片,删除图片、发表评论、浏览图片、发表日志等。此项目是以团队合作完成的,我在小组中主要负责管理员与用户的登录校验,图片的上传和删除以及图片的分页,该项目我们充分运用了SSH整合技术,自己也慢慢从中体会到一些原理性的东西,也渐渐的再加强自己的解决问题的能力。
3、 个人总结
通过本次培训,学习了很多的知识,从java基础开始学习,一点一滴的积累java方面的相关知识,在期间学习了如何利用eclipse和oracle等相关工具来开发项目,在实训初期利用Js和servlet来开发项目,感觉开发起来很繁琐,
代码量比较大,后期利用SSH技术来开发了两个项目个人电脑报修系统和博客系统,在期间学习了许多的开发知识及相应的开发经验,熟悉了项目开发的流程。在IBM培训的期间,学习了如何在规范化、专业化、标准化的管理下运作、拓展业务及项目开发流程;体验感受员工知识结构、技术技能、团队合作的要求,体验企业文化氛围;学习使用符合市场实际需求的软件开发工具,将课堂内的知识运用到实际,积累项目实战经验;加速由在校学生向职业专业人士的转变,增强就业竞争能力。
❖ 软件工程及实践报告 ❖
1、9月2日—9月9日:主要完成MTA 98-361(Software Development Fundamentals)相关培训和考试。
2、 9月10日—9月16日:主要完成MTA 98-364(Database Administration Fundamentals)相关培训、考试以及项目分析与设计。
3、9月17日—9月22日:主要完成MTA 98-363(Web Development Fundamentals)相关培训、考试以及项目的编码、测试与整合等。
4、9月23日:项目答辩。
2.2 实习内容
项目一:员工工资管理系统
该项目我们通过ABAP语言与JAVA语言分别实现同样的功能,但是两次的具体项目需求是一样的,我在该项目中主要担任数据库设计以及员工基本信息管理模块的代码实施,现对该项目做如下介绍:
在一个优秀企业的生存和发展过程中,财务管理已经越来越占据重要地位,对员工工资的科学、高效的管理的财务管理基础模块之一。员工工资管理是现代企业的战略性管理方式,也是企业发展的最关键的因素。一个企业能否健康、正常的运行、发展,很大程度上取决于企业的财务管理方式,取决于对员工工资管理的效率。
ISAP-MIS介绍
员工工资管理系统(Employee Salary Management System),是指组织或社会团体运用系统学理论方法,对企业的员工工资管理方方面面进行分析,规划、实施、调整,提高企业员工工资管理水平,使人力资源更有效的服务于组织或团体目标。
主要功能
实现对员工基本信息表和员工奖金明细表的增、删、查、改、排序等操作。
实现对员工基本信息表和员工奖金明细表的多表连接查询操作。
具体说明
建立员工基本信息表和员工奖金明细表并且实现两个表的关联;
按照多种要求实现数据增加/插入功能;
按照多种要求实现数据记录的删除功能;
按照多种要求实现数据记录的修改功能;
按精确查询实现搜索操作;
按照某一关键字进行升序或降序记录。
项目优势
基于SAP的模式,运用系统学理论方法,对企业的工资和奖金进行分析,规划、实施、调整,全面提升企业工资管理的效率和质量。
项目特点
身份权限验证、下拉列表的应用、为输入参数建立搜索帮助、采用经典的三层处理模式理念,旨在实现业务和数据的独立,保证了系统的可行性、可靠性,提高了系统的易维护性、可扩充性。
ISAP-MIS分析
系统设计目标
基于SAP工资管理系统的设计目标是通过规范、整合、集成员工基本信息数据、员工奖金明细等信息,打造员工工资管理系统平台,实现管理业务的规范化、数据的标准化、信息管理的现代化,全面提升员工工资管理的效率和质量,达到对公司财务管理的优化配置。
用户权限验证管理
系统实现了用户权限管理功能,区分不同的用户提供不同操作权限,并可对用户进行密码初始化操作。
一般授权:只能查询本人基本信息,奖金信息
特殊授权:可以查询本部门的员工基本信息,奖金信息,工资汇总信息汇总。(构想待定)
VIP授权:可以查询所有部门员工的基本信息,奖金信息,工资汇总信息。
管理员授权:可以查询所有部门员工的基本信息,奖金信息,工资汇总信息,并对相关数据进行操作。
根据条件查询、增加、删除、修改功能管理
用户经过权限验证进入系统后可以根据自己的需要查询特定的信息,具有管理员授权的用户可以进行增加、删除、修改功能。
项目二:家校通
本系统总体功能上分为前台和后台两大部分:前台是B/S结构的Web应用系统,供普通用户浏览、使用;后台是C/S结构的Windows应用程序,供管理员维护系统。
任何用户都可以在前台用户系统进行登录使用。欲进入本系统必须有权限(账号及密码),没有被授权的用户不能进入系统。前台可以进行信息维护、信息查询、留言管理、资料下载等普通操作。
授权的管理员才能进入后台管理系统进行相关维护操作。后台能进行用户信息管理、公共信息管理等操作。
实习总结
通过这段时间的实习,学到一些在学校里学不到的东西。因为环境的不同,接触的人与事不同,从中所学的东西自然也就不一样。整个过程中,我每天都有很多新的体会,想说的很多,总结起来有以下几点:
1、 多听、多看、多想、多做、少说
太对决定一起,当有一份新的任务给你时要知道自己能否胜任这份工作,关键是看你自己对待工作的态度。态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。态度不好,就算自己有知识基础也不会把工作做好,实习项目刚开始时,根本不清楚该做些什么,并且这和我在学校读的专业没有必然的联系,刚开始我觉得很头痛,可经过工作过程中多看别人怎样做,多听别人怎样说,多想自己应该怎样做,然后自己亲自动手去多做,终于在短短几天里对工作有了一个较系统的认识,慢慢的自己也可以完成相关的工作了,光用嘴巴去说是不行的,所以,我们今后不管干什么都要端正自己的态度,这样才能把事情做好。
2、虚心学习
在这次实习过程中,我们碰到很多问题,有的是我们懂得的,也有很多是我们不懂的,不懂的东西我们要虚心向老师同学请教,当别人教我们知识的时候,我们也应该虚心的接受,不要认为自己懂得一点鸡毛蒜皮就飘飘然。
2.3 主要成果
项目:学生管理系统
主要技术:Jsp+Servlet+Mysql
开发工具:MyEclipse+Dreamweaver+Mysql数据库等
组员:胡齐文(组长),李维千,李瑶,扬帆,蔡欣岑,赵梦娇,杨军柏,王波波
主要功能:校级管理员主要完成对院级管理员的管理、对学校学生的管理以及个人信息的完善、修改等;院级管理员主要完成对本院的学生的信息管理以及个人信息的完善、修改等;学生主要完成对个人信息的管理。
项目:SWPU网上商城
主要技术:Ext.Net+Asp.Net+SQl Server 20xx
开发工具:Microsoft Visual Studio20xx+Microsoft SQL Server 20xx
组员:
主要功能:管理员主要完成对商品的管理、对订单的管理以及个人信息、注册会员信息的管理。注册用户主要管理自己的订单,购买商品等。
微软认证:通过微软MTA 98-361(Software Development Fundamentals)和MTA 98-364(Database Administration Fundamentals)认证。
总结
光阴似箭,日月如梭。为期40多天得实习生活已经结束,生产实习是学生大学学习很重要的实践环节。主要是让我们在毕业前提前感受一下工作的环境,体验一下作为工人的感觉,为以后的工作打基础。作为一个大三已经结束,准备迎接找工作的学生来说,有一次亲身实习的机会是多么的可贵。回首整个实习过程,我每天都有很多新的体会,想说的很多,我总结下来主要有以下几点:
1. 团队意识是完成项目的必要保证
在我们两个项目完成的过程中,我充分体会到了团队合作的重要性。特别是在自己担任项目组长分配大家完成项目期间,很难想象但是如果大家不团结一致的结果。期间通过大家的团队合作,项目组高效且快速的完成的项目,当然最重要的是大家都参与了项目的开发。
2.熟练的专业技能
提供最佳的解决方案是我们努力的方向。ERP的核心管理思想就是实现对整个供应 链的有效管理,我们在梳理了企业的各项业务之后,需要做的是提供一个最佳的解决方案,来帮助企业实现更加有效的管理,我们要精通SAP系统,掌握行业专业知识,更要能融入最适宜的管理理念,这对顾问而言,无非是一个很高的要求,需要我们不断地学习,不断的在一个个项目中去积累经验,但这也正是我们为之奋斗的目标。
3.加强信心,坚持下去
虽然感觉自己学的还可以,但真的工作起来却感觉力不从心。有时候遇到事情总会着急,慌张。平常信心不足,总感觉自己做不好。或许还需要一段时间的磨练吧。只有自己的知识和能力都在提升,相信自己总有一天会很勇敢的表现自己。
-
我们精彩推荐软件工程及实践报告专题,静候访问专题:软件工程及实践报告
本文来源://www.gsi8.com/baogao/182219.html
