686
社区成员




这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 课程回顾与总结 |
其他参考文献 | 无 |
Q1: 程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?
A:对这个问题,我与之前的看法大差不差,是否为满足小部分人的需求或为软件添加某些功能是一个需要仔细权衡的问题。主要考虑一下几点因素:
- 用户需求和价值:评估该需求或功能是否具有足够的用户需求和市场价值。如果只有少数用户或用户群体需要该功能,并且这个需求对于其他用户并不重要,那么可能需要权衡该功能的优先级和成本。
- 可行性和技术复杂性:评估为满足该需求或添加功能所需的技术复杂性和开发工作量。如果实现该功能需要大量的开发工作和资源投入,而且可能会对整体系统架构和性能产生负面影响,那么需要重新考虑是否值得进行。
- 资源和时间限制:评估团队的资源和时间限制。如果为满足小部分人的需求或添加某些功能需要过多的资源和时间,而这些资源和时间可以更好地用于满足更广泛的需求或提升软件的核心功能和性能。
所以,作为程序员,需要在资源有限的情况下做出明智的决策,能够最大程度满足用户需求并实现软件成功。
A:综合这一学期的实践,我认为一个好的程序员应该有一下几点特质:
- 技术能力:好的程序员应具备扎实的技术能力和广泛的知识背景。他们应该熟悉所使用的编程语言和开发工具,并具备解决问题和实现功能的能力。
- 学习能力:好的程序员应具备良好的学习能力和持续进修的意识。他们应该积极追求新技术和工具的学习,跟上行业的发展,并能够快速适应变化。
- 问题解决能力:好的程序员应具备出色的问题解决能力。他们能够理解和分析问题,提出合适的解决方案,并在遇到挑战时寻找有效的解决方法。
- 团队合作:好的程序员应具备良好的团队合作能力。能够与其他团队成员进行有效的沟通和协作,共同解决问题并推动项目的进展。他们应具备良好的沟通技巧和合作精神。
- 自我管理和责任感:好的程序员应具备自我管理的能力和责任感。他们能够合理安排时间和资源,按时完成任务,并对自己的工作负责。
- 代码质量和可维护性:好的程序员注重代码质量和可维护性。他们编写清晰、可读性强、结构良好的代码,并遵循最佳实践和编码规范。
- 解释和分享知识:好的程序员能够愿意分享自己的知识和经验()
变成萝卜),以促进团队和整个开发社区的学习和成长。当然,程序员的好坏是一个阶段性的评价,如果以企业中程序员的要求来看,我还仅是一个坏程序员,只有不断地学习才能在各种标准评判下都是一名好程序员
Q3: 顾客真的知道他们想要什么吗?
A:这一问题我的看法与之前一样,顾客通常有一定的意识和期望,但他们可能无法准确表达或理解自己的需求。而作为服务提供者,我们应该引导和帮助顾客更好地理解他们的问题、目标和需求,并提供合适的解决方案。通过积极的沟通和需求分析,可以更好地满足顾客的期望,提供他们所真正需要的价值和解决方案。
Q4: 我们如何可以和市面上那些繁复多样的APP进行竞争?如果功能相似是不是就没有开发的必要?
A:经过这一次团队开发的经历,我认为要在竞争激烈的应用市场中脱颖而出,关键是通过创新和差异化来吸引用户。这可以包括提供独特的功能、解决特定问题的能力、个性化的定制选项或与其他应用无法媲美的用户体验。同时,深入了解目标用户的需求和痛点,确保应用能够满足他们的期望。积极采集和分析用户反馈,不断优化和改进应用。此外,有效的市场营销策略和推广活动也是吸引用户和打造品牌认知度的重要手段。同样,功能相似并不意味着没有开发的必要。即使市场上已经存在类似功能的应用,仍然可以通过上述方式找到开发的必要性,关键是找到创新点和独特之处,以满足用户需求并建立自己的竞争优势。
A:十分需要,这不仅有助于避免误解和不必要的期望,为软件开发团队提供了指导,以便在后续的开发和测试过程中专注于修复和改进这些缺陷,同时如课程中所讲,这是程序员应该有的职业道德,对于自身也应该坚守这一道德准则。
在这个阶段主要通过问卷收集用户的需求,同时根据NABCD模型进行需求分析,经过一轮的实践,有了将需求转化为明确的项目目标和功能规格的能力。这一阶段在整个开发中有着很大的占比,同时也十分重要,如果没有做好需求分析,在之后的开发中可能会不断变更需求,造成开发成本剧增
在这个阶段我学习如何进行系统架构设计、技术选择和界面UI设计、如何规划和组织系统的各个组件,以及如何选择合适的技术和工具来支持项目的实现。学会了使用figma进行原型设计,以及运用UML对对系统 进行建模。
在实现阶段主要学习了unity的使用和一些UI界面的编写,有了一定的游戏编写能力,了解游戏开发的基本原理和概念,同时,由于UI需要使用很多的资源,也初步学习了多媒体资源的导入和管理。类似如何导入和应用2D图形、音频、动画等资源,以及如何在游戏中使用这些资源来实现丰富的视觉和听觉效果。
这一阶段比较痛苦,需要完成上一阶段出现的各种bug,学习如何设计和执行测试计划,以发现和修复软件中的缺陷,对于游戏来说,测试可能比较困难,对于一些组件单独测试时可能并没有问题,但是组合在一起时就会出各种奇怪的bug,主要原因还是由于unity掌握不熟练,获得能力可能就是能够静下心解决bug。
在这个阶段,我学会了如何准备游戏的发布版本和对用户进行调研。我了解了版本控制和软件包管理的重要性,以及如何提供用户支持和管理用户反馈。这让我更好地理解了软件交付过程和用户体验的重要性。
个人项目
在此次实践中,完成对澳大利亚网球公开赛相关数据的收集,并实现一个能够对赛事数据进行统计的控制台程序,感受了从设计开发到测试的全过程,学会使用Junit来进行单元测试,以及如何提高测试覆盖率,同时了解了代码的打包以及命令行参数的使用,并学会使用PSP表格进行评价,一系列步骤让我对软件开发过程有了一定的了解
结对编程
首先是学习了Figma原型设计工具的使用,对原型设计的工作流程有了初步的了解,对团队开发合作有了更深入的感受,锻炼了与队友的合作交流能力,学习了如何为客户设计一个外观优良,交互良好的界面,团队合作也促进了我对代码的质量和可维护性的重视,因为代码需要被他人阅读和理解
团队项目
在团队项目中,我学会了有效的团队合作和项目管理。通过与团队成员密切协作,分工合作并推动项目进展,我提高了组织能力和团队合作能力。同时,我深刻认识到沟通在团队成功中的关键作用。通过清晰的目标设定、任务分配和定期的进度更新,我们能够更好地协调工作、解决问题,并确保项目按时完成。这些经验将在我未来的团队工作中发挥重要作用。
课程目标掌握程度
序号 | 课程目标 | 掌握程度(百分制) | 理由 |
---|---|---|---|
目标1 | 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。 | 89 | 通过实践以及作业,了解了软件工程师的职业道德规范和实践要求,不会开发违反法律的应用程序,会坚守职业道德 |
目标2 | 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。 | 88 | 能够使用figma为客户设计一个外观优良,交互良好的界面,知道如何使用工具收集与分析用户需求 |
目标3 | 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。 | 85 | 通过按照体系结构设计方法和基本设计原则进行开发,我完成了软件系统的设计。具备了使用各种面向服务组件设计方案的工具的了解和熟练运用能力,能够进行数据设计和构件级设计模型的构建。最终得以构建高效可靠的软件系统设计方案。 |
目标4 | 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。 | 86 | 通过对inscode评测,掌握了一定的评测能力,能够抓住其中的较不好的设计,并提出建议 |
目标5 | 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。 | 88 | 目前虽然仍欠缺与业界同行交流的能力,但是初步学习了撰写软件相关报告与说明书,并采取相应的文档标准规范表达出想法 |
目标6 | 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。 | 85 | 仍欠缺组织、协调或指挥团队开展工作的能力,但能够有效与小组成员沟通和协作,有着团队意识 |
目标7 | 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。 | ·85 | 还比较欠缺管理复杂软件工程项目的能力,但能够选择合适的工具规划软件进度并对项目管理过程进行配置,同时掌握对规模和进度一定的估算能力 |
个人技术
概述:unity背包UI的实现
个人技术总结:个人技术总结
对于团队项目,具体而言和个人以及结对编程有什么不同呢?
在团队项目中,我学会了有效的团队合作和项目管理。通过与团队成员密切协作,分工合作并推动项目进展,我提高了组织能力和团队合作能力。同时,我深刻认识到沟通在团队成功中的关键作用。通过清晰的目标设定、任务分配和定期的进度更新,我们能够更好地协调工作、解决问题,并确保项目按时完成。这些经验将在我未来的团队工作中发挥重要作用<
具体来说,和个人以及结对编程有什么不同呢?
这可以包括提供独特的功能、解决特定问题的能力、个性化的定制选项或与其他应用无法媲美的用户体验。
也可以看看这篇博客: https://blog.csdn.net/SoftwareTeacher/article/details/128699972
你们具体做到了多少呢?