软件工程实践总结——学习与实践
| 这个作业属于哪个课程 | 软件工程24年秋季 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 完成软件工程实践总结&个人技术总结,并完成相应博客 |
| 其他参考文献 | 《构建之法》、CSDN |
目录
- 一、课程回顾与总结
- 1.1 以前问题思考的博客
- 1.2 问题再解答
- 1.2.1 问题1:如何区分一个好的程序员和不好的程序员呢?
- 1.2.2 问题2:软件开发是年轻人的饭碗,吃的是青春饭?那年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的时候该怎么办呢?
- 1.2.3 问题3:花费时间越多,代表工作量越高吗?
- 1.2.4 问题4:为什么要在大学中只用一学期软件工程,时间够吗?
- 1.2.5 问题5:我有了GPT类的应用,传统的搜索引擎是否会被完全替代?
- 1.3 原来的问题还不明白
- 二、 5个阶段中收获的最大的知识或能力
- 2.1 需求阶段
- 2.2 设计阶段
- 2.3 实现阶段
- 2.4 测试阶段
- 2.5 发布阶段
- 三、关于个人项目/结对编程/团队项目理解或心得
- 3.1 个人项目
- 3.2 结对编程
- 3.3 团队项目
- 四、自我评分对课程目标的掌握度
- 4.1 目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
- 4.2 目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。
- 4.3 目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。
- 4.4 目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。
- 4.5 目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。
- 4.6 目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。
- 4.7 目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。
- 五、个人技术总结
一、课程回顾与总结
1.1 以前问题思考的博客
1.2 问题再解答
1.2.1 问题1:如何区分一个好的程序员和不好的程序员呢?
回答:在上一次的问题中我认为好的程序员需要具备扎实的编程基础,能积极学习新技术,并且具备良好的团队合作精神。现在我觉得好的程序员还应该具有解决问题的能力,在面对问题时额能够快速定位问题并提出有效的解决方案。我个人在开发中经常会遇到一些问题,当然通常是bug,在解决这个Bug之前,找到Bug的来源往往是苦恼的,需要用到多种方法调试才能定位到Bug并想办法解决。因此,我觉得一个能快速定位并解决问题的程序员必然是一个好的程序员。
1.2.2 问题2:软件开发是年轻人的饭碗,吃的是青春饭?那年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的时候该怎么办呢?
我现在对这个问题的看法与之前基本不变,快速学习能力固然重要,但是开发过程中大多数都是经验老道者会更具有优势。年轻人学习前人的知识本身也需要花费大量的时间。软件开发时需要持续学习、不断进步的职业道路。
1.2.3 问题3:花费时间越多,代表工作量越高吗?
经过此次项目的开发,我颇有心得,工作量和时间并不能直接挂钩。有的时候你想了很久不一定就能有什么进展,实际开发过程中,我经常只有一两个小时是在编写代码,大多数时间是在学习和查找资料。论工作量,其他时间的工作量并没有那一两个小时来的多,但学习和查资料显然也是必须的。
1.2.4 问题4:为什么要在大学中只用一学期软件工程,时间够吗?
软件工程的学习不只是上课学习。学生还要运用大量的时间学习一些课外知识以及完成实践内容。这一个学期的在软件工程上花的时间比其他一个学期的课程多得多。时间大体上是够的,但是这是一门不断学习的课程,在结课后我认为我们还要继续接触并学习相关知识。
1.2.5 问题5:我有了GPT类的应用,传统的搜索引擎是否会被完全替代?
通过此次开发,我使用过很多次gpt,但是gpt的回答往往没有那么精深和准确,面对很多问题和Bug我依然需要使用传统搜索引擎去搜索前人的解决方法,并不能完全依赖gpt。因此我并不认为传统的搜索引擎会被完全替代。
1.3 原来的问题还不明白
对于原来的问题,我觉得还有以下问题困扰我:
问题4:花费时间越多,代表工作量越高吗?
对于一些用于学习的时间,很难定义这些时间的工作量,理论上工作量产出基本等于0,但是学习是不可或缺的,有了学习才能保证后面的工作有产出。
二、 5个阶段中收获的最大的知识或能力
2.1 需求阶段
当初我们游戏定位的客户有三类人群,新生,毕业生和其他学校的学生。主要目标是方便他们了解福大。和客户的沟通提升了我的沟通技巧和需求分析能力。同时我学会了需求规格说明书的编写,这同样提升了我的信息组织能力。最终我们决定基于unity引擎做一款3d游戏。
2.2 设计阶段
在设计阶段,我查阅网络上的各种资源,在b站上看了无数的教程。我和小组成员讨论,确定了游戏的主要框架:以第三人称和第一人称结合作为主要视角,以教师,操场,食堂,宿舍作为主要的场景,通过地图和对话系统进行场景切换,用任务系统来串联我们的剧情,同时加入各种彩蛋供用户探索用以添加自由度和趣味性。这一阶段主要提升了小组合作能力
2.3 实现阶段
在实现阶段,主要是小组成员之间的合作。我和另一名负责后端的同学一起合作开发。我们从负责建模的同学那里接受建模,从负责剧情的同学那接收剧情说明,从unity商店以及网上寻找合适的免费资源。我负责的内容有UI设计与实现,背包系统设计与实现,场景切换及加载系统设计与实现。这一阶段我主要学到了很多unity开发相关的知识,如canvas的使用,异步加载的使用,场景切换的使用。
2.4 测试阶段
在测试阶段,我学会了测试的各个流程和测试工具的使用。我们使用了游戏的内置工具进行测试,并且邀请其他同学进行游玩以测试游戏是否有Bug。
2.5 发布阶段
在发布阶段,我学会了如何将游戏打包和发布。在网上以及有大量的教程,所以这一部分并没有困扰我们。
三、关于个人项目/结对编程/团队项目理解或心得
3.1 个人项目
我学会了如何使用git仓库进行代码管理,如何爬取网页上自己想要的数据,如何进行测试,如何进行软件评价。
3.2 结对编程
我先学会了如何使用Axure进行原型设计,在后面
学习了html,css,JavaScript相关知识以及vue项目的使用。主要是自学各种新知识让人特别有成就感。
3.3 团队项目
在团队项目中,我主要负责ui设计以及后端开发。
我学习了如何在unity中创建游戏对象和资源管理,
如何使用canvas,panel,text,button,image等原件的使用以及相关c#脚本的实现,
如何配置tmp字体,
如何进行场景切换,
如何进行场景异步加载,
如何使用ScriptableObject设计背包,
如何使用各种布局,
如何制作加载进度条,
如何将导入的图片转换为精灵并处理,
如何调整游戏对不同分辨率的适应。
四、自我评分对课程目标的掌握度
4.1 目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
评分:99
在本次实践中,严守职业道德规范,我参与的相约福大项目考虑了新生,毕业生和其他学校学生的基本需求,为广大学生带来了便利,符合积极向上的软件开发理念。
4.2 目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。
评分:95
在实践过程中,我能广泛收集群众需求,使用Axure进行原型开发,以求准确理解客户的需求,对后续开发提供了极大的帮助。
4.3 目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。
评分:90
我对软件开发的全过程有基本的掌握,但在体系结构设计和构件级设计方面,我认为自己需要更多的实践经验来提高设计质量,尤其是在通过技术评审和优化设计方案方面。
4.4 目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。
评分:80
我在技术评测方面有一定的能力,但在设计模型的评判和创新设计意识方面,我认为自己还有很大的提升空间,特别是在面对复杂问题时,优选设计方案的能力需要加强。
4.5 目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。
评分:82
我能够遵循文档标准并规范表达,但在撰写需求规格说明书和系统设计说明书方面,我认为自己需要更多的实践来提高文档的质量和交流能力。
4.6 目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。
评分:83
我在团队合作和沟通方面表现良好,能够有效地与其他成员协作。
4.7 目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。
评分:75
我对软件项目管理的构成要素有一定的了解,但在软件规模和工作量的估算方法方面,我认为自己需要更多的实践经验。
五、个人技术总结
概述:Unity中利用ScriptableObject创建和管理游戏背包系统。
相关推荐
软件工程课程深入学习与实践课件
需求可以定义为用户对软件产品应具备的功能、性能、属性或其他特性的陈述。它反映了用户对软件系统所期望的行为和条件。需求主要分为三大类:功能性需求(软件应完成的功能),非功能性需求(软件应满足的质量属性,如性能、安全、可用性等),以及约束条件(限制软件开发的条件,如时间、成本、技术或法律约束)。软件建模的方法众多,每种方法都有其特定的应用场景和优势。以下是一些常见的建模方法:面向对象建模(OOM):基于对象的属性和行为,以及对象之间的交互进行建模。这种方法非常适用于复杂系统的建模。结构化建模。
国央企在推动科技创新时,如何利用技术交易系统实现全流程闭环管理?.docx
国央企在推动科技创新时,如何利用技术交易系统实现全流程闭环管理?
高校技术转移办公室人员如何提升技术成果的推介效率?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
机械三维3D设计图-自动引孔锁螺丝设备.zip
机械三维3D设计图-自动引孔锁螺丝设备.zip
sogou-wubi-5.5f.zip
五笔输入法


