个人情况介绍
- 经历:简要描述个人在软件开发方面的学习或工作经历,描述你做的最复杂的软件项目/作业,仅限适合公开的内容。
本人季行,就读于电气工程专业,关于软件开发方面的学习在本科期间基本没有涉及,但是学习了基本的代码编写,包括C语言和matlab的相关代码的编写,在本科期间小组完成了一套学生信息录入开发的设计,可以录入学生的姓名,学号,年龄等详细的信息,但是页面和很多功能都比较粗糙还有待提高,基本具有代码编写和调试的能力,对计算机的接触还是挺多的,由于长时间没有接触编程,对很多代码编写思路都遗忘了,在后面的学习中的我一一定积极学习弥补上。
- 认识:计算机和软件开发是你喜欢的领域吗?是你擅长的领域吗?
计算机和软件开发对我来说是一个陌生的领域,本科是电气工程及其自动化,现在研究生期间攻读的是电气工程,所以对代码编写能力还有待提高,尤其是计算机思维还有待锻炼提高,可以说现在计算机和软件开发对我来说还是有一定挑战性的。
- 规划:你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
我希望以后从事电机设计或者电力电子器件设计方面的工作,可以担任电气工程师研发岗一些的岗位,现在积极学习各项专业技能,在实验中多总结多创新,积极和导师沟通,如果有机会的话,继续攻读博士,毕业后将自己所学应用到工程实际中去。
- 目标:为什么要学习软件工程?通过这门课程所期望达到的相关技术、能力方面的目标。你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?
首先,锻炼自己的软件开发思维,将以前所学的计算机编程知识应用到实际应用中,了解软件的开发基本流程,学习相关的思想应用到本专业的学习研究中来。
通过学习软件工程,我期望达到以下技术和能力方面的目标:一、理解软件工程的基本原理和概念 二、熟练使用常见的编程语言和开发工具 三、掌握软件开发的基本工作流程,包括需求分析、设计、编码、测试和部署
我打算每周花5-6个小时到这门课的学习上,如果遇到感兴趣的项目,我会尽自己的最大能力去完成它,积极寻找各项资料,愿意花费更多的时间和精力在这上面去完成它。
理论学习
- 阅读构建之法配套讲义,阅读《人月神话》,并写出读后感。
构建之法,是邹欣在工作的时候编写,她将自己对软件架构的方方面面说的十分清楚,其中包括项目需求,设计,开发,测试,项目管理……,但是目前世界上很多软件开发公司都无法做到像书中介绍的那样全面和规范。这本书中的思路和框架十分的清晰,专业性极强,很适合程序员阅读,全书的语言生动有趣,很适合软件开发新手阅读,至少对于比较没有充分的准备的程序员来说,了解自己·怎么做,做的方向比要做什么更重要,该书中提供了很多建议和方法。也由此了解到作为一个软件工程师,任务清单里面不仅只有要编好程这一项而已,还有计划,需求,测试,评估工作量等能力需要刻意培养。
这本书最具特色的一个地方是把很多生涩难懂的概念用学生之间对话的诙谐幽默、生动风趣的场景来展现了出来,甚至还加入了一些电影中的经典台词、一些足球术语和篮球明星的专属名词,让我这个电影迷足球迷篮球迷一边读一边大呼过瘾,更开心的是学习到了很多知识,尤其是在软件工程项目开发过程中的许多技巧和需要注意的问题。例如在第五章讲解软件团队模式的时候用足球队的守门员、前锋、中场和后卫来类比,非常容易理解,不仅有趣而且易懂;再比如在第八章的需求分析中的人类学调查的讲解中,利用一个软件工程课上的同学的顿悟生动形象地讲解了人类学调查这个晦涩难懂的知识点。这本书还创造了很多有趣的人物形象:老成的项目带头人阿超、知识总是马马虎虎掌握的果冻、爱好丰富的小飞和产品经理小李,每个人物都很饱满,读这本书的时候也很容易让我这个读者产生代入感,读起来自然又快又让我印象深刻。对于构建之法中提到的各种专业性知识对于程序员的软件开发具有非常好的借鉴作用,课本中给出的练习,不仅给出了解答方案也给我们提供思考和动手的空间,这在很大程度上会促进对软件开发的学习。这本书在很大程度上促进了我对软件开的认识,是一本仔细了解软件工程开发的技术书籍。《人月神话》(The Mythical Man-Month)由Fred Brooks编写,是软件工程领域的经典之作。这本书以作者在IBM公司参与OS/360操作系统项目的经验为基础,深入探讨了软件项目管理的各种挑战和困境。对我而言,读这本书就像打开了一个全新的视角,让我重新思考软件开发的本质和困难。书中最为人们所熟知的观点是“人月神话”。Brooks提出,将更多的程序员加入到已经落后的项目中,只会让项目进度更加落后。这听起来似乎与直觉相反,但实际上是因为增加的沟通成本和协调工作导致的。这一观点让我深深地意识到,管理软件项目不仅仅是关于技术,更多的是关于人与人之间的沟通和协作。
除此之外,Brooks在书中详细讨论了软件的复杂性和不可见性。与其他工程项目不同,软件本身是不可见的,这使得其复杂性往往被低估。同时,由于软件是纯粹的思维产物,它不受物理世界的约束,这使得软件的设计和实现存在无限的可能性。这种复杂性和不可见性是软件工程的本质困难,也是为什么我们经常面临项目延期和超预算的原因。在读完这本书后,我对书中关于软件建模和文档化的观点深感共鸣。Brooks认为,系统的文档应该像地图一样,为开发者提供指导,而不是像小说一样详尽地描述每一个细节。这对于我来说是一个很大的启示,因为在实际的工作中,我经常面临如何权衡文档的详细程度的问题。
在文章的最后,Brooks还探讨了软件工程的未来发展。他提出,与其试图找到一种“银弹”来解决软件工程的所有问题,不如认真地对待软件开发,将其视为一门手艺,通过不断的学习和实践来完善。《人月神话》这本书不仅仅为我揭示了软件开发的本质和困难,还为我提供了许多宝贵的实践经验和建议。这本书不仅仅是软件工程师的必读之作,对于任何关心项目管理和团队协作的人来说,都是一本不可多得的宝典。
实践学习
- 编程环境:根据个人编程习惯,选择合适自己的编程语言,配置好集成开发环境(IDE)。
- 开发环境应集成了源代码管理、单元测试、性能测试等功能,例如Visual Studio、Eclipse、pycharm,而不仅仅是文本编辑器,例如Python自带的IDLE。
- 关于编程学习不做统一要求,如个人感觉编程基础薄弱,可以自主学习“程序设计语言”、“数据结构”、“算法设计与分析”等课程,尽早在边学边做过程中补齐短板。
- 配置好的visual stdio 22 的开发环境
- 源代码管理
- 单元测试使用的是vs自带的测试模块
- 性能测试功能
- 计算下一天的的源代码
#include<stdio.h>
int main()
{
int year, month, day, maxday;
printf("please input year,month,day:");
scanf_s("%d%d%d", &year, &month, &day);
if (year < 0)
printf("error\n");
else
{
if (month > 12 || month < 1)
printf("error\n");
else {
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:maxday = 31; break;
case 2:if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
maxday = 29;
else maxday = 28; break;
default:maxday = 30; break;
}
if (day > maxday)
printf("error\n");
else
{
day++;
if (day > maxday)
{
day = 1;
month++;
}
if (month > 12)
{
month = 1;
year++;
}
printf("the next day is %d年%d月%d日\n", year, month, day);
}
}
}
return 0;
}
代码部分主要我调用case循环,直接调用十分方便,对每个月进行了单独的判断,然后进行判断,使用if语句判断闰年,考虑到每个月之间的天数的变化,编写合适的判读语句,从而实现每一年每一天的天数的增加。
在VS上进行代码测试可以正常运行,这里主要测试二月,运行结果正常。。
- 代码仓库:在码云或GitHub建立代码仓库,并与集成开发环境进行集成。
- 试着编写一个小程序,确保能够正常上传至代码仓库,并能展示多次提交记录。
- 熟悉代码仓库的pull、push、fork等关键操作。
代码仓库建立如下
仓库建立成功截图
这是在gitee上建立的仓库,接着将仓库与本地代码开发进行配置,相关步骤如下现在我们将其上传到远程自己的仓库中。将个人的代码连接到远程仓库,
首先将代码库进行clone,在进行上传到代码仓库中,界面如下
将仓库地址进行克隆,将仓库保存到本地,进行编辑测试,成功后会出现下面界面
表明已经复制到本地,将想上传的代码文件夹放在本地仓库内,进行上传仓库处理。
在该文件下进行add处理。
接着点击commit
提交完成后,push
上传结束后,在gitee界面如图所示
表示上传成功,成功建立仓库与本地的联系。
下面进行folk仓库,然后在仓库里面进行编辑然后重新commit。将folk的仓库里面的代码进行push request,最后进行提交代码进行审查。
下面进行folk
将folk后的代码仓库进行编辑修改后,可以直观的看见自己的修改内容,保存后直接提交后并入仓库中。
学习总结
经过两个月的学习,我对软件工程有了一定的认识,在这几次的上课感受下感觉研究生学习的过程就是一个自学的过程,老师课堂布置的任务,在课下都需要花很多时间自己去理解消化,在这个过程中不断地去尝试训练,最后形成自己的思维理解。
在这个过程中,对于编程的训练和调试是十分重要的,尤其是对各项新工具的使用,借助这些工具我们可以更好的评价代码的各项性能,然后进行修改保证代码的运行效率,除此以外,对于软件开发的基本流程有了一定的认识,在后面的学习中,继续保持对代码开发的热情,合理的使用各个工具来帮助我测试的每一条的代码。
时间代码流程:
任务 | 计划时间 | 实际时间 |
理论学习 | 3h | 4.5h |
vs下载和环境配置 | 2h | 4h |
代码编写 | 1h | 2h |
gitee仓库配置 | 3h | 6h |
代码性能测试 | 0.5h | 0.5h |
阅读书籍 | 3h | 5h |