软件工程第一次作业

个人情况介绍

  • 经历:简要描述个人在软件开发方面的学习或工作经历,描述你做的最复杂的软件项目/作业。

我叫肖任楷,本科专业是自动化专业,本科的时候尚未涉及到很复杂的软件开发工作,但是通过学校授课或是自学,前前后后学习了c语言和Python。本科的时候用c语言设计了一个贪吃蛇的小游戏,在VC++6.0平台上编程实现,主要负责游戏算法的设计,游戏有障碍物生成功能,游戏功能完整。近段时间在学习深度学习和pytorch,同时也在巩固Python相关知识。

  • 认识:计算机和软件开发是你喜欢的领域吗?是你擅长的领域吗?

计算机和软件开发是我喜欢的领域,但是由于长时间没有动手编程,导致编程水平大大下降,目前正在跟导师进行图像处理方面的学习,自我感觉写代码能力还有待提高。

  • 规划:你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?

我希望先把专业知识学好学扎实,完成研究生阶段该完成的任务,通过两年半的学习找到一条未来适合自己的道路。

  • 目标:为什么要学习软件工程?通过这门课程所期望达到的相关技术、能力方面的目标。你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?

学习软件工程是非常重要的,因为它涉及到计算机科学领域中的核心原则和实践,对于成为一名成功的软件开发人员至关重要。以下是我学习软件工程的目标和期望达到的相关技术和能力方面的目标:

学习目标

  1. 理解软件开发周期:学习如何规划、设计、开发、测试和维护软件项目。理解软件生命周期的不同阶段。

  2. 掌握编程语言和工具:熟练掌握一种或多种编程语言和相关的开发工具,以便能够有效地编写和维护代码。

  3. 团队合作:学习如何与团队成员协作,进行版本控制、合并代码,解决冲突等。

  4. 质量保障和测试:掌握质量保障和测试方法,包括单元测试、集成测试和验收测试,以确保软件的质量和可靠性。

  5. 软件架构和设计模式:理解软件架构的概念,学习如何应用设计模式来构建可维护和可扩展的软件。

学习时间分配

我计划每周至少花费10-15小时学习软件工程课程。这将包括上课时间、阅读教材、编写代码和完成作业。

额外投入时间

我非常愿意为了一个感兴趣的项目或实战锻炼而付出更多的时间和精力。如果有机会参与一个激动人心的项目或者能够应用所学知识的实际情境,我愿意熬夜和投入更多的时间,以获得更深入的经验和技能。

学习软件工程不仅是为了获得知识,还是为了将其转化为实际能力,并在实际项目中应用。因此,我非常期待通过这门课程来达到上述目标,并将所学的技能应用到实际中。

理论学习

  • 完成学堂在线平台的《软件工程》(刘强教授主讲)慕课第一章和第二章学习,作为课堂讲授的补充,并完成配套练习。

  • 阅读构建之法配套讲义,阅读《人月神话》,并写出读后感。

         

        我最近读了一本名为《人月神话》的书,这是一本关于计算机软件的图书,由布鲁克斯(Frederick P. Brooks. Jr.)所著,并在2002年由清华大学出版。我被其中的主题深深吸引,并从中得到了许多启示。

        首先,《人月神话》的背景设定在软件工程领域,这是一个早已被公认存在严重问题的领域。其中,我们被引入了一个新的概念——“月亮神话”,这是一个用来描绘在软件开发过程中,人员数量和时间可以相互替换的假象。这个比喻形象地揭示了软件工程中的一种危险思想,即认为只要投入足够的人力,就能在预定的时间内完成项目。然而,书中的这一观点让我对软件工程有了更深入的理解。

        其次,我对于书中的核心观点——增加项目人员并不一定能推进项目进度——有了更深的理解。书中详细地解释了当项目人员增加时,会产生额外的沟通成本和培训成本,这些成本会随着人员的增加而增加,从而减缓项目的进度。这一观点对于我们管理项目的时间表和预算有着重要的启示。项目管理的复杂性:《人月神话》强调了软件项目管理的复杂性。布鲁克斯提到了"人月"的概念,即认为将更多的人员添加到一个已经延期的项目中不会缩短工作时间,反而可能会导致更大的混乱。这一观点提醒我们,管理一个软件项目不仅仅是简单地增加资源,还需要考虑到复杂的人际关系和协同工作。工程与艺术的结合:书中提到了软件开发既是一门工程,又是一门艺术。这种结合使得软件开发成为一门独特的领域,需要工程方法来管理项目,同时也需要创造性的思维来解决问题。系统复杂性:布鲁克斯讨论了软件系统的复杂性问题,指出软件的复杂性不仅仅是因为规模,还包括了逻辑和互操作性等因素。这一观点提醒我们,在设计和开发软件系统时,需要考虑到这些复杂性因素,以避免后期的问题。项目管理原则:书中提供了一些重要的项目管理原则,如"二八原则"(80/20规则),以及项目进度追踪和控制的方法。这些原则对于项目管理者和团队成员来说都是有价值的指导。

        最后,我想说的是,《人月神话》是一本理论性与实践性并重的书籍。它不仅提供了许多关于软件工程的深入见解,而且还提供了许多实用的建议,可以帮助我们更好地管理软件项目。虽然书中的一些观点可能对于某些特定的情况并不完全适用,但是它的核心思想——关注项目的人员和时间管理——对于任何从事软件工程工作的人来说都是非常有价值的。

        总的来说,《人月神话》是一本值得一读的书,它提供了我对软件工程的新视角和理解。我强烈推荐给所有对软件工程感兴趣的人阅读这本书。

