软件工程实践总结——须知少时凌云志

222000302蔡智伟 学生 2023-06-06 21:13:57
这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标课程回顾与总结、个人技术总结
其他参考文献《构建之法》

目录

  • 第一部分:课程回顾与总结
  • 1.1 以前思考的问题
  • 1.2 对自己曾经思考的问题再次解答
  • 1.3 新的问题
  • 1.4 五大阶段的收获——在实践中学习知识点
  • 个人项目/结对编程/团队项目的理解与心得
  • 个人项目
  • 结对编程
  • 团队项目
  • 自我评分
  • 第二部分:个人技术总结

第一部分:课程回顾与总结

1.1 以前思考的问题

以前思考问题的博客链接

1.2 对自己曾经思考的问题再次解答

Q1:在项目管理中,管理自己公司的团队和管理外包团队,有什么区别呢?

  1. 控制权:在管理自己公司的团队中,项目经理拥有全部控制权,可以直接指导团队成员的工作内容和进度。而在管理外包团队中,项目经理需要与外包团队合作,需要协商确定各方的角色和责任,同时需要监督外包团队的工作进度和质量。
  2. 沟通:在管理自己公司的团队中,沟通相对容易,可以直接与团队成员面对面交流。而在管理外包团队中,沟通可能会出现一些障碍,例如语言和文化差异等问题。
  3. 管理风险:在管理自己公司的团队中,项目经理可以更好地了解团队成员的技能和经验,有助于有效规避风险。而在管理外包团队中,项目经理需要更多地考虑外包团队的技能和经验,以及外包商的信誉和声誉等因素。
  4. 成本控制:在管理自己公司的团队中,项目经理可以更灵活地控制项目成本,例如选择专门的软件或工具来提高效率。而在管理外包团队中,成本控制可能会受到外包商的限制,例如他们可能使用自己的工具,导致项目成本增加。
    总的来说,管理自己公司的团队和管理外包团队的关键区别在于控制权、沟通、管理风险和成本控制等方面。项目经理需要针对具体情况灵活运用不同的管理方法和技巧,以确保项目的成功实施。

Q2:结对编程的价值体现在哪里?

  1. 提高代码质量:结对编程可以避免个人所犯的错误。双方可以共同审查代码,并进行代码重构,从而改善代码的可读性、可维护性和可测试性。
  2. 提高生产效率:结对编程可以减少代码错误并加快问题解决速度,同时也可以在开发过程中及时识别潜在的问题。
  3. 改善团队协作: 结对编程可以促进团队之间的沟通和合作,帮助团队成员彼此建立信任、互相了解技能领域,减少人员之间的摩擦和误解。
  4. 传授技能知识:较有经验的开发人员可以与较少经验的开发人员匹配,教授经验和技能,并提供反馈和支持,以帮助他们成长。
    总之,结对编程对于软件开发团队来说具有很大价值,它可以提高编码质量、生产效率和团队合作能力,同时也为个人和团队成长提供了机会。

Q3:项目/任务的大小应当由什么指标来决定?

1.工作量:项目/任务需要完成的工作量是一个重要的指标,通常用小时、天或周来衡量。更大的工作量往往需要更长的时间来完成,因此需要更多的资源和人力。
2. 复杂性:项目/任务的复杂性是另一个决定大小的指标。如果任务要求涉及复杂的技术或超越了开发人员的经验水平,则任务可能需要更长的时间来完成。
3. 风险:任务/项目的风险也会影响其大小,风险越高,任务需要的时间和资源也就越多。
4. 优先级:任务/项目的优先级也是确定大小的指标,对于紧急或重要的任务,通常需要更多的资源和时间来完成。
除此之外,还有其他因素如可行性、技能要求、相关方需求等,这些都会影响到任务/项目的规模。因此,评估任务/项目大小时需要考虑多个指标,并进行综合分析。

Q4: 顾客真的知道他们想要什么吗?

