软件工程

软件工程学习5-瀑布模型总结

不羁岁月 提交于 2019-12-05 16:46:10
1 瀑布模型怎么来的? (1)所谓软件危机 瀑布模型算是现代软件工程的起源,软件工程的发展,很大部分都是构建于瀑布模型的基础之上的。在校期间做的项目相对简单,通常不会涉及到诸如性能测试等,通常为边写边改,但是一旦 项目变复杂,开发人员水平参差不齐,从而导致软件开发与维护过程中出现一系列严重问题,这个现象也被称之为“软件危机”。 (2)边写边改的缺点 开发的过程不可控 项目的人数多了以后,不方便协作分工 对需求分析的理解误差,导致返工,从而影响项目交付 没有有效的测试,上线问题一堆 (3)瀑布模型的诞生   1970 年,Winston Royce 博士借鉴了其他工程领域的思想,比如建筑工程,提出了瀑布开发模型,指出软件开发应有完整之周期,并将软件开发过程分成了若干阶段。像瀑布一样,从上往下,完成一个阶段继续下一个阶段 2 瀑布模型案例 按照一个我曾经毕业设计的案例 (1) 项目的定义和规划   毕业设计是做一个c++的网络嗅探器,所用库为libpcap,可行性没问题,老师大概给我说了下需要做哪些功能,然后说两个月完成吧。啊,你怕是在开玩笑,当时读本科一天天都是在摸鱼。。初步定下时间吧 需求分析——1 周;   软件设计——1周;   程序编码——4 周;   软件测试——1周。 的确如此,软件测试在当时开来就是功能测试,实现功能就完事,哎!!! (2) 需求分析阶段  

软件工程学习3软件如何而来

江枫思渺然 提交于 2019-12-05 16:32:15
1 软件怎么被创造出来的   软件的出现,一般都是某个人或者某些人有想法有意图,想做个什么东西方便自己方便他人。张小龙的微信,乔布斯的IOS。这些伟大的软件需要很多人来协同完成。 比如微信,2010年立项,2011第一版上线,当时只能发送文本消息和照片,之后一个版本一个版本更新。   像这样有计划有步骤有人参与的产品------->工程。 2 软件危机是什么?   工程的本质就是要做出有用的产品。造房子的建筑工程,造火箭的航天工程。同样,软件领域,也就是软件工程。不按照建筑工程去造房子是会出事故甚至死人的。   咋们看看建筑工程。设想一下建一座房子:首先要先立项、设定预算,然后画设计图,再是施工,施工完成后,有专业人士进行质量检查,质检合格后入住。   OS/360(上世纪60年代的大型软件项目)------->开发人员(1000)----->最终无法运行------><人月神话>详细的说明了此次事故。   当计算机才发明出来的时候,计算机的能力非常有限,不需要软件工程也可以开发简单的软件。但是随着项目越来越复杂,规模越来越大,软件项目开发维护过程中问题就出来了------>   软件产品质量低劣、软件维护工作量大、成本不断上升、进度不可控、程序人员无限度地增加。所以在 60 年代,“软件危机”的概念被提出来。 3 软件工程的历史 (1)软件工程几个阶段  

软件工程学习2 常见问题

走远了吗. 提交于 2019-12-05 15:31:36
1 开发的价值是体现在哪里? (1)本人觉得开发的价值大部分情况是在项目中体现出来的,那么除了编程之外,如果能更好的学习了解软件工程比如需求分析,是不是可以少更改代码,减少返工提高效率。 (2)能够通过软件工程的工具更好的把架构描述出来. 2 目前的测试运维前景如何?   作为今年应届的我,发现比如手工测试,常规的功能测试招聘是相当的少了,基本上需要理解相关测试理论的基础上,学会自动化测试,甚至测试开发,编写相关的测试框架来适应工具的需求。目前 Devops的兴起,让应聘者不仅仅有运维测试能力,还需要有开发能力,可以站在更高的角度去帮助自动化,稳定的交付产品。当然常用的语言py,自动化的框架比如selu。 3 比如小公司开发人员就只有几个人,怎么按照软件工程的流程去运作呢。比如在编写代码的时候很多问题都没考虑全面或者在需求的时候就没有想到,怎么不犯这样的问题?   再少的人也应该做简单的需求分析,然后形成文档给别人评审一下。因为在写的时候其实是在帮助我们思考和梳理逻辑。 4 在敏捷开发过程中如何保证业务的传承,当有新同事加进来,如何快速熟悉整个业务 (1)团队有自己的知识库或者WIKI,常用的知识需要花时间整理上去 (2)从简单的任务开始做起,慢慢稍微复杂,给与必要的指导 5 对于需求更新极快,基本上每周都需要迭代更新上线的项目,在架构设计和项目部署上会不会有什么特殊的要求?  