实践学习

  • 编程环境:根据个人编程习惯,选择合适自己的编程语言,配置好集成开发环境(IDE)。
    • 开发环境应集成了源代码管理、单元测试、性能测试等功能,例如Visual Studio、Eclipse、pycharm,而不仅仅是文本编辑器,例如Python自带的IDLE。
    • 关于编程学习不做统一要求,如个人感觉编程基础薄弱,可以自主学习“程序设计语言”、“数据结构”、“算法设计与分析”等课程,尽早在边学边做过程中补齐短板。
  • 代码仓库:在码云或GitHub建立代码仓库,并与集成开发环境进行集成。
    • 试着编写一个小程序,确保能够正常上传至代码仓库,并能展示多次提交记录。
    • 熟悉代码仓库的pull、push、fork等关键操作。
我选择了python语言作为我本次学习的工具,并配置了相关集成开发环境
  • 源代码管理

  • 代码展示

  • 功能展示

  • 计算下一天的的源代码

def is_leap_year(year):
if year % 400 == 0:
return True
elif year % 100 == 0:
return False
elif year % 4 == 0:
return True
else:
return False


def next_day(year, month, day):
if is_leap_year(year) == True:
if month == 1:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 2:
if day == 29:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 3:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 4:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 5:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 6:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 7:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 8:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 9:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 10:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 11:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 12:
if day == 31:
day = 1
month = 1
year += 1
else:
day += 1
return year, month, day
else:
if month == 1:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 2:
if day == 28:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 3:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 4:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 5:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 6:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 7:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 8:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 9:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 10:
if day == 31:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 11:
if day == 30:
day = 1
month += 1
return year, month, day
else:
day += 1
return year, month, day
elif month == 12:
if day == 31:
day = 1
month = 0
year += 1
else:
day += 1
return year, month, day


year, month, day = map(int, input().split('/'))
year, month, day = next_day(year, month, day)
print(f"The next day is {year}-{month}-{day}.")

  • 代码仓库:在码云或GitHub建立代码仓库,并与集成开发环境进行集成。
  • 试着编写一个小程序,确保能够正常上传至代码仓库,并能展示多次提交记录。
  • 熟悉代码仓库的pull、push、fork等关键操作。

代码仓库建立如下

熟悉代码仓库的pull、push、fork等操作

利用小乌龟,将pycharm编译器的程序上传到Gitee的仓库:

上传成功:

Gitee仓库端显示:

下面进行folk:

学习总结

在软件工程的学习过程中,我逐步掌握了各种重要的知识和技能。从基本的编程语言如Python,到更高级的概念如算法、数据结构和软件架构,我都进行了深入的学习和实践。此外,我还熟悉了软件开发的各种流程和方法,包括需求分析、设计、编码、测试和维护。

然而,学习的过程并非一帆风顺。在学习软件工程的过程中,我遇到了许多挑战,如技术难题、团队协作和时间管理等问题。面对这些问题,我积极寻求解决方案。例如,我通过不断阅读技术文档、参加学术讨论和实际操作来克服技术难题;通过沟通、妥协和协作技巧来解决团队协作问题;通过制定详细的时间表和优先级来提高时间管理能力。

总之,虽然软件工程的学习之旅充满挑战,但正是这些挑战促使我不断进步。我相信,在未来的学习和工作中,我将运用所学的知识和技能,为软件开发事业贡献自己的力量。这条路或许并不容易,但我愿意坚持下去,因为我深爱着软件工程,深信它能带给我无尽的可能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值