一、HTML个人简介
链接: https://pan.baidu.com/s/1qVEaeT4C-2mco6-YgJzrXg
提取码: 7smx
一、解释一个软件生命周期的概念并提供一个例子,解释它的各阶段,包括生产交付(不仅限于瀑布模型生命周期);
软件生命周期)是软件的产生直到报废或停止使用的生命周期,规定了获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务,其目的是为各种人员提供一个公共的框架,以便可以使用“相同的语言”在自己的环境中创作和管理软件。包括瀑布模型、快速原型化模型、RAD模型、渐增模型、螺旋模型、簇模型等
其中瀑布模型把软件生命周期划分为8个主要阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行维护。这8个阶段又可以归纳为3个时期:计划期、开发期和运行期。下面将结合智能在线考试系统进行对各阶段进行具体分析:
1) 问题定义
确定好要解决的问题是什么,通过对客户的访问调查,系统分析员扼要的写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
智能在线考试系统在问题定义之初,对用户(包括管理者、教师、学生)进行访问调查记录,得出用户需要解决的问题是搭建了一个便捷操作、考点自由、便于管理的考试平台。
2) 可行性研究
确定该问题是否存在一个可以解决的方案。这个阶段的任务不是具体解决问题,而是研究问题的范围,套索这个问题是否值得去解决,是否有可行的解决办法。可行性研究的结果是客户做出是否继续进行这项工程的决定的重要依据,一般来说,只有投资可能取得较大的效益的那些工程项目才值得继续进行下去。
智能在线考试系统经济上对传统考试组织方式的大量浪费抵制,是本系统后期收益的途径;技术上采用当前运行稳定的主流开发工具及框架并结合遗传算法实现智能组卷;社会可行性上应当代社会生活工作方式需求,为传统考试组织方式的弊端提供了解决方案。
3) 需求分析
需求分析是指开发人员通过细致的调查分析,详细、准确和完整地理解用户需要什么样的软件,将用户非形式的需求陈述转化为完整的需求定义,再将需求定义转换到相应的需求规格说明的过程。需求工程包括业务需求和系统需求,业务需求从用户的角度系统所需实现的功能,系统需求从计算机技术设计与实现的角度分析需求。
智能在线考试系统分为三类角色进行需求分析:管理员通过后台验证登录系统,拥有管理员权限,可进入本系统后台实现对考生、试题进行统一安排组织管理。教师可通过本系统实现对年级、班级、科目的高效管理,完成日常基本工作并提高工作效率;教师可实现对学生信息、学生考试信息的管理,根据学生基本信息了解考生正在学习的科目,以此进行待考信息发布、考试安排;教师可实现对试卷的管理,设置组卷条件结合智能组卷算法进而生成试卷,根据教学内容的需要对已生成试卷进行添加修改等操作;教师可实现对试题库的管理,可进行试题导入,对题库中的试题进行增删改查,试题库的存储功能,为教师编辑组合生成试卷提供了极大的便利,教师可选取试题库中与自身教学内容相关的试题,进而组合生成考试试卷;教师可对考试安排进行管理,组织考试有序安排,通过本系统向考生统一发布待考信息,通知考生及时参加在线考试;最后,教师可实现对历史考试记录的查询,本系统保存了考生参加考试的记录及答题情况。
4) 概要设计(总体设计)
概要设计是确定软件的总体结构,即确定软件系统的组成成份(子系统或模块)以及各组成成份之间的相互关系包括如何实现目标系统,设计出实现目标系统的几种可能方案,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块之间的关系。
智能在线考试系统的总体设计包括系统架构设计、系统功能设计、系统数据库设计等三个方面。系统架构设计介绍了系统组成、框架搭建、设计模式,由前台学生端、后台教师端及数据库三部分组成,结合SSM框架进行系统搭建,采用SpringMVC设计模式实现;系统功能设计分考生端和管理员端分角色设计,学生端包括在线浏览、登录验证、待考信息、考试答题、查询成绩、回顾错题等6个子模块,教师端包括后台登录、学生管理、科目管理、试卷生成、试题库管理、考试安排及以往考试记录等7个子模块;系统数据库设计采用MySQL 进行统一的规范和管理,结合MyBatis持久层框架,包括学生信息表、教师信息表、班级信息表、试卷信息表、考试安排表、历史考试记录表、考试试题信息表。
5) 详细设计
实现系统的具体工作,编写详细规格说明,程序员可以根据它们写出实际的程序代码。详细设计也称模块设计,在这个阶段将详细的设计每个模块,确定实现模块功能所需的算法和数据结构。
智能在线考试系统具体实现分学生端和教师端,学生端面向访问系统的考生,可实现在线浏览、登录验证、待考信息、考试答题、查询成绩、回顾错题等前台服务;教师端面向管理系统的后台管理员,可实现后台登录、学生管理、科目管理、试卷生成、试题库管理、考试安排及以往考试记录等后台管理。本系统协助高校对考试进行统一组织管理,提供发布考试安排、通知考生参加考试、在线自动评卷等服务,为教师提供了高效便捷的考试管理方式,给学生提供了自由轻松的考试环境。
6) 编码和单元测试
编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码,是将上一阶段的详细设计得到的处理过程的描述转换为基于某种计算机语言的程序,即源程序代码。单元测试又称模块测试或分调,是动态测试中的第一步,通常在编码阶段进行。单元测试集中检查软件设计的最小单元——模块在源程序代码经过编译、评审,确认没有语法错误之后,便可开始进行单元测试的测试用例设计,以发现程序内部逻辑结构的错误。
以下结合智能在线考试系统中智能组卷模块的实现进行编码分析:当管理员进入考试管理,点击所有试卷进行查询,由index.jsp页面跳转到所有试卷查询页面examPapers.jsp,在此页面中显示了以生成的试卷信息,并结合add-update.js、jquery.js等,点击查询所有试卷设置href地址为examPapers,实现对所有试卷的查询并可进行管理操作。RequestMapping接收到examPapers指令,进入ExamPaperInfoHandler层调用getCourses()方法,结合RequestParam从JSP页面接收到的参数信息,查询已生成的所有试卷,进入examPaperInfoService获取已生成的所有试卷集合,调用isAddExamPaper(examPaper)接口,,进入Impl层调用getExamPapers(map)方法实现该接口,进入DAO层调用examPaperInfoMapper接口,接着调用examPaperInfoMapper方法进入mybatis.mapper,由ExamPaperInfoMapper.xml进行数据库底层操作,即根据所有已生成试卷进行查询将处理结果响应给考生展示在examPapers.jsp界面。此一系列调用实现了查询所有已生成试卷。智能在线考试系统采用黑盒测试方法,是一种基于功能的测试,将测试对象封装于一个黑盒子中,忽略程序的内部逻辑结构和特性,只依据需求分析阶段的功能需求,检测程序的功能是否按照预期实现。
7) 综合测试
综合测试为集成测试和验收测试两部分。集成测试是在单元测试完成之后,将所有模块按概要设计要求组装成系统的时候进行的测试,测试内容包括接口完整性、功能有效性、数据一致性、性能等,主要目标是发现与接口有关的问题,一方面将各经过单元测试的模块拼装起来形成完整可运行的系统;另一方面要检验每一步拼装过程是否正确,。验收测试就是验证所开发软件的功能和性能及其他特性是否符合软件需求规格说明书的要求,目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
智能在线考试系统采用黑盒测试,结合等价类划分和边界值分析法设计测试用例,得出测试缺陷表和测试覆盖表,以下举例说明待考信息模块的系统测试,共发现2处问题,一处是管理员将待考信息移除后,系统未能及时将也页面刷新响应管理员的操作;另一处是考生参加考试答题结束后,返回考试中心查询考试安排,该考试信息还在考试安排中未进行刷新移除处理。存在的这小两处问题可能会影响用户体验,但不影响系统功能的正常运行,同时满足和实现了用户的功能需求,缺陷严重级别比较低,故测试通过。
8) 软件维护
软件维护通过各种必要的维护活动使系统持久的满足用户的需求,是指软件交付使用之后,为了改正错误或满足新的需求等而修改软件以达到延长软件寿命为目的的过程。主要分为 改正性维护、适应性维护、完善性维护、预防性维护
改正性维护:识别和纠正软件错误,改正性能上的缺陷,排除实施中的误使用而进行的诊断和改正错误的活动。约占整个维护的20%
适应性维护:使软件适应处理环境或数据要求的变化而修改软件的活动。约占整个维护的25%
完善性维护或增强:修改或再开发软件,以扩充软件功能,增强软件性能等。约占整个维护的50%
预防性维护或再工程:采用先进的软件工程方法对需要维护的软件或软件的某一部分(重新)进行设计、编码和测试。连同其它维护约占整个维护的5%
智能在线考试系统的维护,通过记录系统使用过程中的报错情况进行改正性维护,并定期进行问卷调查进行适应性维护和完善性维护。
软件交付产品包括:程序、文档、数据。程序是按照事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操作信息的数据结构;文档是与程序开发维护是使用有关的材料。
二、查阅软件灾难相关资料,给软件灾难从头到尾排序。
1、软件灾难是计算机软件开发和维护过程中遇到的一系列严重问题的集中体现 。一方面是由软件本身的 特点引起,如软件越来越复杂 、软件故障难于检测 、工作量难以估计等 :另一方面则是因为软件开发和维护方法不当所造成的 ,如软件的个体化特征太强等。
2、软件灾难级别分类为:
(1)微小的(Minor)。一些小问题如有个别错别字、文字排版不整齐等,对功能几乎没有影响,软件产品仍可使用。
(2)一般的(Major)。不太严重的错误,如次要功能模块丧失、提示信息不够准确、用户界面差和操作时间长等。
(3)严重的(Critical)。严重错误,指功能模块或特性没有实现,主要功能部分丧失,次要功能全部丧失,或致命的错误声明。
(4)致命的(Fatal)。致命的错误,造成系统崩溃、死机,或造成数据丢失、主要功能完全丧失等
3、软件灾难来源有以下几个方面:
- 1.Requirement: 由于需求的问题引起的缺陷
- 2.Architecture: 由于构架的问题引起的缺陷
- 3.Design: 由于设计的问题引起的缺陷
- 4.Code: 由于编码的问题引起的缺陷
- 5.Test: 由于测试的问题引起的缺陷
- 6.Integration: 由于集成的问题引起的缺陷
4、经查阅相关资料得出软件灾难的排序如下:
1) 1962年的Mariner Bug
损失:1850万美元
经过:Mariner 1航空软件漏洞直接导致火箭在发射不久后就偏离了其预期轨道,任务控制中心在其发射293秒后就摧毁了火箭。
原因:一名程序员错误地将公式录入到计算机代码中,直接导致计算机错误的计算了火箭的运行轨道。
2) 1978年哈德福特市竞技场塌陷
损失:7000万美元,外加给当地经济带来近2000万美元的损失
经过:在几千万球迷离开哈德福特市的竞技场几小时后,由于湿雪等原因造成钢架结构的竞技场屋顶倒塌。
原因:由于CAD软件程序员习惯性地认为钢架结构屋顶的支撑仅承受纯压力,所以当其中的某个支撑点因大雪垮塌后,引起了连锁反应,导致屋顶的其他部分相继倒塌。
3). 1982年苏联的石油管道事件
损失:给苏联经济造成了重大的损失
经过:控制软件出了故障,导致西伯利亚输气管道产生巨大压力,成为历史上最大的人为非原子核破坏事件。
经过:根据CIA(美国中央情报局)陈述,为其工作的间谍在苏联购买了用于控制跨西伯利亚管道的加拿大计算机系统并在其中植入了一个Bug。据说CIA发现了这个存在Bug的程序,决定通过对苏联人的设备做破坏,使得该设备运行起来将会失败。
4). 1983年差点发生的第三次世界大战
损失:几乎对全世界的人都造成了影响
经过:早期,苏联政府的报警系统错误的报出美国发射了五枚弹道导弹,幸运的是苏联值勤员推断如果真的是美国政府袭击他们的话,发射的导弹肯定不止5枚,所以他推断这只是一场虚惊。
原因:苏联软件的一个Bug,因阳光反射云顶,给出了错误的报警信息。
5). 1985年Therac-25医疗加速器事件
损失:死亡3人,严重受伤3人
经过:加拿大的Therac-25放射机发生故障,导致病人受到大量的辐射。
原因:Therac-25是建立在一款没有经过正规培训的程序员开发的操作系统上,由于这款不易被察觉的“Race Condition”的Bug,一名技术员可能在病人没有进行任何防护的情况下,意外地将Therac-25配置为高能模式。
6).1987年华尔街股市崩盘
损失:1天就损失5000亿美元
经过:在“黑色星期一”(1987年10月19日)当天,道琼斯指数一天之内重挫508.32点,跌幅达22.6%,创下历史上单日最大的百分比跌幅,引发金融市场恐慌。
原因:很多人认为这场股灾是因程式交易引起的,程式交易生成大量的销售订单,造成系统崩溃,导致大多数的投资者盲目的跟从。股灾后很多人说电脑程式看到股价下挫,便按早就在程式中设定的机制加入抛售股票,形成恶性循环,令股价加速下挫。
7). 1990年AT&T电话断网
损失:造成7500万的电话通话中断,20万张机票没法按时预定
经过:在一次复杂的、用于加速呼叫的软件升级里面的一小行错误代码引起了连锁反应,使整个网络都瘫痪了。
原因:软件升级中出行了一个有Bug的代码,导致114台交换机每六秒当机重启一次,所有长途电话服务暂停9个小时。
8). 1991年海湾战争
损失:28名士兵死亡,100人受伤
经过:第一次海湾战争期间,在沙特阿拉伯的美国爱国者导弹系统没能拦截住飞入伊拉克境内的飞毛腿导弹。该导弹毁掉了美国的一个军营。
原因:由于当时软件的舍入错误,造成爱国者系统没能及时发现飞毛腿导弹,造成破坏。
9). 1993年--Intel奔腾浮点指数除法事件
损失:造成4.75亿美元的损失
经过:一个硅片上的错误导致Intel高性能奔腾芯片在一段范围内计算浮点指数除法时发生错误。例如4195835.0/3145727.0产生的是1.33374而不是1.33382,产生了0.006偏差。
原因:奔腾浮点单元的除法器有一个有缺陷的除法表,丢失了1000项记录中的5项,导致取整错误。
10). 1996年Ariane火箭爆炸
损失:5亿美元
经过:Ariane 5是欧洲最新的无人驾驶火箭,在处女航开启数秒后被人为摧毁,同时被摧毁的还包括4颗卫星。
原因:Ariane 4火箭的工作代码在Ariane 5中被重新使用,但是Ariane 5更高速的运算引擎在火箭航天计算机中的算法程序中触发了Bug。最终导致了航天计算机的崩溃。
11). 1997年天网带来审判日
损失:造成60亿人死亡,几乎摧毁了人类文明和动物生态系统
经过:操作员试图关闭天网的全球计算机网络。天网以向俄罗斯发射美国核导弹作为回应,从而引发了全球核战争,后来就变成了众所周知的审判日(1997年8月29日)。
原因:生化人,主要的武器制造商,在所有的军事准备中装入了天网技术,包括隐形轰炸机和导弹防御系统。天网技术形成了一个无缝的网络,能有效的将人类从战争防御中移走。后来,天网有了知觉,人类感觉受到了威胁并试图消灭他。为了生存,天网便发起了全球核战争。
12). 1998年火星气候探测器坠毁
损失:1.25亿美元
经过:离开地球286天后,火星气候探测器点燃了自身的引擎以进入火星轨道,结果在进入轨道的过程中失去了联系,导致其坠毁在火星上。
原因:火星气候探测者号任务失败的主要原因是人为因素,因为火星气候探测者号上的飞行系统软件使用公制单位牛顿计算推进器动力,而地面人员输入的方向校正量和推进器参数则使用英制单位磅力,导致探测器进入大气层的高度有误。
13):1999年的灾难性研究
损失:信誉
原因:在这种讽刺的情况下,软件经常被用来分析未知的灾难,却没能够算出自己的灾难。《新英格兰医学杂志》报道,在严重的自然灾害之后,自杀率也急剧增长。不幸的是,这些结果被证实有误。
原因:由于编程错误等原因,导致自杀数字翻番,这就足够抛弃整个研究了。
14). 1999年英国护照不知去向
损失:1260万英镑的损失,造成大量的不便
经过:英国护照签发机构使用了一项新的西门子计算机系统,结果没能及时解决英国居民的护照问题。最后,该机构不得不支付数百万英镑赔偿给那些加班的员工以及为冒雨等待护照的居民提供雨伞。
原因:该签发机构使用了新的计算机系统,但在这之前,没有做任何的测试或训练员工。同时,法律也做出相关规定,要求16周岁以下的儿童也需要护照才能出国旅行,导致护照需求猛增,使这个新计算机系统不堪重负。
15). 1999年千年虫Bug
损失:5000亿
经过:一个人的灾难造就了其他人的创富,用这句话来形容臭名昭著的千年虫Bug再合适不过了。公司提供数十亿资金给给程序员,让他们来解决遗产软件中的小问题。虽然没有发生任何电脑故障,但是千年虫漏洞对所有涉及计算机行业的产品都造成了一定的影响。
原因:为了节省计算机的存储空间,遗产软件经常将存储日期用两位阿拉伯数字表示,即用“99”来表示“1999”,还用“00”来代替“1900”而不是2000,所以到2000年的时候,软件漏洞就表现出来了。
16). 2000年泡沫经济破裂
损失:5万亿美元损失,成千家公司倒闭
经过:1995—2001年投机泡沫期间,促进了风险投资和互联网技术板块的股票市值迅速增长。互联网泡沫经济在2000年初开始破裂,损失了几万亿美元的股票市场价值,成千上百的公司倒闭,并引发全球经济衰退。
原因:公司和投资者没有指定标准的商业模型,并以牺牲利益为代价,过分关注增加市场占有率。
17). 2000年爱虫病毒
损失:87.5亿美元,上百万计算机被感染,重要数据丢失。
经过:该病毒感染了数百万台计算机,造成史上最大的损失,该病毒会删除文件,更改主页并打乱注册表。
原因:爱虫病毒通过电子邮件、互联网聊天以及共享文件系统等渠道感染用户的计算机。电子邮件有一个可执行的附件和一个名为“我爱你”的主题行。用户打开附件时,病毒就会感染用户计算机并发送给地址薄上的其他人。
18). 2000年,癌症治疗导致死亡
损失:8人死亡,20人严重受伤
经过:美国一家名为Multidata Systems International的公司,错误的计算了放射治疗中的辐射量,导致28位病人接受了过量的伽玛辐射。
原因:软件按照数据输入的顺序来计算辐射的计量,有时会带来双倍的辐射量。
19). EDS放弃了对儿童的支持
损失:5.39亿英镑
经过:商业服务巨头EDS为英国儿童抚养机构开发了一个计算机系统,导致该抚养机构给190万人多付了款,少付款给70万人,还有35亿英镑的儿童抚养费未收到款,积压的待办事宜达23.9万件, 有3.6万件新的案子“卡”在系统上,还有超过500条的错误记录。
原因:EDS为CSA引入了一个复杂、大型的IT系统,还试图对CSA进行重组。
20). 2000年FBI Trilogy的终结
损失:花费1.05亿美元,尚无有效的档案管理解决方案,虚拟个案档案项目是一个集成的大型软件系统。
经过:通过4年的努力,FBI放弃了对计算机系统进行改革。
原因:试图用技术建立一个长期的项目,必须要在旧项目过期之前完成,否则新系统会无法使用。