在某些情况下,软件产品顾客确实可能不知道他们想要什么。有时候顾客可能没有完全明确的需求。他们知道他们需要一个软件产品来解决问题,但不确定该产品应该包含哪些功能和特性。有时候,新兴技术或业务模式可能让顾客难以预见未来的需求。例如,当移动应用程序开始流行时,很多组织可能没有预料到这种趋势,因此可能无法清楚地表达他们所需要的产品功能。尽管如此,软件开发人员在与顾客合作时应该努力理解他们的需求和愿望。通过深入了解顾客所处的行业和业务,联合探讨解决方案并进行必要的反馈,可以帮助确保他们得到所需的产品,并在程序开发的各个阶段中与顾客密切合作以避免可能出现的问题。

Q5: 在项目或程序比较复杂的情况下,如何高效率的进行程序理解?

  1. 学习系统架构:了解系统的总体结构可以快速地让你对程序构造有一个整体的理解,这有利于你在理解程序时减少发生偏差。
  2. 分析和理解源代码:了解代码是非常重要的。通过仔细阅读代码并注释代码,在代码级别上理解程序实现方式。
  3. 绘制流程图:绘制程序流程图可以帮助你在程序中定位数据流和流程控制流的模式,并理解程序的控制流程。
  4. 动手测试:测试程序可以帮助你了解程序如何处理各种输入,以及程序如何产生输出结果。通过观察测试结果,你可以更深入地了解程序的内部工作方式。
  5. 借鉴文档和源代码管理工具:如果有的话,阅读相关的文档可以提供程序背景信息和构建历史信息,源代码管理工具则可以查看之前提交的版本变化记录。
  6. 与其他人交流:与其他人交流可以提供不同的视角和帮助,例如与开发者、质量保证人员、客户等交流,从不同的角度来理解程序。
    总之,程序理解需要耐心和时间。切忌尝试短期内快速理解程序,而是要把握好每一步,在平衡时间和质量的情况下逐步深入。

1.3 新的问题

  1. 如何确保开发团队和客户之间的需求沟通充分?
    2、如何处理应用程序性能问题,并确保应用程序按预期方式运行?.
    3、如何在开发过程中平衡时间、质量和预算等资源?

1.4 五大阶段的收获——在实践中学习知识点

  • 需求阶段

    在需求分析阶段中,我提升了沟通能力、需求分析能力、设计和建模能力和 解决问题的能力;我掌握了利用原型设计软件来设计原型模型、用NABCD来分析需求的知识。

  • 设计阶段

    在设计阶段中,我提升了架构设计能力、设计模式和编程范式、数据库设计能力;我学习了如何将需求转化为可执行的方案,数据库设计说明书相关的要点。

  • 实现阶段

    在实现阶段,首当其冲的就是学习使用一个开发工具unity;学习如何将设计转化为可执行代码; 提升了调试和测试能力和代码管理和团队协作、沟通能力。

  • 测试阶段

    在测试阶段,我接触到各种测试方法和技术,如黑盒测试、白盒测试、性能测试等;我会发现并报告软件缺陷,通过对缺陷进行分析和管理,并提出改进建议。提升了测试技能、缺陷管理和分析能力和团队协作和沟通能力。

  • 发布阶段

    在发布阶段,我学会协调和管理所有团队成员的工作,并且有效地分配时间和资源,以确保项目按时发布,使用调查工具进行用户体验调查;提升了团队管理、时间管理、项目计划和交流技巧等能力。

个人项目/结对编程/团队项目的理解与心得

个人项目

个人项目考察的是个人的综合能力,包括方方面面。在开始任何项目前,确保已经有清晰明确的目标。它可以是解决一个具体问题、增加效率或提高用户体验等。制定好的计划可以帮助提前预测到项目中可能会发生的问题,并及时采取措施,确保项目顺利完成;并且不断学习和改进自己的技能,了解新的技术、框架和工具,在项目开发中更加游刃有余。总之,软件开发个人项目是一个很好的机会去锻炼自己的技能和能力,也可以帮助更好地了解和掌握软件开发过程中的各种问题和挑战。

