一、个人情况介绍:
经历:
本人(张涵瑞)在过去的本科阶段专业为计算机科学与技术,学习过c++,java,python语言,前两者可以独立编写一些简单代码,python目前仍处于入门水平。目前,本科期间做的毕业设计是现阶段实现的最复杂的代码。主要用Java实现了一个宠物领养与救助系统,前端为微信小程序,用于与用户进行交互,实现领养、发布攻略等简单功能,同时主界面也采用了轮播图等美化的功能。后端主要用于管理员,可以对用户的数据进行增删改查,同时也实现了账务管理、权限管理、轮播图管理、救助站管理等功能。
认识:
本人比较热爱计算机行业,尤其是软件开发相关。由于学习的第一门编程语言为c++,同时考研期间专业课程的需要,也着重学习了c++的相关技术,因此在计算机领域对于c++的掌握相对于java、python较深,本课程的要求编写的功能代码、测试代码也均是采用的c++语言进行编写。
规划:
目前研究生阶段的专业为大数据技术与工程,对于计算机领域的数据安全尤为感兴趣,希望能够在研究生期间能够不断夯实基础,逐步实现自己的目标。
目标:
软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。通过学习这门课程,希望能够在日后的代码编写中能够用工程化的标准要求自己,提高编写的代码质量,为日后就业,成为一个职业的程序员打下坚实的基础。现阶段在该课程投入的时间较多,例如课程初期要求编写的NextDay代码,起初编写的第一个方法是返回值为void,在方法体内输入输出,后期写了第二个方法,将日期存入结构体中,方法返回结构体并在main函数中进行输出。相关代码、测试结果会在下文中附上。
二、理论学习:
(1)完成学堂在线平台的《软件工程》(刘强教授主讲)慕课第一章和第二章学习,作为课堂讲授的补充,并完成配套练习
(2)阅读构建之法配套讲义,阅读人月神话,并写出读后感:
《人月神话》这本书中的主要内容是关于软件工程的危机和关于人员和时间估算的陷阱。作者指出,在软件项目中,人员和时间常常被误解和混淆,而这种误解和混淆导致了不切实际的乐观估计和项目进度的延迟。
作者强调了软件项目的困难性和复杂性。他认为,当项目人员增加时,不仅不会减少工作量,反而会增加额外的工作量,如培训新人员和重新分配任务等。因此,他提出了一条“Brooks法则”:增加进度落后的项目人员只会使进度落后。
此外,作者还探讨了其他与软件工程相关的主题,包括瀑布模型、螺旋模型、快速原型模型、增量模型、并行模型等。他还讨论了如何进行有效的需求分析、系统设计、模块化、抽象、信息隐藏等软件工程的基本原则。
读完这本书,我深深地认识到了软件工程的复杂性和困难性。这并不只是编程的技术问题,更是一个管理问题。因此,我们需要不断地学习和探索,以更好地应对软件项目中的各种挑战。
总的来说,《人月神话》是一本非常有价值的书,它让我对软件工程有了更深入的理解。我强烈推荐这本书给所有对软件工程感兴趣的读者。
三、实践学习:
1.编程环境:
(1)使用visual studio 2022,首先点开visual studio,如下为打开文档界面:
(2)选择并打开所需文档进行编程:
(3)本项目的代码已经编写完成,在Nextday文档中,源文件NextDay源码放置功能的主要实现形式;Test_Nextday实现了对NextDay代码的测试。具体会在第四部分详细介绍。
2.代码仓库:gitee (软件工程代码仓库: 软件工程代码Zzzzz~)
(1)首先在gitee下新建一个仓库,并复制远程的URL
(2)回到Visual Studio界面,在上方菜单栏选择Git ->创建Git仓库,选择“现有远程“,将复制好的URL复制后即可关联远程的gitee仓库
(3)代码仓库提交记录:
(4)交由同伴审查代码:
(5)审查同伴代码
四、工作记录:
(1)NextDay代码:
代码主要采用C++进行编写,使用结构体对时间进行封装。此外写了一个返回值为结构体的result_ nextday代码,用于返回下一天的结构体。在整个方法内部,首先创建了两个数组bigmonth和smallmonth,用来存储大月和小月,并用for循环在两个数组进行遍历,判断输入的月份为大月或者小月,如果输入为大月,则判断输入的日期是否为31号,如果是,则day=1,month++;否则day++,小月同理。其次由于涉及闰年问题,需要对2月进行单独判断。如下为具体代码实现以及测试代码截图。
运行成功截图及测试通过截图如下:
学习时段 | 2023.9.18 | 2023.9.20 | 2023.9.21 | 2023.9.22-2023.10.7 | 2023.10.9 | 2023.10.11 | 2023.10.11-2023.10.16 |
学习内容 | 创建CSDN、GItee仓库并了解如何使用 | VS连接到Gitee仓库并进行代码的初步编写 | 补充完善代码,完成代码的初步编写 | 主要完成赵翀教员布置的软件测试及实验报告 | 开始对原有代码进行优化,引入结构体 | 对原有代码进行测试单元的代码编写 | 写作业(CSDN博客) |