软件工程实践总结——冲!

221900235-赖欣怡 学生 2022-06-26 09:08:53
这个作业属于哪个课程软件工程实践2022年春-F班
这个作业要求在哪里在这里
这个作业的目标1.课程回顾与总结
2.个人技术博客
其他参考文献《构建之法》

目录

  • 第一部分:课程回顾与总结
  • 1.回顾构建之法提问
  • 2.请问你在项目的需求/设计/实现/测试/发布阶段(一共5个阶段)中,每个阶段收获最大的知识或能力是什么?
  • 需求阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 发布阶段
  • 3.结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得。
  • 个人项目
  • 结对编程
  • 团队项目
  • 4.自我评分
  • 第二部分:个人技术总结
  • 技术概述

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

1.回顾构建之法提问

  • 给出以前提问题的博客链接。
    阅读构建之法并提问
  • 请尝试对自己曾经提出的问题进行解答,并阐明,是如何通过看书,实践,或者讨论弄清楚的。
  • 是否原来的问题还不明白?如果有,请分析。
    好像没有,问题都有了新的思考。
  • 是否产生了新的问题?如果有,请提出。
    暂时没有。
  • (1)学生与职业程序员的区别?
    当时我的观点是:学生与职业程序员相比,在写代码中花费的时间更多,一方面是由于代码水平不同,另一方面是由于职业程序员会花费更多的时间在测试和修改代码中。经过个人作业和团队编程之后,我对这一问题有了更深的理解,在真正开发产品时,测试是必不可少的环节,如果代码没有经过测试,那么缺陷在使用中被发现时再修复会花费比测试多几倍的时间,而学生程序员对代码测试的意识、测试方法都比较欠缺,所以写代码的时间更多,测试的时间更少。
  • (2)如何平衡软件产品的利益相关者之间的矛盾
    在团队编程的需求分析阶段和实现阶段都有关于这个问题的讨论,比如软件收费其实就体现了开发者和用户之间的矛盾,用户一定希望免费使用产品,但开发者的成本不可能不计,因此还是应该寻找双方都可接受的平衡点,举个例子:Notability软件之前是一次性付费的买断制,价格为60元左右,付费后可以永久使用,但它在去年突然改成了订阅制:每年需要支付80元进行订阅,引起了一大波用户的不满(包括我) ,于是改用GoodNotes(同类型的笔记软件),这就是矛盾没有平衡的结果。
  • (3) 会不会有很多软件工程师可以更短时间内完成任务却特意花更长时间呢?
    我认为稳定、按时地交付工作是很有必要的,在团队编程阶段,有的成员提前太多时间完成了工作,导致无事可做(比如说前端很快就写完了,一直在等待后端的接口),这样会影响后端开发人员的心态,他们按进度完成却看起来像滞后。所以如果能保障任务的质量,这种特意花更长时间的做法可以接受。
  • (4)成功的公司都必须具备“追逐利润”的价值观吗?
    我还是维持原来的看法,利润是狭窄的,而利益是长远的。如果公司只追逐当前的利润,未必能成为成功的公司。成功的公司应该要有长远的利益观,而不只是追逐利润。一些比较特殊的行业(如医疗),如果只追逐利润,那么可能对公司的形象造成不好的影响,
  • (5)好的用户体验当然是所有人都想要的,如果它和产品的质量有冲突,怎么办?牺牲质量去追求用户体验么,用户能接受吗?
    之前我只在开发过程中思考过这个问题,但是现在我认为应该在需求分析和概要设计时就考虑好,首先在这两个阶段确定目标用户、需求和产品的定位,如果产品的用户群体是25岁以下的年轻群体,那么界面设计、交互形式可能就需要新颖、美观,这时候可以牺牲一些产品的质量(比如说占用的内存)去完善用户体验,但如果用户只追求可用、能用,如果牺牲产品质量去追求用户体验,可能适得其反。

    2.请问你在项目的需求/设计/实现/测试/发布阶段(一共5个阶段)中,每个阶段收获最大的知识或能力是什么?

    需求阶段

  • 知识/能力:学到了确定目标用户群体、获取用户需求的方法,用NABCD模型分析用户需求
  • 因为团队作业中我们的选题是迭代开发,所以主要对已有的成果进行优化,例如:对目标用户群体进行更细致的划分,按使用的频率分为周期性用户、偶发性用户等,据此用NABCD模型从需求、做法、益处、竞争、推广方面进行分析,不同用户群体的需求可能不同。
  • 方法有:理论分析、发放问卷等。

    设计阶段

  • 知识/能力:明确了设计阶段的流程、目标,并实现该目标
  • 设计阶段要根据需求分析的结果,对整个软件系统进⾏设计,如系统框架设计,数据库设计等,确定软件系统的架构,并把需求转化为功能,设计出软件的原型,我主要参与了系统架构的设计和原型设计,原型设计中我最大的体会是每个页面一定要根据功能进行设计,确保涵盖所有功能,最好先制作低保真的线框图,这样修改的代价较小。
  • 方法有:PEST模型、SWOT等模型进行产品分析、功能架构图等。

    实现阶段

  • 知识/能力:自学的能力、团队沟通能力、代码能力和修复bug能力
  • 实现阶段主要是把设计阶段的成果用代码实现,根据团队的分工不同,可能需要学习的技术不同,这就比较考验自学的能力,同时,在交付功能或前后端对接时,需要与相应的成员沟通,作为组长来说,沟通能力就更加重要。最重要的是,开发过程并不总是一帆风顺,可能会遇到很多问题,解决问题的方式有很多种,我一般是上网搜索资料,查看官方文档或者找到靠谱的教程。

    测试阶段

  • 知识/能力:学习测试相关知识、编写测试用例的能力、修复bug能力
  • 因为项目中我负责的web端部分功能比较简单,采用自动化测试需要再编写新的代码,代价太高,于是进行了人工测试,主要用了黑盒测试和白盒测试的方法,黑盒测试从用户使用功能的角度进行测试,白盒测试从代码内部考虑,利用控制台的输出编写测试用例进行测试,发现缺陷并进行修复。
  • 方法:黑盒测试、白盒测试、自动化测试。

    发布阶段

  • 知识/能力:收集用户反馈、与用户沟通的能力
  • 发布产品后,我们主动寻找了身边的同学进行体验,发布反馈问卷进行填写,并与他们进行线上或线下的沟通,了解到用户对产品的满意度,产品最吸引用户的地方,不足之处,进行了总结和改进。