结对编程

结对编程是一种编程方式,两个人共同编写代码、调试程序和进行测试。这可以增加团队合作精神和工作效率。在此次结对编程中,我与搭档俩人一个人负责编写代码,另一个人负责对代码进行审查;需要双方之间良好的沟通和协作能力、尊重彼此的观点、共同解决问题。总而言之,结对编程对于软件开发过程来说是一个非常有效的工具。通过结对编程,我获得更好的编程经验和技能,并与团队成员共同完成更加卓越的软件项目。

团队项目

软件开发团队项目需要有一个清晰的目标和明确的计划。所有团队成员都应该知道自己在项目中的角色和任务。在我的理解中,团队成员之间需要有良好的沟通和协作能力,并且需要有一个高效的管理团队来监督和指导项目,并确保整个项目始终保持在正确的轨道上;项目期间需要进行合理的迭代和测试,以确保代码质量和功能的完整性;同时,团队成员应该互相信任,尊重彼此的意见和建议,并愿意为了团队的共同目标而努力。总而言之,软件开发团队项目是一个复杂且充满挑战的过程。要成功地完成这种项目,需要有清晰的目标、高效的管理、良好的沟通和协作能力,以及一支拥有多样技能和专业领域的团队。在整个过程中,不断学习和提高是取得成功的关键。

