第一篇:软件工程四大部分总结
课程实验总结
(1)需求获取总结
需求通常是指人对客观事物需要的表现,体现为愿望、意向或兴趣,因此成为行动的一个直接原因。需求获取就是获取软件用户对软件功能需求、性能需求、质量属性、对外接口、约束等实际需求。在进行需求分析与设计时,要明白参与者与系统、参与者与参与者之间的关系,以及功能需求的实现的可能性!这些需要和用户通过面谈、需求专题讨论会、填写调查问卷等形式来获取用户需求信息!在了解和掌握用户需求后,需要撍写需求规格说明书。需求规格说明书包括用例视图、用例描述、领域模型与用户字典、非功能性需求表四大部分。
在用例视图中,需要勾画出系统的整体框架体系。把参与者在系统中的角色和各个用例的关系体现出来,将系统划分成几个层面,然后每个层次的参与者与用例之间发生关系!当用例相对较多时,可以用包来解决,在同一层面的用例可以放入同一个包!
在用例描述时,要对每个用例进行详细的描述,包括每层的中文名、英文名、参与者名,并简要说明一下该层面的功能,具体描述一下事件流!写出特殊需求,例如姓名、ID的合法性!
在用例视图和用例描述都完善后,需要进行领域建模!在领域建模里,将各个类之间的关系表示出来,关系有三种,分别为一对一、一对多、多对多的关系,然后创建用户词典,将领域建模中的每一个类和属性,及其功能进行说明!每一个类及其类的属性都要创建一个表,类说明表里标明实体名、说明、基本属性,属性说明表里标明实体名、说明、从属实体!类说明表实体名即类名(例如:Customer(客人))、属性说明表从属实体表示该属性属于哪一个类!在建用户词典时,要一个类一个类的有序的见表,每一个类的用户词典要有序排列!一般都是类说明表,接着是属性说明表!
在领域建模与用户词典完善后,考虑到用户的非功能性需求,需要创建一个非功能性需求表,包括质量属性和分析后的约束!质量属性以表格的形式来体现,包括有性能、安全性、易用性、持续可用性、可伸缩性、互操作性、可靠性、鲁棒性、易理解性、可扩展性、可重用性、可测试性、可维护性、可移植性等,分析后的约束主要有技术上约束、平台环境的约束、数据库约束、界面风格的约束、时间约束、其他等!
在捕获需求分析时,多考虑到用户的体验问题,以及用户的功能需求合理性和实现性,与用户协商,通过双方的洽谈来达成相互的认可和接受!从而解决需求困难问题,当然需求也需要验证,在需求获取中要考虑到是否正确和充分地支持业务需求,渐渐细化系统需求!
通过这一部分的学习,明白了需求获取与分析是软件工程所最终的目的,所有的工作都将要围绕着需求来做,如果需求不准确,会给后续的开发带来困难,而且往往所做的后期工作因与需求不一样而导致失败!让我体会到了这个部分的重要性和主导性,一个项目是否成功往往由需求分析和设计是否成功来决定!所以需求分析是最关键最重要的部分!(2)架构分析与设计总结
在进行架构分析与设计时,大体上主要分两大部分!第一部分主要是架构分析部分和概要架构设计!
在进行架构分析时,通过视图来来体现系统的架构体系和具体的流程!通常会用序列图来来进行架构分析!选取关键需求添加客人用例,根据需求中的用例描述,进行系统分析。大体上可分为三个分析类,其分别为界面类、实体类、持久化类。详细的表示出他们间的交互关系!界面类即用户登录的界面,操作或选择的菜单界面,在这个界面里实现对实体类和持久化类的操作,持久化类的数据需要保存到数据库中,按照序列图的特点层层递进,分析类与分析类之间发生访问和操作,这样是每个分析类的功能结构清晰明了,有助于后期的软件开发!在概要架构设计时,开始概要的划分一下层,比如将显示界面的类,或窗口 的类划分为界面层,如图1所示,可以讲Login用例划分为界面层。
Login使用安全性算法进行密码验证
图1 将进行对数据操作和功能的展现部分化分为实体层!
第二部分为架构设计部分与细化架构设计。在这一部分主要是画视图,通过视图来了解系统架构。主要有逻辑视图、开发视图、部署视图三大类。逻辑视图设计到了系统逻辑层次图,开发视图有系统开发环境图、系统开发依赖关系视图、系统开发交互关系视图。系统逻辑层次图就是将各层之间的逻辑关系以及层内部调用关系体现出来!系统开发视图,主要是体现出系统开发的环境和开发所用工具,以及系统所基于的平台,各个层的基础框架和系统运行过程中文件的生成种类与先后的关系!系统开发依赖关系视图和系统开发交互关系视图,全是展示出类之间的调用、继承、泛化,部署视图从整体系统部署上来展示系统所涉及到的运行平台和支撑平台!
通过对这部分的学习和联系,我学会了视图的画法,以及看明白各种视图所体现的意义,比较全面的理解和认知到一个项目的子系统的架构设计和分析!在子系统的架构设计和分析时,自己需要做哪些工作,需要画哪些视图!一个系统的架构是怎样搭建的,是怎样安排和规划的!明白了架构分析和设计的目的是一些复杂信息的隐藏、使整个项目得到智能控制,从而管理项目的复杂性并保持系统的完整性和一体性!这为后期的模块的复用提供了坚实的基础,也为后期的管理奠定了基础!
(3)子系统与类分析与设计总结
这一部分就是开始将前期的工作开始投入到具体实现中!要考虑到各个类之间的调用关系的清晰!子系统结构的精简化和易扩展性、可重用性、易维护性!这一部分主要是各个层次内部各个类之间的调用的设计!需要画类的结构图纵览、类结构图界面层、类结构图实体层、类结构图细节、类结构图分层,在类的结构图纵览图里,把系统涉及到的所有的类都以某种关系展现出来,层内部类与类的相互关系,调用的接口,以及用到的设计模式,都以类图展现出来!在这一部分的学习中,学到了设计模式,使自己的代码的重用性、可扩展性渐渐提高,提倡高内聚低耦!在类的设计中,创建初始的设计类,根据将要设计的分析类类型来采用不同的方法设计类,分析类类型有边界类、实体类(或控制类)!边界类控制着界面层,是登陆界面的类的一部分!由边界类来调用控制类,控制类控制着实体层类的生成和关系!为了实现系统的功能,类与类之间必须发生联系,彼此又相对独立!在每层能用设计模式的都用设计模式来解决,我的这部分用到的设计模式有简单工厂模式、工厂方法模式、抽象工场模式、桥接模式!特别是桥接模式,我对它的印象很深!它解决了我以前不能解决的闹心问题!
这个问题就是顾客订房时,对所需要客房的定义的问题,由于客房种类不同、租金各异、大小不一,所以一直让我很纠结,如果要定义类就定义几十个,增加了代码的复杂度!桥接模式能够很好的分离变量,然后变量之间的类自由的组合,使问题变得简单的多,这里可以定义两个抽象类客房类型Sort和客房House,然后由Sort派生三个子类,普通间(ordinary)、标准间(standard)、豪华间(fashion),由House类派生出三个子类,单人间(smallsize)、两人间(middlesize)、三人间(largesize),然后只需在House的私有成员部分,定义一个Sort类型的对象指针就可以了!这样只需要八个类,不然的话要需要二十七个类!这样就可以很轻松的定义一个房间的类了!通过这部分的学习,让我学会了面向对象的巧妙应用!
还有一个设计模式给我的印象也很深,那就是适配器模式!在用到某一个模块式,可以借用别人已经写好的接口,不需要知道是怎样实现的,只需要明白调用某个接口能实现什么功能!然后自己可以构建一个自己的类和自己的接口的定义,在类的私有部分定义一个别人写好的类的对象,在接口的实现部分调用别人的接口来实现自己想要的功能!通过对设计模式的理解,感觉到了面向对象程序设计的灵活性和多变性!为自由以后的编程带来很大的帮助!(4)数据库设计总结
在数据库的设计的学习中,给人的感觉就是,不是创建表就是画E-R图!我在做这部分的作业时,是按照要求先画E-R图,在创建表!
在画E-R图的过程中,首先要找该系统的实体集,把实体集找完后,分析实体集的属性,然后判断哪些属性可以作为实体集的主键,以便于与其他实体集区别开来!我的这个实验系统的有关实体集有“客房”、“订单”、“收银员”、“顾客”,其各自对应的主键分别为房间号、订单号、员工号、ID号,在实体集的属性分析完后,开始考虑各个实体集之间的关系!一般分为三种关系,有一对一、一对多、多对多三种关联关系!还有相互产生的联系如收银员打印订单、收银员提供客房、订单包括客房、订单属于客人,客人入住客房!在分析实体集之间的关系时,需要考虑到一些问题,比如就拿订单和客房、客人三个实体集来说,一个客人可以有多个订单,一个订单可以对应一个房间也可以对应多个房间,一个房间可以入住一个客人,也可以入住多个客人!这之间的关系比较混乱,所以比较难以确定!我采用的是客房与订单是多对多,客人和客房是一对一,客人和订单是一对多的关系!
在创建表,我用的是Microsoft Access 这个工具来建表!在建表时,每一个表要有一个主键,将每一个实体集都对应建立一个数据表,在把表建成功后,找表与表之间的关系!在建表时,根据E-R图,来确定相关联的数据表!这里订单里面包含有顾客的ID、客房的房号、收银员的员工号,所以订单是关键的数据表,它与顾客、客房、收银员数据表相连!实现表的连接时,将某表的主键拖到含有该主键的数据表中的该主键上,则会产生联系,形成连线!在这一部分发现自己只能实现一对多的关联,且该关联不能修改!这个至此也没有找到怎样修改Access 中表之间的关联关系!通过这一部分的学习,让我对数据库有了一个初步的认识和了解!明白了数据库中表的创建,及其创建的方法!只是还没有涉及使用Sql语句来建表和对表进行操作!明白了数据库咋整个系统中所处的重要地位!对今后的数据库学习有了一个很大的帮助!
第二篇:四大笔试(部分)
2005四大笔试合集(部分)
KPMG考试总结
第一部分:35分钟35个逻辑数学题 根据图表 不难 但是可能时间有点紧张
第二部分:25分钟48个英文阅读题 gre/gmat 风格 风卷残云涂完 不知道正确率
和高露洁的逻辑部分完全一样 都是用的S&H香港做的题目,要求也一样 不要在试卷上留下任何痕迹 为了重复使用,阅读部分体型一样 具体题目不同
看来应该好好练习一下gmat了 否则会死在这一关
ey & kpmg笔试
因为周五的时候FrankSA特地写了一番话鼓励我申请unilever所以就真的花了一天的时间去apply,居然到周六晚上才开始准备周日的两场笔试...首先是到kp的网站做了他们的样题...都只有50%的正确率...而且那个时候我金山词霸还开着..-,-之后又作了几套朋友发给我的verbal样题,貌似只错了两三道不过速度...keke...我发现我根本不能同时兼顾速度和质量-,-,因为很晚了而且反正大家的状态都差不多,而且我根本没有考过甚至看过gre&gmat,所以即使我被kp淘汰了也无话可说了...当下决定放弃。接下来是ey的笔试,因为已经很晚了当时,所以就向同学打探了一下安永笔试的方向(即安永考的似乎都是比较专业和宏观的东西),稍微看了一些模版之类的东西.电梯到五楼,一出门就看到人头攒动,不乏许多ppmm正装出场...看看自己
真是寒酸。闲来无事听到他们说安永7:30就开始了...8:30,9:30,ms 10:30
还有笔试的样子...//寒一个,不过其中很多是南京大学的等到上一场同学出来,我们坐定差不多是9:30,考试的要求和以前的都一样,不过监考老师多了很多,hehe,作文题目是:
1.近几年中国gdp都保持了8%的增长速率,你认为在接下来五年内是否会保持这个速度,并解释理由
2.似乎谈的是劳动力涌入上海北京等这样大城市的优缺点,要求分析...我的求职大事记——kpmg笔试
知道kpmg的笔试难还要追溯到去年的这个时候,当时99国金一个后来去了渣打的师姐在job版发的文章我印象深刻,说的是kpmg笔试题目很多很多来不及做,而且还很容易把题号搞错。看了以后就觉得很慌。后来暑假实习的时候一个99经济的师兄又跟我说kp笔试很难,说让我提前找点题目做做有点感觉,可惜后来不知道自己干什么去了就荒废了,汗……时隔一年,挨到自己上战场,之前ey笔试之前也很慌,因为我以为ey笔试和kp是差不多的,结果ey之前扛了n本gmat和gre的书回家,后来知道ey只写作文,看看自己托福6.0的作文成绩就又荒废了没去做-.-
两天前开始准备kp的笔试,上google搜了半天没找到一套真题(想想也是阿,kp花了多少钱从shl买来的真题怎么可能随便让我google搜到-.-),于是只好认认真真去做kp网站上的practice test。一共verbal和数学各6题,第一次做完吓死了我,居然逻辑里面6题错了5题,而且数学没来得及做完,做完的4题里面也只对了2题。记得那个晚上我是半夜做的题目,对着屏幕愣了半天
第二天开始决定发奋,可是觉得gmat和gre的逻辑完全不对kpmg的路子。于是继续上网找,找到了shl的官方网站,就是卖题目给各家公司的公司。拿它网上的练习题做,结果还不算很差,数学22题对了20题,逻辑28题对了23题。之后又练了几遍,觉得准备还是不够,又去找雅思的题目做。从无忧雅思网下载了一套阅读题,光做t/f/ng部分,觉得思维开始混乱,越做错越多,后来受不了了就开了bbs灌水并且决定不再复习了。
今天做逻辑,感觉真的好难啊,很多题目都是凭感觉猜的。我大概只提前了一分多钟做完,没有时间再去深思熟虑,只能凭感觉了。有一些题目,我把文章读两遍都做不来,汗……可能太紧张的关系。反正以后大家不论考什么都不能紧张阿!本来想记住题目来发笔经的,//sigh毕竟不是gre机考阿,那些题目搞得一塌糊涂我现在什么都不记得了,哭……
然后做数学,唉,又是心太急,像赶着投胎一样做题目。题目是中文的,理解起来容易很多,但是还是有很多很多trick的,一定要胆大心细阿。归纳来归纳去,这种考试一定要胆大心细千万不能粗心阿!!我就老是犯这个毛病,从小学开始就这样了,呜呜,以前复习gre的时候做数学也从来不能全对的。反正如果对时间有把握的话,应该不会做不完的我觉得。
考完以后觉得很后悔,数学做得太快,后面的20题没有检查也不知道自己做得对不对。本来对逻辑和数学就很慌,也没想过自己能过kpmg的笔试虽然自己真的很喜欢这家公司的气氛。自从ey发面试通知以后,就觉得自己心理承受能力很差,真的很不好的。所以从kp这轮笔试开始,我要笑看风云变幻,我自岿然不动-.-b
回家的时候经过虹口体育场,满街的申花球迷。真想跳下车去看球发泄一下被kp蹂躏的心情,哈哈-.-
写了这些也许对大三的ddmm有点帮助。祝大家都能成功吧!
安永笔试
一共两道题,选一道,45分钟写篇英文议论文
1。中国gdp增长很快,常常成为报章头条,但是这些statistics的可靠性如何?
how reliable is statistics?
2。will china's property boom continue(都是大意……)
感觉题目很大,第二个更是因为部确定题目意思而没有写……然后居然有点紧张ft太丢 人了,很多词就是想不起来,然后一交卷都想起来了……所以用的都是很简单的词。
两个jj监考,不能用电子词典辞典,手机关机。不许偷看题目考完说大概下个礼拜出名单请大家关注bbs
EY
第一题是关于GDP高估的;第二题是关于房地产繁荣。我问了4个考官,一致的答案,不过他们都安慰我说,是一个他们聘请的机构的外国人批改作文,主要看文法和思路。不过我觉得他是安慰我,都跑题了,看文法思路有什么用
1.adavantages and disadvantages of investment in west region of china
2.the effect of dievalue of RMB
Pwc笔试题
1.how u cope with a difficult person
2.u first thoughts about the lauch of shenzhou v
德勤笔试
想知道多些细节的可以看看。
四个部分;
part1:英文,写一项你认为重要的发明,并给出理由。不多于500字。准备过TWE的话显然不是问题。
part2&3:非常简单的英文逻辑选择,没看出2和3有多大区别
part4:中文作文,同样不多于500字。题目是从北大教改引出的关于对大学老师需要什么样的绩效评价的问题。
Time limit: 60 mins,比较紧,也比较bt.上财的PWC考题
偶是11.7参加的笔试,反正感觉还可以吧
是一篇阅读(1.5一张A4纸长度)加一篇作文
阅读时关于知识产权方面的文章
作文由两个题目,一个是关于如何理解风险投资,一个时关于如果理解广告的消极作用和积极作用.另外,他会通知带好一张照片,个人简历及相关证明文件
南开的pwc考题
阅读是关于垃圾处理的作文是:1:“Is the US economy permantently decline?”;2:关于青年滥用药的2选1
dtt复旦考题全纪录
第一个我就不会.考试时间一小时,第一部分是填空和选择,记住的有:
1.数列6,10,18,32,?问?是几。
2.某人出70买进一个x,80迈出,90买会,100迈出,说这桩买卖怎么样?
3.月球绕地球一圈,至少多少时间?
4.7个人用7小时挖了7米的沟,问同样的速度在50小时挖50米的沟要多少人。
5.鱼头长9,鱼尾等于鱼头加半个鱼身,鱼身等于鱼头加鱼尾,问鱼全长多少。
6.某女的弟弟兄弟比姐妹多一个,问此女兄弟比姐妹多几个?
还有一些直观的图形题,比较弱质的智商题。
第二部分是逻辑,比较幽默,是很旧的题目了。
3个人住酒店30快,经理找回5块,服务生中阴了2块,找给每人1块,3*(10-1)+2=29,问怎么回事。
第三部分是写作,三篇,都是书信形式。
一片篇中文的祝贺信,祝贺某男当了某公司xx
两篇英文的,一是说有事不能应邀,派另人去
另一片是讨债的,7天不给钱就滚蛋之类的主要考business letter格式,还好隔天晚上狂背一同模板
不过我写的内容空洞,字体潦草,估计没什么希望了
补充:后面的图形题就是普通的智商测试
如给你5个图形,让你选其中最特殊的一个
如告诉你a图形和b图形对应,那么f图形对应的是哪个图形?
除第1、4、5、6是填空题,其它均为选择题。
第一部分给题中文,第二部分起英文给题。
第二部分的智力题要用英文回答的,所以稍微有点难度。
pwc 的笔试
45分钟
一篇阅读,长度是一张A4纸的篇幅,关于一本索罗斯的传记,几个问题记不清了,10个左右吧 作文题目是二选一 1)你认为中国所面临的最大的环境挑战是什么?怎么解决?
2)你最admire的一家公司是哪个?
PWC作文
1.最近10年来中国媒体的变化
2.你认为发展汽车产业和公共交通哪个更重要
DTT-笔经(2006)
最先发笔经-北京地区第一场笔试
作者: zhangyz03发布日期: 2006-11-01查看数: 3363出自:
德勤今年的笔试是有中聘网组织的,很不专业,用的是SHL的试题,但是只有verbal,还是
翻译过来的中文版,25分钟,48道题,12片阅读短文,时间还算充裕,大家加油。
南京德勤的笔经11月9日
作者: GinaRyan发布日期: 2006-11-09查看数: 909出自:
我是今天早上第一批笔试的,发现之前人的笔经是很正确的,似乎德勤今天在哪里都用的 是同一套shl中文题。主要问题在于德勤的工作人员也不清楚考试时间,真正让你答题的时 间大约只有16分钟,而且事前没有说太清楚。16分钟我想各地应该都是差不多的,做好心 理准备,迅速做题是来得及的。
题目总结:
1、许多人支持政府将经费缩减用在其他方面比如教育,认为对社会有意义.但是如果用在军事,航天,就不会支持
2、地方政府对于大企业往往会提供一些优惠措施,认为会提高就业,促进社会繁荣。但是往往是中小企业会提供更多的就业机会,但是政府的许多规定往往是不利于中小企业的。
3、以前认为,想长高要经过经常的单一的锻炼,但是现在有科学研究表明有其他的方法也可以长高,有一种新的东西“快长高”,提供了这种可能性。
4、1993年教师的工资在相同教育背景的情况下的平均收入牌第9,最近教师工资的水平上涨,现在牌在相同教育背景的情况下的第6,是所有工资平均的87%
5、警察要成立区域肃毒小组与当地的一个什么警察组织配合贩毒,组织成立以后,后者只 负责其他的犯罪涉及到毒品的案件,其他的由海关负责。
6、东南亚的纺织品在欧洲比较受到欢迎,因为价格低廉。后来汇率调整,东南亚的货币升
值,但是东南亚的纺织品在欧洲的销量却没有受到很大的影响。
7、自由竞争学派的经济学家不赞成政府管制,认为这样会增加商业成本,消弱企业的竞争力,比如一些传统行业等等。但是同时认为在金融行业有政府管制会对这个行业产生有利的影响。
8、城市甲和城市乙:城市甲出台了一系列政策,增加对汽车的监控和各种收费,导致很多消费者在购车前都要深思熟虑。有些大型汽车商因此取消了在城市甲的销售活动。而城市乙则没有这样的措施
9、一次测试结果中,中国学生比美国学生的数学成绩要好得多。一些教育学家认为,中国更注重专业课,基础课和学习××××的培养,而美国更注重创新能力和实践动手能力
10、将空调温度保在13度以上时,温度越低,效率越高。
还有一点不记得了。大家加油吧
补充一些:
1。增高不只是做做运动就可以了,还有一种药可以吃。
2。为了提高工作效率,管理层必须经常改革办公结构。
3。提高客户的忠诚度什么的25分钟,12篇中文逻辑,题目很简单的,肯定来得及
还可以多出10分钟左右检查一遍
第三篇:软件工程总结
软件工程课程总结
摘要:
计算机是20世纪最重大的科学技巧成就之一,使当代社会的经济、军事、科研、教育、服务等方面在概念和技巧上发生了性的变化,对人类社会的进步已经并还将产生极为深刻的影响。目前,计算机是世界各发达国度剧烈竞争的科学技巧领域之一。
电子计算机早期功效主要是计算,后来已远远超越单纯计算的功效,还可模拟、思维、进行自适应反馈处理等等,把它叫做“电脑”更为合实际。由于电子计算机功效的飞跃性发展,应用于生产和生活的各个方面,直接和显著地提高了生产、工作和生活的效率、节奏和水平,在软科学研究和应用中它也起着关键作用,因此它已被公认是现代技巧的神经中枢,是未来信息社会的心脏和录魂。计算机学科分为四个领域,分别是计算机科学,计算机工程,软件工程和信息系统。
正文:
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。包括项目管理,分析,设计,程序的编写,测试和质量控制。它涉及到程序设计语言、数据库、软件开发工具、系统开发平台、标准、设计模式等方面。
学了《软件工程》这门课程和一些有关资料后,感觉一些东西都曾经接触过,但在实际工作中有些理论要完全遵循可能还有些障碍,软件工程只是提供了理论上的一些结论,但对项目的具体可操作性的规范的制定方面却做的很少,《软件工程》发展了几十年,光是开发模型就达到了10多种,对不同的项目采用合适的开发模式,有些项目在不同的开发阶段可能还要转换开发模式,把它们灵活的应用到实际中还是很困难的。
软件技术是信息技术产业的核心之一,软件技术的发展是与信息技术产业的发展互相促进的。当今世界,信息技术正处于新一轮重大技术突破的前夜。预计今后 20~30 年是信息科学技术的变革突破期,可能导致 21 世纪下半叶一场新的信息技术革命。近年来,从 IT 界到一些国家首脑,都高度关注以物联网为标志的新一轮信息技术的发展态势,认为这是继 20 世纪 80 年代 PC 机、90 年代互联网、移动通信网之后,将引发 IT 业突破性发展的第三次 IT 产业化浪潮。每一次重大的技术变革都会引起企业间、产业间甚至国家间竞争格局的重大变化,也促进了软件技术与软件产业的重大变革与发展。
近年来,信息技术、软件技术、软件系统与软件产业的发展备受关注,已有不少论述、分析与判断。近10 年内网络技术经历宽带化、移动化和三网融合将走向基于 Ipv6 的下一代互联网,2010 年 1 月,国家 863 计划信息技术领域办公室和国家 863 计划信息技术领域专家组,在上海举办“信息-物理融合系统 CPS发展战略论坛”,提出“信息-物理融合系统 CPS 是一个综合计算、网络和物理环境的多维复杂系统,是信息和物理世界的深度的融合交互,可实现大型工程系统的实时感知、动态控制和信息服务,使系统更加可靠、高效与实时协同,使得人类物理现实和虚拟逻辑逐步融合,具有重要而广泛的应用前景。业界关于软件工程的代表性观点创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件;也就是把工程应用到软件上。与开发、管理及更新软件产品有关的理论、方法及工具。一种知识或学科,目标是生产品质良好、准时交货、符合预算,满足用户所需的软件。实际应用科学知识在设计、建构电脑程序,与相伴而来所产生的文件,以及后续的操作和维护上。
6使用与系统化生产和维护软件产品有关之技术与管理的知识,使软件开发与修改可在有限的时间与费用下进行。
7建造由工程师团队所开发之大型软件系统有关的知识学科。对软件分析、设计、实施及维护的一种系统化方法。系统化地应用工具和技术于开发以计算机为主的应用。
10软件工程是关于设计和开发优质软件。
《软件工程》是一门综合性和实践性很强的核心课程,它属于是一门交叉学科,包含有:软件开发技术(软件开发方法学、软件开发过程、软件工具和软件工程环境)、软件工程管理(软件管理学、软件经济学、软件心理学)。主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件测试、项目计划与管理。
本课程是面向准备从事软件开发的毕业生而开设的一门专业课程。针对计算机教学中软件工程这一薄弱环结,结合目前软件开发商对人才的要求,对计算机专业的毕业生进行软件工程强化培训,目的是使毕业生能够了解和掌握软件工程的基本理论和方法,并在实际软件开发中运用这些方法。
我理解,软件工程是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。而且,软件工程在企业范围内运行,一定需要企业资源的支持,要与企业的经营、决策、管理体系联系在一起,才能够被踏踏实实的落实下来。
软件工程项目是一个需要一步一步的计算,分析思考而来的,需要不断思考,研究不断进步,软件业作为一个服务业,要想得到发展,首先必须形成一个对软件服务有迫切需要的市场。其次,这个市场中的消费者必须具备足够的购买力。软件的消费群体简单一点,可以分为个体消费和企业消费。中国的企业群体,数量庞大,但是质量不高。上规模的企业极少。国内目前能够形成比较大规模的独立市场的,肯定是小规模的软件系统。
随着信息化时代的到来其地位越来越受到人们的重视,软件工程从一个学科,或是某一个研究方向来说,人员仅仅是过程,方法的执行者,所以人员素质往往被忽略,软件工程是一门实践性很强的学科,所以在实际的软件研究过程中,人员的素质占有很重要的地位。要有出色的软件问世,研发人员的素质至关重要!
作为软件工程的学习者应该不断创新,不断尝试、实践,不断研究和学习,中国的软件工程技术依旧滞后于国外一些软件工程技术,作为新一代的学习者应该担当起振兴起中国软件事业,使中国科技得到高速发展!
现在已经是信息化时代,信息化潮流不断涌现,想要掌握主动权就是掌握信息化的发展方向,这就需要我们不断学习,时间,研究,学习国外的先进技术,转变自己的技术,然后融合,创新。
软件技术不是一成不变的,是随着社会的进步的不断进步,不需要不断的创新,不断的改善的,需要我们不断的学习,不断的研究,不断进步。
第四篇:软件工程总结
1.Software is a product and can be manufactured using the same technologies used for other engineering artifacts Answer: b 2.WebApps are a mixture of print publishing and software development, making their development outside the realm of software engineering practice.Answer: b 3.Software engineering umbrella activities are only applied during the initial phases of software development projects.Answer: b 4.Planning ahead for software reuse reduces the cost and increases the value of the systems into which they are incorporated.Answer: a 5.The essence of software engineering practice might be described as understand the problem, plan a solution, carry out the plan, and examine the result for accuracy.Answer: a 6.In agile process models the only deliverable work product is the working program.Answer: b 7.A most software development projects are initiated to try to meet some business need.Answer: a 8.In general software only succeeds if its behavior is consistent with the objectives of its designers.Answer: b 9.Software processes can be constructed out of pre-existing software patterns to best meet the needs of a software project.Answer: a 10.Process technology tools allow software organizations to compress schedules by skipping unimportant activities.Answer: b 11.It is generally accepted that one cannot have weak software processes and create high quality end products.Answer: a 1.Requirements engineering is a generic process that does not vary from one software project to another.Answer: a 2.A stakeholder is anyone who will purchase the completed software system under development.Answer: b 3.It is relatively common for different customers to propose conflicting requirements, each arguing that his or her version is the right one.Answer: a 4.Developers and customers create use-cases to help the software team understand how different classes of end-users will use functions.Answer: a 5.Use-case actors are always people, never system devices.Answer: b 6.Analysis patterns facilitate the transformation of the analysis model into a design model by suggesting reliable solutions to common problems.Answer: a 7.In win-win negotiation, the customer’s needs are met even though the developer’s need may not be.Answer: b 8.In requirements validation the requirements model is reviewed to ensure its technical feasibility.Answer: b
1.Object-oriented domain analysis is concerned with the identification and specification of reusable capabilities within an application domain.Answer: a 2.In structured analysis models focus on the structure of the classes defined for a system along with their interactions.Answer: b 3.Creation and refinement of use cases if an important part of scenario-based modeling.Answer: a 4.It is important to consider alternative actor interactions when creating a preliminary use case.Answer: b 5.Brainstorming is one technique that may be used to derive a complete set of use case exceptions.Answer: a 6.In many cases there is no need to create a graphical representation of a usage scenario.Answer: a 7.One or more attributes of a data object must be defined as a key to allow the location of an instance of the data object.Answer: a 8.Attributes are chosen for an object by examining the problem statement and identifying the entities that appear to be related.Answer: b 9.An analysis package involves the categorization of analysis model elements into useful groupings.Answer: a 10.The data flow diagram must be augmented by min-spec that can serve as a guide the design of the software component that will implement the process.Answer: a 11.The UML sequence diagram show the order in which system events are processed.Answer: b 12.Analysis patterns are discovered, they are not explicitly created.Answer: a 13.It is not possible to justify the time required for WebApp requirements analysis.Answer: b 14.UML activity diagrams can be used to represent the user observable functionality delivered by the WebApp as well as the operations contained in each analysis class.Answer: a 15.Configuration analysis focuses on the architecture of the user’s web browsing environment.Answer: b 16.Content objects are extracted from use cases by examining the scenario description for direct or indirect content references.Answer: a 1.With thorough testing it is possible to remove all defects from a program prior to delivery to the customer.Answer: b 2.Program flow graphs are identical to program flowcharts.Answer: b 3.The cyclomatic complexity of a program can be computed directly from a PDL representation of an algorithm without drawing a program flow graph.Answer: a 4.Graph-based testing methods can only be used for object-oriented systems Answer: b 5.Equivalence testing divides the input domain into classes of data from which test cases can be derived to reduce the total number of test cases that must be developed.Answer: a 6.Boundary value analysis can only be used to do white-box testing.Answer: b 7.Orthogonal array testing enables the test designer to maximize the coverage of the test cases devised for relatively small input domains.Answer: a 8.Client/server architectures cannot be properly tested because network load is highly variable.Answer: b 1.The best representation of system architecture is an operational software prototype.Answer: b 2.The architectural representations can be an enabler for communication among project stakeholders.Answer: a 3.An architectural description is often documented using an architecture template.Answer: b 4.An architectural genre will often dictate the architectural approach that may used for the structure to be built.Answer: a 5.Before an architectural pattern can be chosen for use in a specific system it must have a code implementation to facilitate its reuse.Answer: b 6.Once selected, archetypes always need to be refined further as architectural design proceeds.Answer: a 7.Quantitative methods for assessing the quality of proposed architectural designs are readily available.Answer: b
Chapter 10 Self-Check Quiz
1.In the most general sense a component is a modular building block for computer software.a.True b.False
Answer: a(Section 10.1)
2.In the context of object-oriented software engineering a component contains
a.attributes and operations b.instances of each class c.roles for each actor(device or user)d.set of collaborating classes
Answer: d(Section 10.1.1)
3.In traditional software engineering modules must serve in which of the following roles?
a.Control component b.Infrastructure component c.Problem domain component d.All of the above
Answer: d(Section 10.1.2)
4.Software engineers always need to cerate components from scratch in order to meet customer expectations fully.a.True b.False
Answer: b(Section 10.1.3)
5.Which of the following is not one of the four principles used to guide component-level design?
a.Dependency Inversion Principle b.Interface Segregation Principle c.Open-Closed Principle d.Parsimonious Complexity Principle
Answer: d(Section 10.2.1)
6.The use of stereotypes can help identify the nature of components at the detailed design level.a.True b.False
Answer: a(Section 10.2.2)
7.Classes and components that exhibit functional, layer, or communicational cohesion are relatively easy to implement, test, and maintain.a.True b.False
Answer: a(Section 10.2.3)
8.Software coupling is a sign of poor architectural design and can always be avoided in every system.a.True b.False
Answer: b(Section 10.2.4)
9.WebApp content design at the component level focuses on content objects and the manner in which they interact.a.True b.False
Answer: b(Section 10.4.1)
10.A WebApp functional architecture describes the key functional components and how they interact with each other.a.True b.False
Answer: a(Section 10.4.2)
11.Which of these is a graphical notation for depicting procedural detail?
a.box diagram b.decision table c.ER diagram d.flowchart
Answer: d(Section 10.5.1)
12.A decision table should be used
a.to document all conditional statements b.to guide the development of the project management plan c.only when building an expert system d.when a complex set of conditions and actions appears in a component
Answer: d(Section 10.5.2)
13.A program design language(PDL)is often a
a.combination of programming constructs and narrative text b.legitimate programming language in its own right c.machine readable software development language d.useful way to represent software architecture
Answer: a(Section 10.5.3)
14.In component-based software engineering, the development team examines the requirements to see which are amenable to composition, rather than construction, before beginning detailed design tasks.a.True b.False
Answer: a(Section 10.6)
15.Which of the following is not one of the major activities of domain engineering?
a.analysis b.construction c.dissemination d.validation
Answer: d(Section 10.6.1)
16.Which of the following factors would not be considered during component qualification?
a.application programming interface(API)b.development and integration tools required c.exception handling d.testing equipment required
Answer: d(Section 10.6.2)
17.Which is the following is a technique used for component wrapping?
a.black-box wrapping b.clear-box wrapping c.gray-box wrapping d.white-box wrapping
Answer: b(Section 10.6.2)
18.Which of the following is not one of the issues that form a basis for design for reuse?
a.object-oriented programming b.program templates c.standard data d.standard interface protocols
Answer: a(Section 10.6.3)
19.In a reuse environment, library queries are often characterized using the ________ element of the 3C Model.a.concept b.content c.context d.all of the above
Answer: c(Section 10.6.4)
1.The importance of software design can be summarized in a single word a.b.c.d.Answer: d(Section 8.1)
2.Which of the following is not a characteristic common to all design methods?
a.configuration management b.functional component representation c.quality assessment guidelines d.refinement heuristics
Answer: a(Section 8.2.2)
3.Which of the following can be used to represent the architectural design of a piece of software?
a.Dynamic models b.Functional models c.Structural models d.All of the above
Answer: d(Section 8.3.2)
4.Design patterns are not applicable to the design of object-oriented software?
a.True b.False
Answer: b(Section 8.3.3)
5.Since modularity is an important design goal it is not possible to have too many modules in a proposed design.a.True b.False
Answer: b(Section 8.3.5)
6.Information hiding makes program maintenance easier by hiding data and procedure from unaffected parts of the program.accuracy complexity efficiency quality
a.True b.False
Answer: a(Section 8.3.6)
7.Cohesion is a qualitative indication of the degree to which a module
a.can be written more compactly.b.focuses on just one thing.c.is able to complete its function in a timely manner.d.is connected to other modules and the outside world.Answer: b(Section 8.3.7)
8.Coupling is a qualitative indication of the degree to which a module
a.can be written more compactly.b.focuses on just one thing.c.is able to complete its function in a timely manner.d.is connected to other modules and the outside world.Answer: d(Section 8.3.7)
9.When using structured design methodologies the process of stepwise refinement is unnecessary.a.True b.False
Answer: b(Section 8.3.8)
10.Software designs are refactored to allow the creation of software that is easier to integrate, easier to test, and easier to maintain.a.True b.False
Answer: a(Section 8.3.10)
11.Which of the following is not one of the five design class types
a.Business domain classes b.Entity classes c.Process classes d.User interface classes
Answer: b(Section 8.3.13)
12.Which design model elements are used to depict a model of information represented from the user’s view?
a.Architectural design elements b.Component-level design elements c.Data design elements d.Interface design elements
Answer: c(Section 8.4.1)
13.Which design is equivalent to the floor plan of a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: a(Section 8.4.2)
14.Which design model is equivalent to the detailed drawings of the access points and external utilities for a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: d(Section 8.4.3)
15.Which design model is equivalent to a set of detailed drawings for each room in a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: b(Section 8.4.4)
16.The deployment design elements specify the build order for the software components.a.True b.False
Answer: b(Section 8.4.5)
第五篇:软件工程总结
第一章软件与软件工程的概念
软件的概念:软件是计算机系统中与硬件相互依存的另一部分,软件包括程序,数据,及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列。数据是使程序能够正确地处理信息的数据结构。文档是与程序开发,维护和使用有关的图文资料。
程序的最小单位是函数及子程序,程序与数据是分离的,在面向对象程序设计时代,程序的最小单位是类,在类中封装了相关的数据及指令代码。
软件的特性,判断正误:1.软件是无形的、不可见的逻辑实体,因此,软件是无法描述的。(错)
2、软件的开发特性是指软件需要大量手工劳动,难以自动化生产。(对)
3、有缺陷的软件就是废品。(错)
4、软件的生产指的是软件的复制。(错)
5、由于软件的开发充满人的个性特点,因此管理并不决定软件开发的成败(错)。
6、软件的开发环境往往就是软件的运行环境,或者与其兼容。(对)
7、合格的软件产品不需要维护,软件需要维护说明其质量不合格。(错)
8、软件可以不断改进,因此软件不需要废弃。(错)
软件的分类:1,系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件,相关的软件和数据协调,高效的工作的软件。2,应用软件,是在系统软件的支持下,在特定区域内开发,为特定目的服务的一类软件。3,支撑软件,也叫工具软件,是协助用户开发软件的工具性软件。4,可复用软件,最初实现的典型的可复用软件是各种标准函数库,通常是由计算机厂商提供的系统软件的一部分。
IEEE给出的定义:软件工程是开发,运行,维护和修复软件的系统方法。软件的定义:计算机程序,方法,规则,相关的文档资料一集在计算机上运行时所必需的数据。
软件危机的典型表现
1、成本太高,预算不准
2、超过预计时间
3、软件质量标准不明确
4、生产率低
5、缺乏文档资料,难以维护。原因:1,缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。2.软件人员与用户的交流存在障碍,除了知识背景的差异,缺少合适的交流方法及需求描述工具。3,软件开发过程不规范,缺少方法和规范的指导。4,随着软件规模的增大,其复杂性往往会呈指数级升高。5,缺少有效的软件评测手段,提交用户的软件质量差。
软件危机发生的主要原因有:
1、遇到了无法解决的高难度技术问题(不是)
2、无法招聘到足够的编程高手(不是)
3、软件人员与用户互相不理解(是)
4、计划和管理不科学、落实不力(是)
5、软件质量标准不明确(是)
软件的质量特性包括(选择)问题1:
1、功能性
2、可靠性
3、使用性
4、经济性(不包括)
软件的质量特性包括(选择)问题2:
1、效率
2、可维护性
3、可移植性
4、经济性(不包括)
软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期,较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。软件生存期:软件的孕育,诞生,成长,成熟,衰亡的生存过程。软件生存期由软件定义,软件开发和运行维护三个时期组成,每个时期又可划分为若干个阶段。
2、软件定义时期的任务主要任务是解决“做什么”的问题,确定工程的总目标和可行性;实现工程目标的策略及系统功能;估计需要的资源和成本;制订工程进度表。通常又分为3个阶段:问题定义,可行性研究,需求分析。
3、软件开发时期的任务和包含阶段主要任务是解决“如何做”的问题,设计和实现定义的软件。由概要设计、详细设计、编码和测试4个阶段组成。
4、软件运行维护时期的主要任务是使软件持久地满足用户的需要,通常有4类维护活动:改正性维护;适应性维护;完善性维护;预防性维护。开发过程中的典型文档:软件需求规格说明书。项目计划。软件测试计划。软件设计说明书。用户手册。软件工程各个阶段的基本任务
1、问题定义与可行性研究:解决什么问题?能否解决问题?是否值得做?”
2、需求分析:做什么
3、软件设计:如何实现
4、程序编码和单元测试:实现设计
5、集成和系统测试:组装连接测试、功能验证测试
6、软件运行和维护:修改 第二章软件工程方法与工具
软件工具:是指能支持软件生存周期中某一阶段(如系统定义,需求分析,设计,编码,测试,维护等)的需要而使用的软件工具。
需求分析工具
1、结构化图形工具箱。通过数据流程图DFD进行功能分析。包括DFD图形工具,实体-关系图(E-R)图形工具,Jackson图形工具,Warnier图形工具,Visio综合工具,2、面向对象工具,Rational Rose,PowerDesigner,Visio 设计工具(1)概要设计工具:设计目标软件的体系结构、控制结构和数据结构。软件的体系结构通常用模块结构图来描述。模块的数据结构通常用实体-关系图来描述。Visio。Rational Rose 详细设计工具。设计模块的算法和内部实现细节。详细设计描述方法有输入-处理-输出(IPO)图。问题分析图(PAD)。盒图(NS图)。流程图(FC)。程序设计语言(PDL)。结构化语言。判定表。判定树
第三章软件需求获取与结构化分析方法 需求获取的主要任务是与用户沟通,了解系统或产品的目标是什么,客户或用户想要实现什么,系统和产品如何满足业务的要求,最终系统或产品如何用于日常工作。获取并理解用户的需求是软件工程师所面对的最困难的任务之一。
需求分析的困难体现:系统的目标或范围问题;需求不准确性问题;需求的易变问题
需求获取的任务:发现和分析问题,并分析问题的原因,结果关系。与用户进行各种方式的交流,并使用调查研究方法收集信息。按照三个成分即数据,过程和接口观察问题的不同侧面。将获取的需求文档化,形式有用例,决策表,决策树等。需求获取的原则:深入浅出,以流程为主线。
获取具体的需求的途径1,与用户交流。2,现有产品或竞争产品的描述文档。3,系统需求规格说明。4,当前系统的问题报告和改进要求。5,市场调查和用户问卷调查。6,观察用户如何工作。
关于需求获取问题的认识辨析:
1、没有与用户交流就不可能获取系统需求。(不能获取准确、全面的系统需求)
2、没有经过与用户交流而获取的需求都是不真实的需求。(一些需求从用户以外的途径获取)
3、系统开发必须独立完成,参考类似系统及技术文档属于抄袭行为,应予避免。(系统开发包含研究行为,应了解对手产品,取长补短)
4、系统开发包含改进当前系统的缺陷和不足。(对)
5、需求调查时,用户所说的需求未必是真实、准确的需求,因此需求分析需要依赖用户,但是不能过分迷信用户。(对,需求描述是困难的)
6、观察用户如何工作也是一种需求调查行为。(对)
软件需求分析阶段的任务:需求获取,需求分析,需求定义,需求验证。完整性,正确性,合理性,可行性,充分性。
结构化分析方法:是一种建模技术。核心是数据字典。
功能模型用数据流图(DFD)来描述使用实体—关系图(ER图)建立数据模型。使用状态转换图(简称状态图)建立系统行为模型。数据字典。加工规格说明。需求建模的依据是需求描述
数据建模,ER图,需要认真看。
第四章结构化设计方法
结构化设计方法是在模块化,自顶向下逐步细化及结构化程序设计技术基础上发展起来的,结构化设计方法可分为两类:一类是根据系统的数据流进行设计,称为面向数据流的设计,或称过程驱动设计,另一类是根据系统的数据结构进行设计,称为面向数据结构的设计,或称数据驱动的设计。
软件的体系结构设计,模块化设计都是分而治之策略的具体表现。模块化是将整体软件划分为独立命名且可独立访问的模块,不同的模块通常具有不用的功能或指责,每个模块可独立开发,测试,最后组装成完整的软件。模块是构成软件的基本构件。模块并不是越小越好,当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了,但是随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。
模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而与软件系统中其他模块的接口是简单的,若一个模块只具有单一的功能且与其他模块没有太多的联系,那么称此模块有独立性。
自顶向下,逐步细化:抽象是指忽视一个主题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面,当我们进行软件设计时,设计开始时应尽量提高软件的抽象层次,按抽象级别从高到低进行软件设计,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确定整个系统的体系结构,这就是自顶向下逐步细化过程。
复用是指同一事物不做修改或稍加修改就可以多次重复使用,将服用的思想用于软件开发,称为软件复用。1是尽量使用已有的构件。2是如果确实需要创建新的构件,则在设计时应该考虑将来的可重复使用性。软件设计的阶段与任务:从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段。从技术的角度,传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计和过程设计4部分;概要设计包括体系结构设计、数据设计、接口设计。详细设计即过程设计,对结构表示进行细化,得到软件详细的数据结构和算法。
软件设计各项设计工作的依据:体系结构设计,定义软件模块及其之间的关系,依赖于数据流图。数据设计,依赖于ER图。接口设计,依赖于顶层数据流图。过程设计:依赖于加工规格说明、状态图
基于数据流方法的设计过程:1.复查并精化数据流图。2.确定数据流图中数据流的类型,典型的数据流类型有变换型数据流和事务型数据流。3.导出初始的软件结构图。4.逐级分解。5.精化软件结构。6.导出接口描述和全局数据结构。
软件模块结构的改进方法:1,模块功能的完善化。2,消除重复功能,改善软件结构。3,模块的作用范围应在控制范围之内。4,尽可能减少高扇出结构,随着深度增大扇入。5,避免或减少使用病态连接。6,模块的大小要适中。接口设计的依据是数据流图中的自动化系统边界。
自顶向下,逐步细化的设计过程主要包括两个方面:一是将复杂问题的解法分析和细化成由若干个模块组成的层次结构,二是将每个模块的功能逐步分解细化为一系列的处理。第五章编码
编码容易出现的风格不足
1、变量或函数名字缺乏具体含义
2、变量或函数名字与其用途不符
3、变量或函数未加上必要的注释
4、函数未说明其功能、参数的意义
5、引用的符号未加以解释和说明
6、对循环等重要的程序语句未注释
7、对用到的重要库函数没有解释说明
8、对结构体等复杂数据结构的组成成分没有解释说明
9、缺乏必要的提示语句 第六章软件测试方法
软件测试是在软件投入生产性运行之前,对软件需求分析,设计规格说明和编码的最终复审,是软件质量控制的关键步骤。软件测试是为了发现错误而执行程序的过程。