软件定义世界,工程引领未来——中山大学软件工程学院 软件工程导论大作业

2023-09-15 21:37:15

目录

软件工程,理解加深

个人困惑

软件与软件工程的定义

学习思路的启发

软件危机的认识及思考

软件测试的初步认识

科技前沿,守正创新

代码有智能,教育有情怀

深入浅出,引人入胜

再接再厉,未来可期

“软件定义世界”是软工人的响亮口号,“工程引领未来”是我在上完导论课后的总结与思考。

软件工程导论课作为软件工程学院开设的特色课程以及专业必修课,不仅加深了我们对软件工程本身的理解,还使我们对软件工程的前沿研究与应用有了初步认识,并对群英荟萃的老师们有了更多的了解。

软件工程,理解加深

软件工程的目标是控制复杂度,而不是增加复杂性。——Dr.PamelaZave

个人困惑

在上导论课之前,有两个问题一直困扰着我,软件工程等于写代码吗?我到底要着重培养自己哪方面的能力?带着这两个问题,我认真学习了陈建国老师讲的第一课。陈老师的讲课风格幽默风趣,化繁为简,这使我更加热爱软件工程学院,以及学院中可爱且可敬的老师。

软件与软件工程的定义

软件是开发和运行产品的载体。引用陈老师的一句豪言“只有想不到,没有做不到;无处不在,无所不能,这就是软件”。而软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这才是软件工程。

学习思路的启发

信息是21世纪最重要的产品,软件充分体现了这一点。软件不仅提供了通往全球信息网络的途径,而且也提供了获取信息的多种手段。我在学习软件工程的过程中应注重计算思维能力、算法设计与分析能力、程序设计和实现能力、系统能力的培养,尤其要注重包含对系统的全局掌控能力和系统地考虑问题的求解能力的系统能力。

在未来的工作以及现在小组合作的作业中,规范的编程习惯会有助于项目开发。如KentBeck所说“我不是一个伟大的程序员,我只是一个具有良好习惯的优秀程序员。”所以我也要在变量命名与函数封装上力争规范,写出一个简洁明了的好程序。

软件危机的认识及思考

生于忧患,死于安乐。软件行业欣欣向荣不假,但也要认清危机四伏。比如在软件从设计到交付的环节中“信息的传递会产生误差”,其中“秋千的需求陷阱”就是一个典型的例子。Eiffel编程语言的创造者,提出契约式设计观念的编程大师BertrandMeyer说过“在没有合同的情况下编写类类似于在没有规范的情况下⽣产⼯程组件,没有专业工程师会考虑这个想法”。一份文档作为行动纲领的重要性不言而喻。所以我在日后的学习过程中,不但要努力提高自己的编程水平,也要不断加强自己撰写文档,带领团队的能力。

软件测试的初步认识

根据GlenMyers的观点,软件测试就是要设计合适的测试用例,用尽可能少的测试用例,来发现尽可能多的软件错误。在毛老师的课上学习到要通过测试发现程序中的所有错误,就要穷举所有可能的输入数据,这是不可能的。正如软件测试资深工程师CemKaner所说“我的心得是,企图找出所有的BUG是不现实的。”程序测试是证明程序正确地执行了预期的功能。在传统检验输入输出的认识上,还学习到一个程序不仅要完成它所需完成的功能,而且不应完成它不该做的事,比如不能把边长为0、0、0的三条边判断为等边三角形,因为它根本就不是三角形。

我还学到了白盒测试与黑盒测试的具体知识与测试方法,白盒测试又称结构测试检查的是这个软件的内部逻辑,而黑盒测试又称行为测试检查的是这个软件的输出结果是否与预期相同。这有点像物理学中测试电路,白盒测试就像是电路已知,可以用工具测量内部属性,也可以对内部结构进行化简;而黑盒测试就像是电路只留下了接口,只能用不同的电压输入来测试输出的结果。由此又衍生出了逻辑覆盖测试、基本路径覆盖测试和循环测试三种白盒测试方法与等价类划分、边界值分析、比较测试、错误猜测和因果图五中黑盒测试方法。

科技前沿,守正创新

软件工程导论课不仅打牢了理论基础,还立足当下,把当下热门且实用的技术介绍给我们,既让我们开拓眼界、增长见识,也加深了师生友谊,激发了同学们的科研兴趣。

代码有智能,教育有情怀

王焱林老师围绕代码智能,讲解了包括代码补全、代码注释自动生成等先进技术,让大家看到了解决“重复造轮子”和“看不懂别人代码”两大难题的希望。并且王老师还向我们介绍了她的教育情怀,同学们无不动容。

我有幸在课后获得了与王焱林老师深入交流的机会,她对我提出的问题知无不言言无不尽,在我未来的学业规划以及成长道路都提出了她的宝贵建议。她的教育热情令我感动,也让我再次庆幸能在软件工程学院学习!

深入浅出,引人入胜

陆智超老师把计算机视觉识别、深度学习和自动化深度学习有机结合,用直观的图来向同学们阐述晦涩的底层原理,让我们一群“小白”在上完后不仅在知识上收获颇丰,而且激发了我们的学习热情。

苏玉鑫老师则是把云计算这一个“悬在空中”的课题抽丝剥茧,把其实际应用讲实讲透。“云计算的精髓在于资源共享,时分复用”,云计算其本质就是计算资源的共享。苏老师重点把微服务架构与企业开发紧密相连,让同学们提前了解行业一线的先进开发方法,为以后投身软件行业打下坚实基础。苏老师在讲解OJ软件的微服务应用时还特地以我们现在正在使用的SSEOJ为样板,活灵活现地展示了一个OJ系统的前后端,把之前“神秘”的OJ系统原理直观明了地展现给了我们。