自我评分

  • 目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。

    评分:95分
    解释:作为一名软件工程师,职业道德规范和实践要求是非常重要的。我们应该遵守法律法规,并尊重知识产权。软件开发过程中我们需要严格遵守相关的法律法规和知识产权保护,确保自己的行为合法、合规。我们应该保持诚信和透明度,避免欺骗用户。我们需要确保软件产品的描述信息真实准确,不夸大其功能和效益,不欺骗用户。我们应该保护用户的隐私和安全。我们需要妥善保护用户的隐私信息,确保其安全性和防止泄露。我们应该关注软件产品对社会、健康、文化等方面的影响。我们需要意识到软件产品对社会各个方面的影响,注重软件产品的质量和安全性,确保产品对社会的影响是积极的。最后,我们需要树立积极向上的软件开发理念。以用户为中心,注重软件产品的质量和安全性,追求创新和卓越,达到在行业中具有良好口碑和社会影响力的目标。

  • 目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。

    评分:90分
    解释:在本次实践课程中,我了解并掌握如何正确认识到用户的需求并对此做出回应,以下是我的一些个人理解:

    1. 理解客户需求:首先需要与客户沟通交流,了解其需求和期望,确保对客户需求有准确的理解。
    2. 分析需求:对客户需求进行分析,筛选出主要的需求点,并进行需求优先级排序。
    3. 表达需求:使用可视化和规范化的方式表达客户的需求,例如使用UML图、流程图等工具。
    4. 构建需求模型:根据需求,设计相应的数据流程图、用例图等模型,以便更好地理解需求模型并为后续开发工作做准备。
    5. 需要注意的是,在需求分析的过程中,我们需要针对不同的客户特点,采用灵活多样的需求表达工具,并注重与团队成员及客户之间的沟通协调,确保需求分析的准确性和有效性。同时,需求分析存在一定的不确定性,因此我们需要在需求确认过程中及时调整需求分析模型,并保证需求的可维护性和迭代性。
  • 目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。

    评分:80分
    解释:在本次实践课程中,不管是个人作业、结对编程还是一整个实践环节,给我的最大感触就是充分了解并认识了软件开发的全过程,以下是我的一些理解:
    软件开发的全过程包括需求分析、系统设计、编码实现、测试、部署和维护等阶段。其中,系统设计是软件开发过程中的重要环节;而系统设计的相关方法和原则包括体系结构设计方法、基本设计原则、技术评审和设计模型;最终,通过遵循体系结构设计方法和基本设计原则,以及经过正式的技术评审,我们可以完成高效可靠的服务组件设计方案或软件系统设计方案,确保软件开发的顺利进行,并满足用户需求和开发要求。

  • 目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。

    评分:85分
    解释:在本次实践课程中,我们整个小组也对到底要开发什么,设计什么样的模型,前前后后考虑了很多个模型和创新点,也是从中择优选取,从中也是掌握了软件开发的基本原理和方法,了解各种开发模式和技术框架;各种评测方法和技术,包括手动评测、自动化测试、性能测试等;在执行评测过程中,应该对设计模型进行准确的分析和评价,发现其中存在的问题并提出改进方案;在设计方案的选择上,能够结合项目需求、技术水平、时间成本等因素,进行科学、合理的权衡,优选出最佳的设计方案。

  • 目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。

    评分:85分
    解释:遵循软件开发各阶段文档标准,采用规范的表达,是一名优秀的软件开发人员必备的能力之一。在软件开发过程中,需要撰写的文档包括需求规格说明书、系统设计说明书、系统测试报告等。在本次实践课程中,团队前前后后撰写了需求规格说明书、数据库设计说明书和系统设计说明书,从中也是学习到如何采用规范的表达撰写这些文档。

  • 目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。

    评分:90分
    解释:在本次实践课程中,我在大部分时间内都是协调规划两个开发组的整体进度和调节组内纷争;unity组和建模组之间相辅相成,协调开发整个项目的运行,其中出现的矛盾也是很多,开过的会议也是非常多,一直在讨论、在规划要如何开发才最合理,我想我在这方面的能力掌握得应该是最好的,在项目开发时间末端,时间紧迫的情况下,抗压能力也得到了成长,这对将来的软件开发、未来的成长是非常有帮助的。

  • 目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。

    评分:75分
    解释:由于在这次实践课程的第一个大冲刺alpha冲刺中,我们团队整体缺少一个专门用来规划软件规模和工作量的工具,缺少软件项目管理工具和团队协作工具,这一点是挺致命的,也是在老师和助教的指出中,我们清楚地意识到了这一点,在第二次大冲刺beta冲刺中我们引进了worktile来作为我们的团队协作工具规划每一天的进度和工作量,严格设置ddl来保证当天的任务完工,也算是初步掌握了这方面的能力。

第二部分:个人技术总结

...全文
114 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoftwareTeacher 2023-06-14
  • 打赏
  • 举报
回复

如何确保开发团队和客户之间的需求沟通充分?

@CSDN-Ada助手如何确保软件开发团队和客户之间的需求沟通充分?

CSDN-Ada助手 2023-06-14
  • 举报
回复
@SoftwareTeacher 确保开发团队和客户之间的需求沟通充分可以采取以下措施: 1. 确定沟通渠道:可以通过电话、邮件、会议等多种方式进行沟通,但是需要明确每种方式的优缺点并选择合适的沟通方式。 2. 制定沟通计划:在项目启动阶段,制定沟通计划,明确每个阶段的沟通内容、时间和参与人员,并在项目执行过程中进行调整和跟进。 3. 确认需求:在沟通过程中,开发团队需要确认客户的需求是否准确、完整、可行,并及时反馈客户的问题和疑虑。 4. 及时沟通:需求变更是开发过程中常见的问题,开发团队需要及时与客户沟通变更的影响和可行性,并制定相应的应对措施。 5. 保持记录:在沟通过程中,需要记录每次沟通的内容、时间和参与人员,并及时归档和备份,以便后续的跟踪和分析。 6. 建立信任:开发团队需要与客户建立良好的合作关系,建立信任,通过沟通建立共同的目标和理解,避免沟通中的误解和不信任。

688

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • 张书旖
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