软件工程学习总结

淺唱寂寞╮ 提交于 2019-12-05 15:20:05
12周的软件工程课虽然结束的很快,但过得也非常的充实。学到了很多东西,感触良多。这门科目让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定 的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。 在以前,我一直对软件存在一些偏见或则是误解,认为软件就是程序,软件的开发就是编写程序,只要编完了程序,一切也就ok了,而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就能写程序了。一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。 但是通过了《软件工程》这门课的学习,使我认识到了我以前的错误。软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。   而且在以前,我一直以为软件的开发其实是一件很轻松快乐的事情,只要一天坐在电脑旁敲敲键盘,那么一切就可以了,但是现在我才发现,我以前的很多的思想是多么的肤浅可笑

如何评测软件工程知识技能水平?

青春壹個敷衍的年華 提交于 2019-12-05 15:10:28
软件工程师是IT领域的重要岗位之一,随着IT行业多年的发展,软件工程师也有很多细分的方向,比如Web方向、大数据方向、物联网方向、云计算方向、人工智能方向、区块链方向等等,不同方向的软件工程师需要具备的知识结构也会有所区别。另外,不同行业(金融、教育、通信、医疗)的软件工程师往往在知识结构上也有所区别。 通常情况下,软件工程师需要具备以下几个方面的知识结构: 第一:操作系统知识。操作系统知识是软件工程师必须具备的重要内容,Web开发领域可能会使用到Windows系列操作系统,大数据和物联网方向要使用到Linux系列操作系统,掌握操作系统的体系结构是进行软件研发的重要基础。主要内容包括资源管理、任务调度、并发管理、权限管理、网络管理等内容。 第二:编程语言和算法。编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发可能会使用PHP、Python、Java等语言,而大数据可能会使用Java、R、Scala等语言,而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言,以应对不同的开发环境。算法是软件工程师的重点知识结构,因为软件研发说到底就是个数学问题,所以算法的掌握情况往往能够决定软件工程师的成长高度。当然,对于应用级软件工程师来说,也有可能不会接触到更多的算法。 第三:领域知识。不同开发领域需要掌握不同的知识结构

软件工程结课作业

寵の児 提交于 2019-12-05 15:09:03
软件工程学习总结 时间过得真快,转眼已经写到了最后一次博客园作业了,学习了一个学期的软件工程课,终于知道了软件工程的一个大概。学的时候总觉得很抽象,理解起来好像不难,但总是摸不着头脑很茫然的感觉。曾经以为程序就是软件,软件就是程序。在学习了这门课程以后,知道了二者的不同之处。经过彭馨仪老师的讲解,理解了软件工程,就是一套用于软件的团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是软件开发的5个重要组成部分: 需求分析,设计,编码,调试,维护,至于如何组织这5个部分的工作,以及如何完成每一个工作。我们还需要不断的学习,毕竟学习永无止境。刚开始学软件工程课的时候,我对软件工程处于一知半解的状态,思维比较混乱。在学习了一段时间后,渐渐变得清晰了。具体体现在了老师留的个人作业,双人作业以及小组作业上,在学习过程中,我知道了团队合作的重要性,多人合作中肯定会存在意见不一致的时候,但我们通过讨论、协商,在不断磨合中能够达成一致与默契。团队成员中能力各有高下,我们要做的是互相尊重,各取所长,互相鼓励,共同进步。团队的组长起到了下达命令和协调的作用,组员也积极配合,最后愉快的完成了合作。在这个过程中学习能力得到了很大提升,能尽快接受新的知识,顺应变化,学为所用。 团队合作具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行,在进行分析,设计,编码,调试

软件工程结课作业

夙愿已清 提交于 2019-12-05 14:44:51
   通过十二周的学习,在这次软件工程课程中,我学到了很多东西,在一次次作业中我对编程有了更深的理解,不仅仅只是代码编写。第一次深刻的体会到了什么叫做用工程化的思想来编写软件,从这里,我才真正的意识到实施一个软件工程并不是说简单的会编码就能够解决问题的,我们更多的精力不是放在编码上,编码只是一个很小的模块,只占到那么小的一个部分。这个事实在很大程度上颠覆了我以前的思想,在我以前的认识中,似乎整个软件就是编码,除此无它。通过老师的讲解,以及结对作业和团队项目后才发现运用工程化的思想来做是如此的有必要。   由于大作业开发需要组队,整个项目的开发都是由你选择的团队一起进行的。因此选择一个合适自己的团队至关重要。团队中每一个人都应该对项目有一个相同清晰的目标,大家一起朝一个方向努力。拒绝拖延症。总的来说经过一学期的“受虐”,但是彭老师的教学方式很好的调动了我们的积极性,给了我们展示自己想法的空间,在博客园中一次次记录自己的成长,自己还是学到了很多知识,经验和教训,也希望自己能在以后的开发过程中注意,开发出自己满意的项目。   最后感谢彭老师一学期的教导,让我们在通往成为程序员的路上迈出了一大步。 来源: https://www.cnblogs.com/xushaohua/p/11928774.html

