第一次软件工程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546
这个作业的目标 学习GitHub的使用,学会写博客,明确学习目标与未来规划
学号 102301641

团队主页 https://github.com/XunBo2023/cuddly-umbrella

自我介绍

image

一、当前技能树与技术偏好

  • 了解学习了c语言,c++,python的相关语言知识。
  • 学习了计算机组成原理,计算机网络,操作系统,数据结构等专业课程,对于计算机的基本架构有一定的了解。
  • 技术上偏好高性能计算有关方向的内容,了解学习了并行计算的相关框架,以及cuda。
  • 觉得缺少一些软件开发方面的知识。

二、目前代码量

目前代码量不太清楚,大概3000-4000行左右,希望通过课程的学习代码量增加到4000-5000行。

三、期待的收获

期待在课程的学习中,对相关语言的应用更加熟练,并且学会独立完成一个项目的一部分,学会团队协作开发一个项目。

四、学习指南

软件工程课程简单学习指南
软件工程是一门指导计算机软件开发和维护的工程学科,它将系统化、规范化、可度量的方法应用于软件的开发、运行和维护过程。掌握这门课程,不仅能提升软件开发能力,还能培养工程化思维,为未来从事软件相关工作奠定坚实基础。以下是为你整理的简单学习指南。
一、课程认知与学习目标
(一)课程认知
软件工程并非单纯教授编程技巧,而是围绕软件生命周期(需求分析、设计、编码、测试、部署与维护),研究如何高效、高质量、低成本地开发和维护软件。它融合了计算机科学、数学、管理学等多学科知识,强调团队协作、流程规范和问题解决能力。
(二)学习目标
知识目标:理解软件工程的基本概念、原理和方法,熟悉软件生命周期各阶段的核心任务与常用工具;掌握需求分析文档、设计文档、测试报告等常见软件工程文档的撰写规范。
能力目标:能够运用软件工程方法参与小型软件项目的开发,包括进行简单的需求分析、设计模块结构、编写规范代码、执行基本测试;具备一定的团队协作能力,能在项目团队中承担相应角色并完成任务。
思维目标:培养工程化思维,学会从全局视角规划软件项目,注重软件的可扩展性、可维护性和可用性;树立质量意识,认识到测试、文档等环节在软件开发中的重要性。
二、核心学习内容
(一)基础理论知识
软件工程基本概念:包括软件的定义、分类(系统软件、应用软件、支撑软件)、软件工程的定义、基本原则(如模块化、信息隐藏、抽象等)。
软件生命周期模型:重点学习瀑布模型、原型模型、增量模型、螺旋模型、敏捷开发模型等,理解各模型的优缺点、适用场景,能根据项目需求选择合适的模型。
项目管理基础:了解项目计划制定、成本估算、进度控制、风险管理等内容,掌握甘特图、PERT 图等常用项目管理工具的基本使用方法。
(二)软件生命周期各阶段核心内容
需求分析阶段:学习如何与用户沟通获取需求,运用用例图、活动图等工具描述需求,编写需求规格说明书,确保需求的完整性、一致性和可验证性。
设计阶段:分为概要设计和详细设计。概要设计主要确定软件的体系结构,划分模块及模块间的接口;详细设计则深入到模块内部,设计算法、数据结构和界面细节,常用工具包括结构图、流程图、UML 类图等。
编码阶段:遵循编码规范,选择合适的编程语言(如 Java、Python、C# 等)实现设计方案,注重代码的可读性、可维护性和效率,同时学习版本控制工具(如 Git)的使用,实现团队协作开发。
测试阶段:掌握软件测试的基本概念、原则和方法,包括黑盒测试(如等价类划分、边界值分析)、白盒测试(如语句覆盖、判定覆盖),学习编写测试用例,执行单元测试、集成测试、系统测试和验收测试,发现并协助修复软件缺陷。
部署与维护阶段:了解软件部署的流程和常用工具,掌握软件维护的类型(改正性维护、适应性维护、完善性维护、预防性维护),学习如何处理用户反馈,对软件进行迭代优化。
三、分阶段学习计划
(一)入门阶段(第 1-2 周)
阅读教材前两章,掌握软件工程的基本概念、软件生命周期的定义,观看相关 introductory 视频(如 Coursera 上的软件工程导论课程片段),建立对课程的整体认知。
收集软件工程领域的经典案例(如 Windows 系统开发、微信迭代过程),分析案例中所运用的软件工程方法,加深对理论知识的理解。
安装并熟悉 Git、Visio(或 Draw.io)等基础工具,尝试创建简单的项目仓库,绘制简单的流程图,为后续学习做好工具准备。
(二)基础学习阶段(第 3-8 周)
按软件生命周期顺序,依次学习需求分析、设计、编码、测试各阶段的理论知识和方法,每周完成 1-2 个阶段的学习。
针对每个阶段,完成课后习题和小型实践任务。例如,学习需求分析后,尝试为一个简单的学生管理系统撰写需求规格说明书;学习设计阶段后,用 Visio 绘制该系统的概要设计结构图;学习编码阶段后,用熟悉的编程语言实现系统的一个核心模块(如学生信息录入功能);学习测试阶段后,为该模块编写测试用例并执行测试。
加入学习小组,每周与组员交流学习心得,讨论遇到的问题,尝试分工完成一个小型模拟项目(如简易图书管理系统)的部分阶段任务,初步体验团队协作。
(三)综合实践阶段(第 9-14 周)
组建 4-6 人的项目团队,选择一个实际的小型项目(如校园二手交易平台、个人日程管理 APP),运用所学的软件工程方法完成整个软件生命周期的开发。
团队内部分工明确,分别承担项目经理、需求分析师、设计师、开发工程师、测试工程师等角色,按照项目计划逐步推进项目。定期召开团队会议,汇报项目进展,解决项目中的问题,如需求变更、技术难题等。
完成项目开发后,撰写项目总结报告,梳理项目开发过程中的经验教训,反思在需求分析、设计、测试等环节存在的不足,提出改进方案。
(四)巩固提升阶段(第 15-16 周)
回顾课程重点知识,整理笔记,构建知识框架,重点复习软件生命周期模型、测试方法、项目管理等易混淆和重要的内容。
阅读软件工程领域的前沿文章或书籍(如《敏捷软件开发:原则、模式与实践》),了解行业最新发展趋势(如 DevOps、低代码开发),拓宽知识面。
参与课程考试复习,做历年真题或模拟题,查漏补缺,巩固所学知识,为课程考试做好准备。
四、学习资源推荐
(一)教材
《软件工程导论(第 6 版)》,张海藩、牟永敏编著,高等教育出版社。该书内容全面,通俗易懂,涵盖了软件工程的基本理论和方法,是国内许多高校软件工程课程的首选教材。
《Software Engineering: A Practitioner's Approach(第 9 版)》,Roger S. Pressman 著。作为国际经典教材,它深入探讨了软件工程的实践方法和最新技术,适合想要深入学习的同学。
(二)在线课程
Coursera 上的 “Software Engineering Essentials”(多伦多大学):课程内容系统,结合实际案例讲解软件工程的核心概念和方法,配有作业和项目实践,有助于提升实践能力。
慕课网的 “软件工程实战:从需求到部署”:以实战项目为导向,详细演示了软件从需求分析到最终部署的全过程,适合边学边练,快速掌握实际开发流程。
(三)工具资源
需求分析与设计工具:Visio(绘制流程图、结构图)、Draw.io(在线免费绘图工具,支持 UML 图、流程图等)、Axure RP(原型设计工具,用于制作软件界面原型)。
编码与版本控制工具:Visual Studio Code(轻量级代码编辑器,支持多种编程语言)、IntelliJ IDEA(Java 开发常用 IDE)、Git(版本控制工具,配合 GitHub 或 GitLab 使用,实现团队协作开发)。
测试工具:JUnit(Java 单元测试框架)、Selenium(自动化测试工具,用于 Web 应用测试)、Postman(接口测试工具,方便测试 API 接口)。
(四)社区与论坛
Stack Overflow:全球最大的程序员问答社区,在学习和项目开发过程中遇到技术问题,可在此搜索答案或提问,获取专业人士的帮助。
掘金:国内优质的技术社区,有大量关于软件工程实践、项目经验分享的文章,适合了解行业动态和实际开发中的技巧。
五、常见问题与解决方法
(一)理论知识理解困难
问题表现:对软件生命周期模型、设计原则等抽象理论知识理解不透彻,难以将理论与实际联系起来。
解决方法:结合实际案例学习,例如在学习瀑布模型时,分析传统软件项目(如早期的办公软件)如何按照瀑布模型的流程开发;通过绘制模型流程图、对比不同模型的适用场景,加深对理论的理解;向老师或同学请教,参与课堂讨论,在交流中理清思路。
(二)实践项目无从下手
问题表现:面对实践项目,不知道如何开展需求分析、设计模块结构,编码和测试环节也缺乏方向。
解决方法:从简单项目入手,先模仿成熟项目的开发流程和文档模板,例如参考网上公开的学生管理系统项目文档,学习其需求分析和设计思路;将项目拆解为多个小任务,逐一完成,如先完成需求规格说明书的撰写,再进行概要设计;在项目过程中多查阅资料,利用在线工具和社区资源解决遇到的具体问题,同时积极与团队成员沟通协作,共同推进项目。
(三)团队协作出现矛盾
问题表现:团队成员在项目分工、需求理解、开发进度等方面存在分歧,影响项目进展。
解决方法:项目初期明确团队目标和分工,制定详细的项目计划和沟通机制(如每周固定召开线上会议);遇到分歧时,以项目需求和软件工程原则为依据,理性讨论,充分听取各方意见,寻求最优解决方案;若分歧较大,可请教老师或有经验的学长学姐,借助外部力量协调解决,确保项目按计划推进。


我觉得很有用,使我对这门课有了一个更加清晰的认识,了解一个大致的学习方向。


这是编辑页面
image

posted @ 2025-10-06 00:29  cqqqqq  阅读(29)  评论(0)    收藏  举报