这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
这个作业的目标 | 小组结对合作进行需求分析与原型设计 |
学号 | 102201342 |
队员:董雯莉 102201335 潘宇晴 102201342
原型地址
跨界伙伴
1.《构建之法》阅读成果
1.1 第三章
1.1.1 个人能力的衡量与发展
1.软件开发流程不光指团队的流程,还包括个人开发流程。把每个人的工作有序地组织起来,就是团队的流程。“有序”,并不是“无争论”。每个人的工作质量直接影响最终软件的质量。
2.初级软件工程师成长阶段
积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)
积累问题领域的知识和经验(例如:对医疗或金融行业的了解)
对通用的软件设计思想和软件工程思想的理解 (较虚)
提升职业技能(区别于技术技能):职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力。
实际成果:绝大部分软件工程师的工作成果都是可以公开的,所参与的产品用户评价如何,市场占有率如何,对用户有多大价值?在其中起了什么作用?
3.软件开发的工作量和质量的衡量标准
项目/任务有多大?
花了多少时间?
质量如何?(可以用缺陷的数量来除以项目的大小,如 5 Bugs / KLOC 意味着每千行程序有5个缺陷)
是否按时交付?
软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了90%-95%的比例。对于这些任务,一个成熟的软件工程师应该能够降低任务交付的时间的标准差。在团队工作中,稳定、一致的交付时间是衡量一个员工能力的重要方面。
1.1.2 软件工程师的思维误区
软件工程师在开发过程中会走很多弯路,对软件的模块之间的依赖关系的极端态度都会导致延迟交付。
分析麻痹:想弄清所有细节、所有依赖关系之后再动手,心理上过于悲观,不分主次,想解决所有依赖问题
过早优化:在局部问题上陷进去,无视此模块对全局的重要性,过早扩大化/泛化
1.1.3 软件工程师的职业发展
1.如果我们对职业有认真的态度,就可以发现很多证明个人能力的方式。
2.需要有一些核心技术和许多扩展的知识,并在实际工作中不断学习和不断成长:
3.“不精通”者会把时间花在解决低层次问题上,所以要通过不断的练习,把那些低层次的问题变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。有了工程基础,再去谈高层次的“科研”。
1.2 第八章
1.2.1. 软件需求
(一)如何获取软件的需求有以下几个方面:
获取和引导需求
分析和定义需求
验证需求
在软件产品的生命周期中管理需求
(二)对软件的需求也可以做以下的划分:
- 对产品功能性的需求
要求产品必须实现某些功能。例如,学校的选课软件只允许有学生身份的用户浏览并选择课程,同时要求学生选择某一门课时必须要满足“先修课”的要求,等等 - 对产品开发过程的需求
要求软件的开发流程必须满足某些约束条件,例如,开发过程必须产生某种类型的文档,必须在某个时间点达到某个状态,必须对源代码施以某种约束(安全性核查、代码版权核查、代码规范和支持文档的核查) - 非功能性需求
这也叫“服务质量需求”。例如,股票交易系统必须在一定时间内返回用户查询结果(它对时间的要求要比“科技文献检索”网站要高),火车票购票系统、大学选课软件必须能支持一定数量的用户同时访问,等等 - 综合需求
有些需求并不是单单一个软件模块就能满足,例如,“购物网站必须在24小时内把货物发送到用户手中”,这个需求牵涉到软件系统、货物派送系统、送货部门、监控系统等不同部门的功能和执行能力。软件团队和客户代表要在需求阶段把这些问题定义清楚。
1.2.2. 软件产品的利益相关者
用户、顾客、市场分析者、监管机构、软件工程师。
1.2.3. 获取用户需求-用户调查
a) 焦点小组 b) 深入面谈 c) 卡片分类 d) 用户调查问卷 e) 用户日志研究 f) 人类学调查 g) 眼动跟踪研究 h) 快速原型调研 i) A/8测试
1.2.4. 竞争性需求分析的框架:
1.N(Need) 2.A(Approach) 3.B(Benefit) 4.C(Competitiors) 5.D(Delivery)
1.2.5. 功能分析的四象限方法
维持——以最低成本维持此功能
抵消——快速地达到“足够好”,“和竞争对手差不多”
优化——花大力气做到并保持行业最好
差异化——产生同类产品比不了的功能或优势
不做——砍掉一个功能,不一定要做所有的功能
2. NABCD模型分析
N——need,需求
我们通过分析作业要求和现实情况,得出此次项目的需求:为大学生提供一个安全、隐私性强且相对封闭的环境,促进不同专业学生或老师之间的合作。
A——Approach,做法
- 使用figma进行原型设计和框架构建
- 使用简洁UI设计,清晰引导老师学生进行注册使用
- 设置相关组件和页面,提供更多更详细的功能
B——Benefit,好处
- 面向对象:我们的项目面向学生和老师。
- 项目推荐:根据不同学生需求推荐所需项目,也可自行创作项目,让更多志同道合的同学加入
- 个人聊天:学生可通过与其他同学或老师进行个人交流来为项目的创建或合作提供帮助
C——Competitors,竞争
- 市场类型相似的APP居多,需要打造属于我们的优势
- 作为面向学生和老师的校园项目,我们需要更贴合校园化设计
D——Delivery,推广
- 通过校园表白墙或B站、微博等社交平台进行推广
- 也可通过同学个人社交媒体进行推广
3. 原型展示
流程图
UML图
登录界面
注册界面
可选择身份:老师、学生
信息填写注册
主页
逐条列出了目前适合用户的推荐项目
项目详情页
项目创建页
人才推荐页
消息界面
个人界面
学生个人页面
老师个人页面
4. 交流过程
5. PSP表格
PSP阶段 | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|
计划 | 1 | 1.5 |
需求分析 | 2 | 2 |
设计 | 4 | 5 |
实现 | 7 | 8 |
测试 | 2 | 2.5 |
总计 | 16 | 19 |
6. 个人总结
董雯莉
一、合作过程
在本次结对作业中,我们两位同学从阅读《构建之法》第3章和第8章开始,共同学习了NABCD模型,为后续的需求分析和原型设计奠定了基础。在明确客户现实困扰后,我们进行了多次讨论,共同梳理了项目需求,明确了设计方向。我们分别从用户角色、功能需求等方面进行了深入探讨,形成了初步的需求分析。我们采用figma作为原型设计工具,分工合作,共同完成了原型界面设计和流程图绘制。在此过程中,我们互相学习、交流,不断优化原型设计。我们共同梳理了作业要求,分工撰写博客内容,确保内容准确、清晰、图文并茂。在撰写过程中,我们相互审阅、提出修改意见,直至达成共识。
二、合作感悟
本次作业让我们深刻体会到团队协作的重要性。在合作过程中,我们互相学习、取长补短,共同解决问题,提高了作业完成质量。有效的沟通与交流是合作成功的关键。我们在讨论过程中,始终保持开放的心态,倾听对方的意见,确保设计思路的一致性。合理分配时间,确保作业按期完成。在本次合作中,我们制定了明确的时间计划,确保了作业的顺利进行。通过本次作业,我们不仅掌握了原型设计工具的使用,还提高了自己的需求分析、方案设计及博客撰写能力。
总之,本次合作让我们收获颇丰,为我们后续的结对编程实践奠定了坚实基础。在今后的学习过程中,我们将继续发挥团队协作的优势,共同进步。
潘宇晴
一、合作过程
最初,我们进行了面对面的讨论,明确了客户需求及现实困扰。我们认真分析了客户提供的困扰,逐步梳理出平台需要解决的具体问题。我们画出了思维导图,理清思路。每个人分别列出了自己的想法,随后我们对这些想法进行了筛选和优先级排序,确定了核心功能。在初步讨论后,我们将重点放在了需求细化上。我们分别从用户角度出发,构建了不同角色用户的使用场景。通过角色扮演的方式,我们模拟了学生和老师在平台上的注册、项目发布、寻找合作伙伴等流程。我们选择figma工具进行原型设计,在原型初步完成后,我们多次检查测试,发现一些潜在问题和不完善的部分,进一步完善。
二、合作感悟
这次合作让我受益匪浅,我们根据各自的特长与兴趣进行任务分配,让双方在擅长的领域发挥最大效能,比如我擅长figma工具的使用,队友擅长产品设计和后期的测试以及总结。在此过程中,我也学会了如何在合作中协调自己的任务与团队目标,使得每项工作都能顺利进行。在这个过程中,我们相互学习、互相帮助,提升了自己的技能和素养,每个人都能在共同的努力中获得成长。回顾整个合作过程,我们在完成项目的同时学到了更多的技能,并且提高了团队合作能力。