C语言程序设计博客作业01

喜欢而已 提交于 2019-12-05 14:18:01
第一周作业 1 你对软件工程专业或者计算机科学与技术专业了解是怎样? 通过查阅资料初步了解到1991年软件工程被列入‘计算机学科的九个知识领域之一’,2002年成为中国新增专业它随着时代的发展而发展,以计算机科学,技术学科为基础,形成了由软件需求,设计,构造,测试,维护等多个内容,同时,具有很大的发展前景。除此之外,软件工程应用于多个方面,人机界面,嵌入式系统,办公等,促进人们的生活和社会发展。随着学习的深入,我觉得以后对软件工程会有更全面的理解。 2 你了解C语言么? C语言主要应用有哪些? 对于C语言来说,我不怎么了解。用专业的话来说,C语言作为最基础的语言,主要应用领域分为系统软件开发和应用软件开发,应用于底层开发,以简易的方式编译,处理低级储存器,且产生少量的机器码以及不需要任何运行环境支持便能运行的编辑语言。应用于不同操作系统中影响了众多的编程语言。 C语言泛应用于底层开发,C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。 3 你希望在这个专业学到哪些内容? 对于软件工程,希望了解每个基本语言的应用。懂得更多的的计算机知识

软件工程结课作业

我只是一个虾纸丫 提交于 2019-12-05 14:17:09
软件工程个人总结 时间过得很快,软件工程课已经结束。回首团队作业的点点滴滴,前期都是个人作业,能及时较好的完成软件工程的作业。后面的几周时间是团队作业,任务量也加大了不少,我觉得老师这样的作业布置方式很好,前期先培养个人能力,后期培养团队协作能力。 在这次软件工程的课程中,我学到了很多东西,第一次深刻的体会到了什么叫做用工程化的思想来编写程序,以前我也编写过一些小程序,没有做过大型的项目,这次软件工程课老师组织各组成员共同完成一个大 项目,第一次和别人合作,才发现运用工程化的思想来做是如此的有必要。 真正开始项目工程之前,我们花了很多的时间来完成一些前端工作,如需求分析,这块工作在别人看来可能是无关紧要的一件事情,甚至是多余的。换做是以前,我也会这么认为,可是,经过这么长时间的工作后,我算是深深地明白了磨刀不误砍柴工的道理,这些前端的工作太有必要了,太重要了,如果想要你的软件有用有市场,能被别人接受和认可,在进行过程中不会出现崩溃性的问题,或者是bug,这些工作缺一不可。 除此之外,我还学到了如何与别人相处,如何和别人更好的交流,我们这十个人组成一个团队,大家一起开发一个项目,大家的交流沟通显得尤为重要,如何将自己的想法清楚明白的告诉队友,如何在听取完队友想法后提出自己想法的同 时又不伤害其他的队友的面子,这些在我的这次项目开发中都有一些体会。可以说

软件工程结课作业

ⅰ亾dé卋堺 提交于 2019-12-05 13:46:58
软件工程课程总结 软件工程转瞬就结束了,现在想起来,还能感受到最后一节答辩课上,同学们信心飞扬的介绍自己小组的劳动成果,分享自己的胜利果实,当然我也是其中一个。 这是一节给我感觉灵活性极强的课程,是那种课上相当轻松,课下疯狂忙碌的酣畅淋漓,自己去研究陌生的领域,团队在一块讨论,一起完成一个目标,因为一个细节讨论半天,大家大开脑洞,分析问题,不光增加了彼此的友谊,更在欢乐的讨论时光里,获得了各种新奇的想法新奇的思路。 课堂交给学生,让学生自由发挥,舞台交给我们,让我们尽情歌唱,这是我对软件工程的理解,它不是单纯的灌输知识,而是在传递思想,锻炼能力,在团队中,你可以有组织能力,可以有设计能力,可以有编程能力,可以有统计能力,当然可以有表现能力,演说能力等等,无论你有什么能力,你总是有用的,并不是把所有学生都向着一个方向塑造的死板教学。 当然软件工程中学到的东西也很多,从需求分析到编写代码,全面了解软件开发过程,也真正体会到编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护才是最让人头疼的。有些程序它不是写出来目前成功了就可以,他需要考虑生存期,以及一个完整的项目规划要包括软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,等等等等。