当然,其他老师上的导论课也同样精彩纷呈。比如南雨宏老师的软件攻防大战、陈嘉弛老师的区块链发展趋势与挑战、吴炜滨老师的对抗机器学习与可解释AI软件等等。在此我想向各位老师再次表达我衷心的感谢!

再接再厉,未来可期

在陈建国老师的课上我认识到软件产业是创新的与充满活力的朝阳产业,需要大量的,不同层次的软件人才。学院官网介绍软件工程专业为独立一级学科,是国家一流本科专业建设点。教育部甚至连续三年将软件工程评为“绿牌”专业。 通过自己的努力,在一个朝气蓬勃的学院中学习冉冉升起的软件工程专业,是我心之所向,素履以往。

更多推荐

MySQL进阶篇2-索引的创建和使用

索引mkdirmysqltar-xvfmysqlxxxxx.tar-cmyqlcdmysqlrpm-ivh.....rpmyuminstallopenssl-develsystemctlstartmysqldgerp'temporarypassword'/var/log/mysqld.logmysql-uroot-pm

Python 06 之面向对象基础

😀前言在日常编程和软件开发中,我们通常会遇到各种各样的问题,其中很多问题都可以通过面向对象的程序设计方法来解决。面向对象编程不仅可以使代码更加组织化和系统化,而且还可以提高代码的重用性和可维护性。.在本教程中,我们将探索Python语言中面向对象编程的基本概念。我们将从最基本的类和对象的定义开始,然后深入探讨类的属性

【python百炼成魔】python之字典详解

前言今天我们一起来探讨python的另外一种类型:字典,如果你没有看过列表和元组,建议先学习列表和元组。【python百炼成魔】python之元组详解【python百炼成魔】python之列表详解文章目录前言字典的概念语法格式及字典的创建字典的日常操作1.获取字典的值2.获取字典视图的三个方法3.增加元素,修改元素,删

基于Java在线教学质量评价系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

典型数据结构-栈/队列/链表、哈希查找、二叉树(BT)、线索二叉树、二叉排序树(BST树)、平衡二叉树(AVL树)、红黑树(RB树)

目录典型数据结构列举栈/队列/链表树二叉树线索二叉树二叉排序树平衡二叉树(AVL树)红黑树其它树种和应用介绍典型数据结构列举栈/队列/链表描述略。一些基本的简单实现参考/数据结构简单实现/文件夹里面。线性表详解:数据结构线性表10分钟入门(biancheng.net)。栈(Stack)和队列(Queue)详解(bian

EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs

EMQXEnterprise5.2.0版本现已正式发布!新版本带来了一系列重磅更新,最令人瞩目的是可拖拽的可视化Flow设计器,它可以帮助企业快速创建、测试和部署数据集成。同时,我们新增了对AmazonKinesis和AzureEventHubs的支持,实现了海量物联网设备数据与云服务的无缝连接。此外,新版本还进行了多

【数据结构】堆的创建

💐🌸🌷🍀🌹🌻🌺🍁🍃🍂🌿🍄🍝🍛🍤📃个人主页:阿然成长日记👈点击可跳转📆个人专栏:🔹数据结构与算法🔹C语言进阶🚩不能则学,不知则问,耻于问人,决无长进🍭🍯🍎🍏🍊🍋🍒🍇🍉🍓🍑🍈🍌🍐🍍文章目录一、基于大堆的上下调整1.向上调整(1)解决措施:(2)代码实现

【小知识送书2】从不了解用户画像,到用画像数据赋能业务看这一本书就够了丨《用户画像:平台构建与业务实践》

⭐简单说两句⭐作者:后端小知识CSDN个人主页:后端小知识🔎GZH:后端小知识🎉欢迎关注🔎点赞👍收藏⭐️留言📝简单说两句🎁本次送书1~3本取决于阅读量,阅读量越多,送的越多😎欢迎大家在评论区留言,随机挑选幸运观众额,选中的幸运观众将会通过私信告知截止时间:2023-09-23引言在大数据时代,如何有效地挖

认识非托管动态链接库

一、非托管动态链接库1、非托管动态链接库(UnmanagedDynamicLinkLibrary,简称DLL)是一种包含可执行代码和数据的二进制文件,它被设计为在操作系统级别上执行。与托管代码不同,非托管DLL是使用原生机器代码编写的,并且不依赖于特定的运行时环境(如.NETFramework或.NETCore)。非托

字符串函数

目录一、求字符串长度strlen用法:注意:二、长度不受限制的字符串函数strcpy用法:注意:strcat用法:注意:用例:strcmp用法:三、长度受限制的字符串函数介绍strncpy用法:注意:用例:strnact用法:用例:strncmp用法:字符串查找strstr用法:用例:strtok用法:注意:用例:一、

并发的Clock服务

网络编程是并发大显身手的一个领域,由于服务器是最典型的需要同时处理很多连接的程序,这些连接一般来自于彼此独立的客户端。在本小节中,我们会讲解go语言的net包,这个包提供编写一个网络客户端或者服务器程序的基本组件,无论两者间通信是使用TCP、UDP或者Unixdomainsockets。在第一章中我们使用过的net/h

热文推荐