软件工程第三次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
这个作业的目标 | 结对作业,进行需求分析和原型设计 |
学号及姓名 | 102202146_蓝敏龙 |
结对队友学号及姓名 | 102202135_施宇翔 |
原型地址:
原型模型
一、《构建之法》阅读笔记
1.1 第3章 软件工程师的成长
1.1.1个人能力的衡量与发展
(1)个人开发流程
Individual Contributor(IC):
- 理解问题和需求
- 提出解决方案并估计工作量
- 与团队成员交流解决方案
- 执行开发并验证方案的可行性
- 测试环境中与团队合作,修复缺陷
- 发布后对结果负责
(2)初级软件工程师的成长路径
- 技术技能:掌握编程语言和开发工具
- 领域知识:了解特定行业的背景和实践
- 软件思想:理解软件设计和工程原则
- 职业技能:自我管理、沟通、团队合作、执行力
- 实际成果:以参与的项目和产品的市场表现为标准
(3) 软件开发的工作量和质量衡量
- 项目/任务大小:代码行数(LOC)或功能点(FP)
- 时间花费:人月
- 质量:缺陷数量与项目大小的比例
- 是否按时交付:交付的稳定性和及时性
1.1.2团队对个人的期望
- 有效沟通
- 按时交付
- 接受并完成团队分配的角色和任务
- 全力参与团队活动
- 遵循团队流程
- 事先准备
- 理性工作
1.1.3软件工程师的思维误区
- 分析麻痹
- 不分主次,想解决所有依赖问题
- 过早优化
- 过早扩大化/泛化(Premature Generalization)
1.1.4 技能的反面
1.2 第8章 需求分析
1.2.1 软件需求
- 获取和引导需求
- 分析和定义需求
- 验证需求
- 在软件产品的生命周期中管理需求
1.2.2 软件产品的利益相关者
用户、顾客、市场分析师、监管机构和软件工程师等不同利益相关者
1.2.3 获取用户需求——用户调查
1.2.4竞争性需求分析的框架
NABCD模型
-
Need(需求):了解用户未被满足或有待改进的需求。
-
Approach(做法):提出解决用户需求的独特方法或技术。
-
Benefit(好处):分析新方法或技术给用户带来的好处,包括降低成本、提高效率、改善体验等。
-
Competitors(竞争):评估市场竞争态势,包括竞争对手的数量、市场占有率、产品特点等。
-
Delivery(推广):制定有效的推广策略,确保创新产品或服务能够顺利交付到用户手中。
1.2.5功能的定位和优先级
(1) 功能分析的四个象限
- 杀手功能:OCR文字识别技术
- 外围功能:界面设计
- 必要需求:单词短语释义的准确性
- 辅助需求:皮肤等
(2)对不同功能的办法
1.3 总结
《构建之法》不仅为软件工程师提供了成长指南,也为需求分析提供了全面的方法论。在实际工作中,我们应该结合理论知识和实践,不断提升个人能力,更好地理解和满足用户需求,以实现软件项目的成功。
二、NABCD模型分析
(一)需求分析 N-Need
学生们需要一个平台来发起和参与跨专业的项目,以提升综合能力、拓宽知识面和积累人脉。
(二)关键功能与界面设计 (A - Approach)
登陆/注册页面
- 功能:用户注册与登录界面,用户可以选择使用手机号或者学校学号进行注册或者登陆,进行教育邮箱认证
- 要素:
- 输入框(用户名、密码)
- 注册和登录按钮
- “忘记密码”链接
- 用户协议等简要说明
- 通过向教育邮箱发送验证码,验证身份
用户主页(个人项目界面)
- 功能:
- 查看自己参与的项目
- 发布新的项目
- 查找志同道合的伙伴
- 要素:
- 卡片式展示自己参与的项目,由项目名,项目编号,项目描述,相关领域,创建日期,点击跳转项目详情
- 发布项目图标,点击跳转发布页面
- 伙伴图标,点击跳转伙伴推荐页面
项目详情界面
- 功能:
- 查看项目信息
- 查看项目协作者
- 项目设置
- 要素:
- 可以查看项目详细信息,以及可以在此页面查看项目文件管理,该项目成员可以在此上传(需要发布者审核)或下载资料(非项目成员需要根据开源协议),
- 查看项目的协作者,有改协作者的简介和对项目的贡献,可以在此页面招募协作者或者请求导师的帮助指导
- 有项目修改的图标和删除项目的图标
查找项目/项目推荐页面
- 功能:
- 按照关键词查找所需项目
- 系统推荐热门或者可能感兴趣的项目
- 要素:
- 搜索栏
- 以卡片的形式展示系统推荐的项目
通讯页面
- 功能:
- 根据不同项目的分组,可以点击下拉查找项目成员进行私聊
- 要素:
- 分组栏下拉
- 联系人组块,点击进入私聊
私聊界面
- 功能:
- 聊天
- 要素:
- 聊天气泡
- 输入栏、键盘
个人界面
- 功能:
- 个人信息
- 反馈意见
- 账号安全
- 待添加
- 要素:
- 展现个人,关注,粉丝,收藏
- 修改个人信息
- 提供反馈
- 账号安全,修改密码
意见反馈界面
- 功能:
- 输入意见并提交
- 要素:
- 输入框,提交按钮
修改/添加个人信息页面
- 功能:
- 修改个人信息
- 要素:
- 输入框
- 时间选择浮层
- 兴趣选择浮层
账号安全界面
- 功能:
- 修改密码
- 绑定手机号
- 要素:
- 输入框,提交按钮
(三)解决方案的优势 (B - Benefit)
- 扩大合作机会:突破校园地理和社交限制,增加合作可能性。
- 提升项目成功率:通过跨专业合作,提高项目的多样性和创新性。
- 人脉网络构建:帮助学生建立跨专业的人脉网络。
- 个人技能提升和展示:帮助记录学生项目经历,积累实战经验,帮助他们在未来求职中展示跨学科的综合能力。
- 个性化推荐算法:平台可以通过数据分析和机器学习算法,为学生个性化推荐最合适的项目和合作伙伴。
- 评估系统:平台可以设置一个评估系统,在项目结束后对协作伙伴进行打分,为未来的合作伙伴提供了更多参考信息。
(四)竞争分析 (C - Competition)
现有方案:
- 人际网络
- 导师介绍
- 社交媒体
- 校园社团和活动
上述方案都存在一定的局限性
竞争优势:
- 系统化匹配
- 平台资源支持
- 导师支持
总的来说,这个平台可以有效弥补现有方式的不足,在帮助学生找到跨学科合作伙伴、管理项目资源和促进沟通协作方面具有显著的竞争优势。如果能有效推广并提高用户参与度,它将极具市场潜力。
(五)推广策略 (D - Delivery)
1、在学校互助群表白墙宣传
2、成立工作室、招收工作室成员,负责对软件的维护运营
三、UML用例图
四、流程图
五、效果演示
原型展示
登陆注册
个人项目
查找项目
消息通讯
个人
六、工作过程
需求分析:
步骤一:明确项目目标和需求
①学生希望通过发起或参与跨专业的项目来提升自己的综合能力,拓宽知识面和积累人脉
②学生们需要找到志同道合的合作伙伴
③合作时间安排
④资源平台
步骤二:梳理流程,分工协作
见流程图
由于前置任务两人已经共同完成,接下来大致将任务分工:
102202135 负责uml用例图以及原型模型的逻辑建立
102202146 负责原型模型的美化
步骤三:遇到问题
- 使用墨刀进行原型的建立,然而遇到了无法同时协作的问题。经过查找和探索得到以下步骤
- 创立团队协作账号,切换至团队账号
- 在团队空间里新建原型文件,也可以将个人空间文件移至团队空间
- 可以同时协作
评审反馈
步骤一:将原型设计进行内部评审,查缺补漏。
步骤二:与网络上现有的平台进行对比分析
步骤三:吸收身边体验者的建议
短迭代与优化
步骤一:得到反馈结果后,根据反馈对原型设计进行修改和优化
交付
交作业以验收原型设计是否满足需求然后不断迭代与优化
七、psp表格
PSP | 预估耗时(单位:小时) | 实际耗时 |
---|---|---|
阅读《构建之法》 | 2 | 1.5 |
需求分析 | 1 | 2.5 |
构建原型模型 | 5 | 9 |
调试和修改 | 0.5 | 1 |
复盘与总结 | 1 | 2 |
总计 | 9.5 | 15 |
八、总结
蓝敏龙心得体会
在这次原型设计过程中,我深刻体会到了理论与实践的差距。尽管通过阅读《构建之法》对需求分析和软件工程师的成长有了理论认识,但在实际操作中,我们在细化用户需求、设计UI界面、团队协作和工具限制等方面遇到了挑战。特别是在使用墨刀进行原型设计时,发现无法多人实时协作,这限制了我们的工作效率。此外,设计UI界面时,我们也面临着如何平衡美观与功能性、满足用户体验等困难。为了解决这些问题,我们学习了墨刀的团队协作功能,创建了团队账号,并将项目移至团队空间,实现了多人协作;在UI设计上,我们反复迭代,寻求最佳方案。这一过程不仅提高了我们的协作能力,也增强了我们解决问题的技巧。
这些困难促使我不断学习和成长。我学会了从用户角度挖掘需求,熟练掌握了协作工具的使用,提升了界面设计和用户体验的能力。更重要的是,我认识到软件开发是一个持续改进的过程,用户反馈和团队合作是项目成功的关键。这次实践不仅提高了我的专业技能,也加深了我对软件工程的理解。
施宇翔心得体会
通过深入学习《构建之法》,我将书中的理论知识应用于我们的项目开发中,获得了宝贵的实践经验和心得体会。
在项目启动之初,我首先进行了自我技能的评估,明确了自己在编程语言、框架应用等方面的强项和待提升的技能。这让我能够在项目中针对性地学习和成长,确保了个人能力与项目需求相匹配。利用NABCD模型,我对项目需求进行了深入分析,这帮助我清晰地理解了用户的真实需求,并指导我设计出更符合用户期望的功能和界面。从宏观的框架设计到微观的细节处理,我学会了如何分阶段、有重点地解决问题。这种结构化的思维模式让我能够避免陷入“分析麻痹”和“过早优化”的陷阱。在软件风格设计方面,我们结合了软件的受益人群的审美,将软件风格极简化,但又不失美观,使软件主体倾向于功能的使用。我们软件的主体也没有设计得很复杂,考虑到两个人的综合能力,将软件的程序实现难度超出我们能力的一点点,这让我们实现的时候也有所收获。