软工第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
| 这个作业的目标 | 了解github的使用方法 |
| 学号 | 052204124 |
团队网站
https://github.com/QishengLiu/unbeatable-grade-hunters
个人资料截图

自我评估技能树和偏好
能力
能力 A:Python 核心语法与面向对象编程基础
我已系统学习并理解了 Python 的基础语法,像变量、运算符、表达式这些都能熟练运用。也掌握了数据类型(整数、浮点数、字符串、列表、字典等),能根据不同场景选择合适的数据类型来存储和处理数据。流程控制方面,if - else 条件判断、for 和 while 循环都能灵活使用,来控制程序的执行流程。
核心在于,我掌握了面向对象编程的三大特性:封装、继承、多态。能定义类,创建对象,将数据和操作数据的方法封装在类中。也理解了继承可以让子类复用父类的属性和方法,多态则能让不同的对象对同一消息做出不同的响应,并且能够运用这些特性进行简单的程序设计和类结构规划,比如设计一个简单的动物类及其子类(猫、狗等),实现不同子类特有的行为。
能力 B:基础的数据结构与算法应用能力
我学习了常用的数据结构,如数组(Python 中以列表形式体现)、链表(通过自定义类实现节点和链表操作)、栈、队列、二叉树等,并了解它们的基本操作(增、删、改、查)和适用场景。比如知道栈适合“后进先出”的场景,像浏览器的历史记录回退;队列适合“先进先出”的场景,如任务调度。
在算法方面,我能够理解和实现基础的排序算法(冒泡排序、选择排序、插入排序等)、查找算法(顺序查找、二分查找)。能分析这些算法的时间复杂度和空间复杂度,明白在不同数据规模下选择合适算法的重要性。
能力 C:基本的版本控制与开发工具使用能力
我掌握了 Git 的基本工作流程,包括仓库初始化(git init)、添加文件到暂存区(git add)、提交到本地仓库(git commit -m "提交信息")、与远程仓库同步(git push、git pull)等操作,能够使用 Git 进行个人项目的版本管理,比如在多个版本之间切换、查看提交历史等。
同时,我能熟练使用 PyCharm 等集成开发环境进行代码编写和调试。在 PyCharm 中,会利用代码补全、语法检查等功能提高编码效率,也会使用调试工具(设置断点、单步执行、查看变量值等)来排查代码中的问题。
主要短板不足
- 项目经验不足:我缺乏将所学知识整合运用到完整项目开发中的经验。这导致我对软件工程的生命周期(需求分析、设计、编码、测试、部署)缺乏整体认知,不清楚在实际项目中每个阶段具体要做哪些细致的工作,以及各阶段之间如何衔接。
- 代码量不足,实践深度不够:我目前的代码量可能仅停留在千行级别,且多为小型练习或实验片段。由于写得少,我在代码风格(如变量和函数命名是否规范、代码排版是否整洁)、设计模式(对单例、工厂等常见设计模式的实际应用不熟练)、调试技巧(面对复杂问题时,不能快速定位和解决 bug)和解决复杂问题的能力上都有很大提升空间。“眼高手低”是我现阶段需要克服的主要问题,常常是想法很好,但实际动手写代码实现时会遇到各种意想不到的困难。
- 缺乏对前沿技术栈的了解:对于当前工业界常用的技术栈(如 Web 开发中的 Django、Flask 框架,数据科学领域的相关工具库等)、工具链(如持续集成工具 Jenkins 等)和开发规范,我的了解还非常有限,理论与实践之间存在断层,不知道如何将所学的基础 Python 知识与实际工业项目中的技术结合起来。
软件工程学习计划
一、学习周期
以一学期(约4个月,16周)为一个学习周期,可根据实际情况灵活调整。
二、阶段划分与学习内容
(一)第一阶段:基础入门与概念构建(第1-3周)
1. 学习目标
理解软件工程的基本概念、软件生命周期,掌握传统与现代软件过程模型,学会需求工程的基础方法。
2. 学习内容
- 软件工程基础:
- 阅读软件工程入门书籍(如《软件工程:实践者的研究方法》部分章节),理解软件工程的定义、目标和重要性。
- 梳理软件生命周期的各个阶段(需求、设计、编码、测试、维护等)。
- 软件过程模型:
- 深入学习瀑布模型、V模型,分析其优缺点及适用场景。
- 重点学习敏捷开发与Scrum框架,了解迭代式开发的核心思想,可通过线上教程或案例讲解视频辅助理解。
- 需求工程:
- 区分功能需求与非功能需求,学习如何与用户沟通获取需求。
- 掌握用户故事的编写方法,练习绘制用例图(可使用Draw.io等工具)。
3. 实践任务
- 选择一个简单的软件项目(如学生管理系统),尝试用自然语言描述其功能需求,并编写若干用户故事。
- 绘制该项目的用例图。
(二)第二阶段:设计与建模能力提升(第4-6周)
1. 学习目标
掌握软件工程的设计原则,了解常见软件架构风格,熟练使用UML进行系统建模。
2. 学习内容
- 设计原则:
- 理解高内聚、低耦合的设计理念,学习SOLID等设计原则。
- 体系结构设计:
- 学习MVC(模型 - 视图 - 控制器)、客户端 - 服务器等常见架构风格,分析其结构和适用场景。
- UML建模:
- 重点学习类图和时序图,掌握如何用类图描述系统的静态结构,用时序图描述对象间的交互顺序。
3. 实践任务
- 基于第一阶段的学生管理系统项目,设计系统的类图,明确类之间的关系(继承、关联、聚合等)。
- 针对某个核心业务流程(如学生选课),绘制时序图。
(三)第三阶段:构建与质量保障实践(第7-12周)
1. 学习目标
熟练使用Git进行版本控制,掌握软件测试方法并能编写单元测试,提升代码编写的规范性和可维护性。
2. 学习内容
- 版本控制(Git):
- 熟练掌握Git的基本工作流,包括仓库初始化、add、commit、push、pull等操作。
- 学习分支管理,理解分支的创建、合并与解决冲突的方法,可在GitHub上创建仓库进行实操练习。
- 软件测试:
- 学习单元测试、集成测试、系统测试的概念与区别,明确单元测试由开发者负责。
- 区分黑盒测试与白盒测试,学习使用JUnit(Java)或pytest(Python)等框架编写单元测试。
- 编码实践:
- 学习代码命名规范、注释规范,提升代码的可读性。
- 了解常见的代码设计模式(如单例模式、工厂模式等),尝试在代码中应用。
3. 实践任务
- 在GitHub上创建个人项目仓库,进行代码提交、分支创建与合并等操作练习。
- 为学生管理系统中的核心类或方法编写单元测试。
- 按照编码规范,优化之前编写的学生管理系统相关代码。
(四)第四阶段:项目管理与维护认知(第13-16周)
1. 学习目标
了解项目管理的基础方法,理解软件维护的重要性及不同类型的维护工作。
2. 学习内容
- 项目管理基础:
- 学习任务分解方法(如WBS工作分解结构),了解进度估算、风险管理的基本思路。
- 熟悉常见的团队协作工具(如Trello、Jira等)。
- 软件维护:
- 理解软件维护的不同类型(修正性、适应性、完善性维护),分析软件维护在整个软件生命周期中的占比和重要性。
3. 实践任务
- 使用团队协作工具,对学生管理系统项目进行任务分解和进度规划。
- 假设学生管理系统需要适配新的操作系统版本(适应性维护),分析需要进行哪些工作。
三、资源推荐
(一)书籍
- 《软件工程:实践者的研究方法》
- 《Head First 设计模式》
- 《重构:改善既有代码的设计》
(二)在线资源
- Coursera、EdX等平台的软件工程相关课程。
- B站、YouTube上的软件工程教学视频、Git教程、UML建模教程等。
(三)工具
- 版本控制:Git、GitHub/GitLab。
- 建模工具:Draw.io、StarUML。
- 集成开发环境:IntelliJ IDEA、Eclipse、PyCharm等。
- 测试框架:JUnit、pytest。
- 项目管理工具:Trello、Jira。
四、学习评估
(一)阶段评估
每阶段结束后,通过完成对应阶段的实践任务,检查自己对知识的掌握程度,可与同学或老师交流讨论,获取反馈。
(二)综合评估
学期结束时,回顾整个学习过程,总结自己在软件工程各方面的成长,分析存在的不足,为后续深入学习制定计划。
编辑截图

浙公网安备 33010602011771号