软件工程学期个人总结
本学期开学我进行了学期个人目标的总结,现在临近期末,现在我来进行个人学期的总结。
一、学期总结
首先对我开学时提出的目标进行总结。由于本学期我学习了javaweb课程,所以我对javaweb的技术有了更多的了解。上学期也会做,但是上学期也只是会做,而不了解其原理。这学期我对其原理有了更深的进一步的了解,同时对于页面的美观度以及框架的知识也有了更深的了解。对于各种的技术可以在不同场景灵活运用。比如do文件的拦截,AJAX的技术应用。
接着说一下我对安卓开发的掌握程度。由于本学期对一安卓的开发只是在开学的那一个月比较密集,所以我对安卓的开发不是那么的了解,掌握程度也不是那么的牢固,但是经过一个月的学习,也让我对安卓的开发流程有了更深一步的了解。
接下来说最重要的一步,就是团队开发。本学期我进行了两次团队合作开发,每次都有新的收获,获得新的知识,有了成长。第一次我学会了如何与同学进行有效沟通,如何进行团队间的合作。第二次我了解了不同的开发模式,这次我们使用的就是scrum开发模式对于团队的会议,每日例会,燃尽图,P2P的0级开发有了更进一步的认识。同时,最让我感到有收获的是我学会了如何与同学与同事进行有效的沟通,如何让信息快速共享,由于本人担任的是项目负责人的职位,所以我也学会了如何更好的协调我的团队,让团队达到更好的步骤。
最后是关于体重方面,我宣布,减肥失败,但是足球球技有进步。
二、《构建之法》五大问题
《构建之法》是我在课上快速阅读的一本书,在书中的第一张就提出了五大问题,我认为这些问题是我非常想问的。经过书的学习和一学期的学习,我得到了自己的答案。
问题:“软件=程序+软件工程” 和 “软件企业=软件+商业模式”两者是什么,有何关联?
一个良好的软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构),实现(写数据结构和算法),测试,到最后发布软件。程序(算法,数据结构)是基本功,但是在算法和数据结构上,软件工程决定了软件的质量,商业模式决定了一个软件企业的成败。
问题:软件工程究竟是什么,有什么含义?
软件工程是把系统的,有序的, 可量化的方法应用到软件的开发,运营和维护上的过程。软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和软件维护。软件工程和下列的学科相关:计算机科学,计算机工程,管理学,数学,项目管理学,质量管理,软件人体工学,系统工程,工业设计和用户体验设计。
软件工程包括以下几个关键概念和实践:
-
需求分析:了解用户需求和期望,确定软件系统的功能要求、性能要求和质量要求。
-
设计:根据需求分析结果,设计软件系统的体系结构、组件和模块,确保软件系统的可扩展性、可维护性和可测试性。
-
编码:根据设计制定程序代码,使用编程语言实现软件系统的各种功能。
-
测试:在软件系统开发的不同阶段对其进行测试,确保软件系统的质量、稳定性和可靠性。
-
部署和维护:将软件系统部署到生产环境中,并对其进行维护和支持,确保软件系统能够持续运行并满足用户需求。
软件工程是一门广泛应用于各种领域的学科,包括商业、制造业、娱乐等等。它在软件开发中扮演着至关重要的角色,有助于确保软件系统具有高的质量和可靠性,同时也有助于确保软件项目能够按时、按预算和按规格完成。
问题:软件开发流程是什么,有什么难题和特点?
软件开发流程的目的是为了提高软件开发,运营,维护的效率,并提高软件的质量,用户满意度 ,可靠性和软件的可维护性,这时候就需要软件工具加以辅助比如编译工具,源代码管理工具,源代码编辑工具等。
软件开发过程有五大难题:
1.复杂性:因为大型软件有超过 百万行的源代码,上万个文件,这些数量往往以几何级数速度增长,让软件工程师头疼。
2.不可见性:工程师看不到自己的源代码如何具体地在用户上的机器被执行的,因此一旦出现错误,工程师几乎无法完整重现到底程序出现了什么问题。
3.易变形:软件看上去很容易修改相比于硬件,但实际上想要从百万行的源代码中正确的修改,更新是很困难的。
4.服从性:软件需要运行在硬件上,而且需要服从系统中的其他组成部分的要求。
5.非连续性:许多软件系统输入上很小的变化,回引起输出上极大的变化。
软件还有其他特性:有许多不同的程序设计语言,软件工具和软件开发平台、存在许多不同的软件开发流程、软件团队中存在许多不同的角色、软件既可以存储在磁带上,也可以存储在CD/DVD上。
问题:计算机科学和软件工程有什么区别?
计算机科学中的理论研究部分大多与数学,离散数学,数理逻辑密切相关;实践相关的部分,都和数据以及其他学科发生关系,而软件工程则和人的行为,现实社会的需求息息相关,因此两者有较大不同,计算机理论的进展会帮助软件工程(例如对程序正确性的分析);软件工程的进展(更好的工具,更多的应用领域)会帮助计算机科学家更有效的进行实验和探索。
计算机科学和软件工程都是与计算机相关的学科,但它们有一些区别。计算机科学注重于算法、计算理论和计算机体系结构,这些内容用于解决计算机科学的基础原理和理论问题,它是计算机科学的核心学科。软件工程则注重于软件开发的流程、技术和可重复性保障,是一种应用计算机科学原则和方法的工程学科,它确保开发的软件系统在质量、可靠性、可维护性等方面满足业务需求。因此,计算机科学注重于解决计算理论问题,而软件工程注重于解决软件开发中的实际问题。在实际应用中,计算机科学和软件工程经常相互关联和依赖。计算机科学提供了许多核心算法和技术,而软件工程则将这些技术应用于实际软件开发流程中。
软件工程的目标在于创造足够好的软件,尽可能减少BUG的存在,有以下重要几点需要注意:
1.用户满意度:用户可能在使用中发现了很多问题,影响了使用软件的效率。
2.可靠性:软件经常崩溃,导致实用性变差。
3.软件流程的质量:软件团队和开发流程的问题太多,导致了团体成员无法互相合作,按时交付软件。
4.可维护性:某个软件难以维护,使得维护人员表示需要更多的资金和时间维护软件。
问题:软件工程的目标是什么,一个良好的软件需要注意哪些方面?
软件工程的目标在于创造足够好的软件,尽可能减少BUG的存在,有以下重要几点需要注意:
1.用户满意度:用户可能在使用中发现了很多问题,影响了使用软件的效率。
2.可靠性:软件经常崩溃,导致实用性变差。
3.软件流程的质量:软件团队和开发流程的问题太多,导致了团体成员无法互相合作,按时交付软件。
4.可维护性:某个软件难以维护,使得维护人员表示需要更多的资金和时间维护软件。
三、新的问题
本学期学习的主要方面是团队开发,所以我提出的问题大部分是关于团队开发过程中碰到的问题从而引发的问题。
- 在大型软件项目中,如何协调各个团队之间的工作,以便减少合并冲突和错误?
- 在敏捷开发中,如何合理分配开发人员的角色,以便使开发工作最大化?
- 如何避免软件工程项目的延期问题,实现更好的时间管理?
四、回看之前,新的感想
在经过一学期的学习后,我看了一些软件工程的文献, 我的团队也做了一两次 “事后诸葛亮”分析,现在有了很多新的感想。
首先,我发现我一开始提出的问题非常的幼稚,没有深度,而且我对于这些问题的回答也很肤浅。但是这学期我获得的东西也很多,比如如何和人打交道,如何更高效的与同学进行交流。在软件工程的学习中,团队合作是非常必要和重要的一环。我意识到,有效的沟通和协作是关键因素。有时候我需要与团队成员合作完成一个任务,有时又需要向老师和学长询问问题,因此我必须学习如何良好地沟通与协作。在沟通方面,我学会了如何合理表达自己的想法和观点,如何听取他人的意见和建议并与之交流,在沟通中寻找共同点,在冲突中尽量避免攻击性语言的使用等。在协作方面,我学会了如何根据任务安排工作,并准确地分配资源和责任,如何遵循团队决策,并尽可能保持任务在规定时间内完成。这些都是在我重新阅读这学期博客园获得的新感想。
软件工程课程还要我你积极地探究知识,而这方面的经验也会帮助我现在和将来对事物进行分析和学习。在这个过程中我学会了如何寻找或提出问题,如何通过阅读和研究文献等方法获取答案,以及如何把不同的知识点整理成一个完整的知识框架。这些能力已经成为我身学习和发展的基础。最后,考虑到我未来的职业发展,我要将软件工程课程的知识和技能与我将来的工作相结合。我要整合计算机科学、软件工程和其他相关学科的技能,以适应不断变化和发展的技术趋势。
五、对比一些技能评价表,你有什么提高? 还有什么收获是不能用数字衡量的?
本学期学习之后,我发现我代码的风格和规范性有了新的提高。而且这学期的学习,接触了很多公司的开发者文档,学会了如何查看开发者文档,如何调用API接口将公司现有的功能加入自己的程序当中。代码数量也有了新的提升。
当然,这学期收获最多的还是与同学合作开发项目,从中学习到的沟通方法无法用代码数量与成绩衡量。
六、你对于这门课的教学方法, 老师和助教的工作,和其他课程的衔接,有什么意见和建议?
首先,我认为这门课的质量处于相对较高的水平,老师在教学上付出了很多努力。他的知识和经验对我们的学习和探究非常有帮助。同时,通过课堂讨论、练习和分组项目等方式鼓励学生积极思考和沟通,并增加了实践性学习的机会。
然而,在一些方面,我认为这门课可以进一步改进。以下是我的一些建议:
1.更多的实践项目和案例
这门课程中包含了一些分组项目,而且这些项目最终需要提交并进行评估。但是,我认为增加更多实际项目和案例的练习机会,可以让学生更多地探究和实践软件工程知识和技能。这对于学生实际学习和应用所学内容非常有帮助。目前我们练习的项目更多的是底层逻辑,与现实工程有较大出入。
2.更多的个人评估和反馈
在课程中,老师和学长为我们进行了总体评估并给出了总分。然而,我认为这个评估方式过于简单,学长们的判分尺度也不尽相同,所以分数也不能很好反应每个人的水平,没有能够给各个方面提出具体的反馈。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通