软件工程第一次作业
此HTML页面是在学堂在线《前端攻城狮》的帮助下完成的,使用的编辑器是notepad++,其中使用了少量的css样式,主要是设置了图片的位置以及相关文字的大小位置等。
其中还设置了背景音乐,嵌入了自己喜欢歌曲、视频以及家乡地图位置等;收获比较大的一点就是学习了如何用表格的形式为整个页面进行布局(曾尝试使用HTML中的frameset,但是问题比较多,所以使用了表格形式),整体做的比较娱乐化。下面是相关界面:
以下是相关代码链接:
Coding
解释一个软件生命周期的概念并提供一个例子,解释它的各阶段,包括生产交付(不仅限于瀑布模型生命周期);
1)软件生命周期:
软件生命周期也叫作软件生存周期或系统开发生命周期,是软件工程中的一种思想原则,他指的是软件的产生直到报废或停止使用的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,软件生命周期可以划分为以下几个阶段,分别如下所示:
问题定义:需要弄清楚用户需要解决的问题是什么,然后与用户进行交流,并提出相应的“系统目标与范围的说明”提供给用户。
可行性研究:确定该问题是否存在一个可以解决的方案,研究是否存在一个可行的解决办法,一般从技术、经济、法律等方面进行可行性分析。
需求分析:具体弄清楚用户想要实现什么功能,具体有什么样的需求,明确目标系统需要实现什么,用数据流图、数据字典等表示系统的逻辑模型。并将相关需求分析的东西记录在《需求规格说明书》。
概要设计:应该怎样实现目标系统,大概设计一下目标系统的实施方案,确定程序由哪些模块组成以及模块之间的关系。
详细设计:实现系统的具体工作,编写详细的规格说明书,详细设计每一个模块,并确定每一个模块需要实现的功能,以及实现功能所需要的算法和数据结构。
编码:编码占全部开发工作量的10%~20%左右,此步骤开发人员需按照软件设计进行编码。
软件测试:测试人员布置好环境,运用工具对软件进行测试,将有关BUG提交给相关开发人员,并进行bug跟踪。整个测试主要分为单元测试、组装测试以及系统测试三个阶段。测试的方法主要有白盒测试和黑盒测试。测试过程中需建立详细而严密的测试计划,并严格按照测试计划进行测试,以减少测试的随意性。
运行维护:此阶段是生命周期中持续时间最长的阶段,要想延续软件的使用寿命,就必须对软件进行维护。软件的维护主要包括纠错性维护以及改进性维护两部分。
相关案例:
一个在线考试系统,可通过网络登录在线考试系统,参加在线考试、在线练习等;该设计实现了按题型随机抽题组卷、在线考试、题库管理、系统管理的功能,能够对客观题在线评分。用户登录成功后,阅读考试须知,之后选择考试科目进入考试页面,完成相应科目考试,自动给出考试成绩。系统管理,实现了对题库、考生信息、考试成绩、考试科目的管理。题库管理,实现了对试题的添加、编辑、删除功能;考生信息管理可以添加、修改、删除、查询考生信息,成绩管理可以删除成绩信息,科目管理主要是修改考试科目信息。
从这个例子当中,选择瀑布模型,比较直白,可以一步一步往下做,相关说明如下:
(1)问题定义:需要实现一个在线考试系统,可以给学生进行在线考试、练习等;给教师提供相关试题的管理(包括试题的增加、编辑、删除等),学生信息的管理(包括学生信息的添加、修改、删除、查询等)以及相关科目及成绩的管理。
(2)可行性分析:从运行可行性分析,该系统对于在校学生的学习有极大的帮助,对于教师的工作也有进一步的帮助,比较适合在学校这种教育背景下运行;从经济可行性分析,此项目在教师的指导以及学生自己的相互合作下就可以完成,此外,还可以提供给自己的老师使用,经济方面可行;从技术可行性方面来看,运用现有的知识,以及老师的指导,具有可行性。
(3)需求分析:
输入:
一方面,要求系统具有添加试卷、用户等数据的功能。另一方面,用户可以在留言板中留言也属于输入部分的需求。
输出:
要求系统具有输出用户考试成绩的功能。
处理:
处理上面要求系统具有根据数据库中正确答案对用户所答试卷进行自动判分的功能以及对用户信息和试卷信息等数据的增加、修改和删除等的功能。另外还包括在特定时间内系统在线考试并在规定时间一到自动收卷的功能以及用户答完试卷后可以查看正确答案的功能。
外部接口需求
系统的界面要求如下:
页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确,菜单设置和 布局合理,传递的信息准确、及时。
导航结构:页面具有明确的导航指标,并且要便于理解,方便用户使用。
技术环境:页面大小适当,能用各种常用的浏览器以及 不同的分辨率浏览
软件接口
系统需要windows2000及以上的版本的系统;
数据库sql server。
通信接口
运用的web浏览器,IE6.0及以上的浏览器。
(3)概要设计:
学生模式:进行在线考试
教师模式:进入题库进行试题输入,查看学生信息,查看学生考试成绩,试卷的新建、修改和删除,主观题的评卷
管理员模式:对系统进行管理,设定各类人员的权限,查询统计
(4)详细设计:
1.题库管理
题库分类和题型管理,题库支持单选,填空,问答,判断类型分类; 支持分科目建立题库;丰富的试题类型; 题库可以指定教师进行独立管理。 自定义试题创建,通过教师创建试题; 试题可以综合查询并批量导出到Excel文件中;试题可以批量进行输入。
2. 在线考试
学员考试管理,包括:根据考生权限、试卷有效时间等列出考生参加考试的试卷列表;
1)考生参加考试、答卷、交卷等完整过程;
2)支持考试自动倒计时,到时自动交卷;
3)客观题提交试卷后自动生成成绩;
考试防舞弊安全性设计,包括:
1)随机打乱试题显示顺序,避免抄袭;
2)随机打乱选择题候选项显示顺序;
3)控制考试页面的移出,禁止考试过程中查找答案、即时通讯等舞弊段;
3.手工评卷
提供手工阅卷功能,包括:
1)只有指定的教师才有手工阅卷的权限;
2)提供主观题正确答案和考生答案的对照,支持对超出标准分数的错误提醒,隐藏答卷的考生信息。
4.试卷管理
试卷定义和管理,包括:
1)试卷的新建、修改和删除;
试卷基本属性管理,包括:
1)支持一场考试多套试题的出题方式;
2)支持考试有效时间安排、考试次数、考试倒计时参数设定等功能;
3)支持服务器保存等可靠性参数设定;
4)支持考试成绩保密、答卷保密、防舞弊参数等安全设定。
出题策略管理,包括:
1)支持随机从题库中设计出题策略;
2)支持将题库分数换算成100分;
3)考试的题型显示顺序可自由指定。
5.考试管理
强大的考生安排和考试过程控制功能,包括:
1)批量安排考生考试,可以指定考生考试时间;
6. 查询和统计
提供考试结果的综合查询和统计分析,包括:
1)可以通过设定教师查询权限,控制考试查询权限;
2)可以查询所有考生成绩、答卷、排名和知识点分析;
3)可以按班级对应考人数、参考人次、及格人次、不及格人次、平均分、及格率等数据进行统计分析;
(5)编码:利用PHP以及SQL完成整个系统的编码。
(6)软件测试:在初步完成整个系统以后,用学生、教师等的身份进行注册,然后登录系统进行在线练习或者是在线考试,教师用相应的身份测试试题管理以及学生成绩等的测试,即测试每一个功能是否已经实现,逻辑上有没有问题等。
(7)运维和测试:在完成软件测试的基础上,将在线考试系统正式投入到使用当中。
查阅软件灾难相关资料,给软件灾难从头到尾排序。
1)水手号(Mariner) 的致命BUG (1962)
损失: 1850 万美元
灾难:携带空间探测器的水手1号( The Mariner 1)火箭前往金星,在起飞后不久就偏离了预定航线。任务控制在起飞293秒后推毁了火箭。
起因: - .名程序员把-条手写的公式抄写为错误的计算机代码,漏了一个横杠上标。少了横杠指明的平滑函数,软件就把速率的正规变分视为严重情况,自然就导致了错误修正,将火箭引导偏离了航向。
2)哈特福德体 有场倒塌事件(1978)
损失: 7000 万美元,以及给当地经济造成的2000万美元损失。
灾难:成千上万的球迷离开哈特 福德体有场仅仅过了几个小时之后,钢结构的体育场屋顶
就被湿雪压垮了。
起因:CAD软件的程序员在设计体育场时通常错误地假设钢结构屋顶的支撑仅承受纯压力。但当其中的一个支撑意外地因大雪垮塌后,引发了连锁反应,导致屋顶的其余部分像多米诺骨牌- - 样相继倒掉。
3)中情局给苏联送天然气(1982)
损失:数百万美元,严重破坏了苏联经济
灾难:控制软件出 了故障,造成跨西伯利亚输气管道压力急剧上升,导致了地球历史上最大的人为非核爆炸的产生。
起因: 据称CIA侦探在苏联购买的用于控制输气管道的加拿大计算机系统内植入了一个BUG。这项购买是苏联战略计划的一部分,用F盗窃或秘密获取敏感的美国技术。CIA 发现这桩买卖之后破坏掉软件以便其能通过苏联的审查,但却会在操作时失败。(更多)
4)几乎引发第三次世界大战(1983)
损失:将近全人类的毁灭
灾难:苏联预警系统误报美国发射 了5枚弹道导弹。幸运的是,苏联的执勤官认为如果美国真的要攻击苏联的话,发射的导弹肯定不止5枚,因此他把这次明显的攻击报告为一次误报。
起因:苏联软件的一一个BUG,对于因阳光反射云顶而导致的错误导弹侦测的过滤失败。
5)医疗器械致死案(1985)
损失:死亡3 人,严重受伤3人
灾难:加拿大的 Therac-25放射治疗仪发生故障,令病人受到了致命的辐射。
起因:由于一个 称为竞态条件(race condition)的细小BUG,一名技术人员可能在病人尚未进行适当防护的情况下意外地将Therac-25配置为高能模式。
6)华尔街崩溃(1987)
损失:一日之内损失5000亿美元
灾难:在 “黑色星期一(1987年10月19日)这一天里,道琼斯平均工业指数直落508点,总市值损失了22.6%。标准普尔(S&P) 500掉了20.4%。这是华尔街有史以来单日损失最大的一次。
起因:一轮长期牛市因证交会对内幕交易的系列调查以及面临的其他市场压力嘎然而止。:随着投资者蜂拥逃离市场,计算机交易系统产生出海量卖单,把市场压垮、令系统崩溃,导致投资者彻底不知所措。
7) 电话断网 AT&T(1990)
损失: 7500 万个电话呼叫丢失,20 万分机票预订不见。
灾难: AT&T的114个交换中心中的其中一个里面的一台交换机遭遇到一个很细微的机械问题,导致中心宕机。该中心恢复后,向其他中心发送了一条消息,从而导致其余中心全部关闭,造成整个AT&T网络瘫痪了9个小时。
起因:在一次复杂的、 用于加速呼叫的软件升级里面的一小行错误代码引起了连锁反应,瘫痪了整个网络。
8)爱国者辜负了 战士(1991)
损失:造成28名士兵死亡,100人受伤
灾难:第一次海湾战争期间, 位于沙特的一个美国爱国者导弹系统拦截入侵的伊拉克飞毛腿导弹失败。导弹摧毁了-一个美军兵营。
起因:一个软件的取整错误导致计时不正确,令爱国者忽略了飞毛腿导弹。
9)奔腾的长除法缺陷(1993)
损失: 4亿7500万美元及公司信誉
灾难:英特尔高速的奔腾芯片进行特定范围内的浮点数除法运算时会偶尔出错。比如说,4195835.0/3145727.0得到的结果是.33374而非1.33382, 出现0.006%的偏差。尽管该错误只会影响到极少数用户,这还是成为了一次公共关系器梦。估计有500万个有缺陷的芯片需召回,英特尔却只愿意向那些能正明自己需要高精度计算的消费者提供替换。最终英特尔不得不为任何有抱怨的人更换了芯片。
起因: 奔腾浮点单元的除法器有一个有缺陷的除法表,丢失了1000项记录中的5项,导致取整错误。
10)阿丽亚娜火箭爆炸(1996)
损失: 5亿美元
灾难:阿丽亚娜5 号,欧洲最新的无人驾驶火箭,在处女航开始數秒钟后被人为推毁。随之一并被摧毁的还包括所运载的用于研究地球磁场如何与太阳风互动的4颗科学卫星。
起因:导航计算机试图将侧面火箭速率从64位转换为16位时关闭。数字太大了,导致了溢出错误。导航计算机关闭后,控制被移交给同等的冗余单元,却也由于运行同-算法而同样失效了。
11)天网带来了世界末日(1997)
损失: 60 亿人死亡,人类文明和动物生态系统几乎全部毁灭( 小说)
灾难:人类操作员试图关闭天网全球计算机网络。天网以向俄罗斯发射美国核导弹作为回应,从而引发了全球核大战,即众所周知的审判日(1997年9月29日)。
起因:赛 伯达因(Cyberdyne), 领先的武器制造商,在所有的武器装备( 包括隐形轰炸机和导弹防御系统在内)上面都安装上了天网技术。天网技术组成了一个无缝的网络,能有效地将人类从通过战略防御中清除。最终天网有了知觉,在受到人类试图让其下线的威胁后,为生存,以核战争进行报复。
12)火星气候探测器坠毁(1998)
成本: 1.25 亿美元
灾难:离开地球经过286天的旅程之后,火星气候探测器点燃了自己的引擎以便推进到火星轨道。引擎是点燃了,但宇宙飞船落入火星大气层太深了,似乎导致其坠毁到火星上。
起因:控制探测 器的推进器的软件使用英制单位(确力,pounds of force),而非NASA规定的公制单位(牛顿)。
13)灾难研究(1999)
损失:科学信誉
灾难:在这 个讽刺性的案例中,用于分析灾难的软件自己遇上了一场灾难。《新英格兰医学杂志》报道,在几场自然灾难发生之后,自杀率上升了。不幸的是,这些结果是不正确的
起因:一个编程错误导致了年自杀数字翻番,足以推翻整个研究。
14)英国护照不知所踪(1999)
损失: 1260万英镑,巨大的麻烦
灾难: 英国的护照机构实施了一套 新的西门子计算机系统,该系统却无法及时为50万英国公民发放护照。该机构不得不支付了数百万进行赔偿,员工加班补偿,以及为冒雨排队等待护照的人们提供雨伞。
起因: 未经充分测试或员工培训护照机构就推出其新的计算机系统。同时,一项修改的法律要求16岁以下儿童出国旅游时需获得护照,结果导致护照需求急剧飙升,压垮这套错误犹存的新计算机系统。
15)千年之殇 Y2K (999)
损失: 5000 亿美元
灾难: 正如非著名的2000年臭虫所展示出来的东西那样,汝之祸乃彼之福。商业机构向程序员支付了数十亿美元,以便修正遗留软件的小错误。由于没有出现什么重大的失误,为千年问题所做准备的成本和时间极大地影响了所有使用计算机技术的行业。
起因:为了 节省计算机存储空间,旧时的软件通常以2个十进制数字表示年,如用“99”表示1999。软件同时将“00” 解释为1900而非2000,因此,当2000年到来时,麻烦来了。
16)炸弹(Dot-Bomb) 崩溃
损失: 5 兆元的市值损失,成干家公司倒闭
灾难: 1995 2001年间的投机泡沫令风险投资和互联网技术板块的股票市值迅猛增长。“网络泡沫( dot- com bubble)"在2000年初开始破裂,损失了数兆元的股票市值,成百上千的公司和工作被一扫而光,井引发全球衰退。
起因:公司和投资者均置标准商业模型F不顾,而是以辆牲利润为代价,关注于增加市场占有率。
17)爱虫病毒(2000)
损失: 87.5亿美元, 上百万计算机被感染,大量数据丢失。
灾难:爱虫病毒感染了 数百万台计算机,所造成的损失超过有史以来任何其它病毒所为。这种蠕虫会删除文件爱你,更改主页并弄乱注册表。
起因:爱 虫通过电子邮件、互联网聊天及文件共享系统感染用户。电子邮件有一个可执行的附件和-一个名为“我爱你"的主题行。但用户打开附件时,病毒就会感染用户计算机然后将自己发给地址簿上的每-一个人。
18)为癌症治疗 而死(2000)
损失: 8人死亡,20人严重受伤
灾难:由于 多路数据系统国际( Multidata Systems International )的放射治疗软件计算药量的错误,导致思者遭受到了有害乃至致命的辐射。负责复检软件it算的医生被起诉为凶手。
起因:软件依据数据输入的次序来计算辐射用量,有时候会带来双倍的辐射量。
19) EDS放弃了对儿童的支持(2004)
损失: 5.39 亿英镑和计数
灾难:商业服务巨头 EDS为英国儿童抚养机构(Child Support Agency , CSA)开发的一个计算机系统意外地给190万人多付了款,又少付款给另70万人,还有35亿英镑的儿童抚养费未收款,积压的待办事宜达23.9万件,有 3.6万件新的案子“卡”在系统上,以及500个被记录的错误。
起因: EDS 为CSA引入了一个复杂、大型的IT系统,还是试图同步对CSA进行重构。
20)FBI 的三部曲终结(2005)
损失:花费1.05亿美元后尚无有效的个案档案管理解决方案
灾难:经过4 年的努力,FBI 最终放弃了对其计算机系统的大检。虚拟个案档案项目是一-个集成的大型软件系统。