3.结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得。

个人项目

  • 个人项目主要完成了文件读取的程序,在程序类的设计上花了比较多的时间,好处是逻辑清晰,在出现问题时可以很快定位到相应的代码。最后的问题是在windows运行程序会乱码,在测试时,由于在我的电脑(Mac OS系统)中默认编码是utf-8,所以没有发现这一问题,导致完成的结果比较不好,算是一个比较深刻的教训。如果以后有条件,程序的测试可以在不同的系统中运行,发现bug。

    结对编程

  • 结对编程的难度比个人项目大,它不再是简单的控制台程序,需要从需求分析开始,一步步完成原型设计和代码实现,算是一个比较正式的项目流程,而且需要和队友持续沟通,前期准备工作花了一定的时间,在体验了结对编程之后,我对书中的结对编程知识也有了更深的理解,我认为好的搭档是很重要的,态度会直接影响沟通和协作,所以在有条件的情况,可以选择善于学习和沟通的好队友。
  • 我主要负责后端接口的实现,使用了SwaggerUI生成自动的接口文档,并部署在服务器上,因为是展示信息的网站,基本都是get方法,接口的实现比较简单,使用jdbc直接查询数据库返回数据就可以。最大的收获是对前后端交互的方式有了更深入的理解,有时候需要根据前端需要展示的数据进行字段的删改,因为遇到了不错的队友,所以沟通很顺利,这个过程还是比较有趣的,但是也很考验耐心。

    团队项目

  • 我参与的团队项目是STOP——智慧电动车管理系统的迭代开发,虽然学长们已经写了代码,但是第一次运行时也遇到了很多版本问题,这种问题处理起来比较麻烦,搜索了很多资料才成功运行,而且还需要看懂别人的代码,如果没有注释就更加费解,所以我认为迭代开发并不比从0开始轻松。
  • 在迭代中,我们也对这个项目进行了改进,作为组长,在经过了需求分析、原型设计、系统设计和数据库设计、编码实现、测试后,我也体会到了团队协作的重要性,一个人的能力是有限的,只有通过团队合作才能更好地发挥作用,这次的项目使我的经历更加丰富,也让我比较熟练地进行了网页端的开发。
  • 最后很感谢遇见了一起努力了几个月的团队成员,大家对自己的工作都很负责,按时交付了任务,项目的完成也很顺利,S·代码使徒·Bug征服者·实在不行删库跑路·TOP队是最棒的!

    4.自我评分

目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
评分:95
说明:通过第六章的作业里的三个案例学习,我可以比较好地理解软件工程师的道德规范和职责,也认为能做到这一点。

目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。
评分:90
说明:在团队作业和结对编程中都有涉及这一点,客户的需求一般分为潜在需求和直接需求,我觉得可以比较好地理解直接需求,并通过沟通分析出潜在需求。

目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。
评分:87
说明:经过团队的Alpha冲刺,我认为已经掌握了基本的方法,但理解的不够深入。

目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。
评分:88
说明:结对编程和团队作业的原型设计和技术方向的设计我都有参与,并且提出一些优化方案。

目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。
评分:95
说明:团队作业中的需求规格说明书、系统设计说明书等文档的规范都有较好地遵守,不符合规范的我也有修改。

目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。
评分:92
说明:因为是组长,所以我和团队成员的沟通比较多,开展工作也比较顺利。

目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。
评分:92
说明:在项目过程中有使用git等工具进行代码管理,对项目进度的任务规划也比较合理。

第二部分:个人技术总结

Vue使用token进行登录验证和拦截

技术概述

网页中的很多页面在访问之前都需要登录,如果用户没登录,需要跳转到登录页面,因此需要对用户的登录状态进行判断和拦截,这里主要用token的方式实现。

...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

103

社区成员

发帖
与我相关
我的任务
社区描述
福州大学-计算机与大数据学院-傅明建
软件工程 高校
社区管理员
  • Mingjian_Fu
  • Lyu-
  • Wake_lie
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

本次作业截止时间为2022-02-18 23:59:59,请未完成的同学抓紧时间,加入社区后的同学要按照“学号-姓名”的格式修改社区昵称。

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