软件工程第三次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
这个作业的目标 | 需求分析与原型设计,初步实践软件开发合作 |
学号 | 102201234 |
合作伙伴 | 102201235曾炜坤 |
原型链接
一、《构建之法》阅读总结
《构建之法》阅读总结
一、软件工程师的成长(第3章)
1.1.1 个人能力的衡量与发展
《构建之法》第三章指出,软件工程师的成长是一个多方面的过程。除了技术能力外,工程师还需要积累特定领域的知识,例如医疗或金融行业的背景,这对于理解业务需求至关重要。此外,工程师还应掌握通用的软件设计思想和工程理念,这些抽象的知识有助于在各种情况下做出正确的技术决策。
在职业技能方面,自我管理能力是工程师能够高效工作的基础。这包括时间管理、任务优先级排序以及自我激励等。表达和交流能力同样不可或缺,无论是编写清晰的技术文档还是与团队成员有效沟通,都是软件开发过程中必不可少的部分。团队合作能力则确保了工程师能够融入集体,共同解决问题。最终,工程师的执行力——即按质按量完成任务的能力——是衡量其实际贡献的关键指标。
1.1.2 软件工程师的思维误区
在软件开发过程中,工程师常常会面临一些常见的思维误区。例如,“分析麻痹”是指在开始动手之前试图完全理解每一个细节,这可能导致项目停滞不前。另一种常见误区是“过早优化”,即在没有确凿证据表明需要优化的情况下,过度关注代码性能或效率,反而忽略了整体项目的进度。正确的做法应该是先实现功能,然后再根据实际情况进行必要的优化。
1.1.3 软件工程师的职业发展
工程师的职业发展需要不断地学习和实践。一方面,掌握核心技术是基础,例如数据库管理、网络协议等;另一方面,拓展相关领域的知识也同样重要,这有助于在面对复杂问题时提供更广泛的视角。通过反复练习,工程师可以将日常遇到的问题转化为下意识的操作,从而腾出更多时间和精力来解决更高层次的问题。只有在积累了足够的工程实践经验之后,才能更好地从事科研工作。
二、软件需求分析(第8章)
1.2.1 软件需求
软件需求分析是开发过程中的一个重要环节,它涉及到需求的获取、分析、定义、验证以及管理。需求获取通常包括与客户的交流、市场调研等步骤,目的是明确用户的真实需求。需求分析则需要将这些需求转化为可操作的技术规格说明。需求验证是为了确保所定义的需求是正确且完整的。在整个软件产品的生命周期中,需求管理则确保了需求的一致性和变更控制。
1.2.2 软件产品的利益相关者
除了直接的用户之外,软件产品还有其他利益相关者,如出资人、市场分析人员、监管机构等。这些群体可能有不同的需求和期望,因此在需求分析阶段就需要考虑到所有相关方的意见,以确保最终产品能够满足多方需求。
1.2.3 获取用户需求
获取用户需求的方法有很多,比如焦点小组讨论可以收集一组用户的共同意见;深入访谈可以深入了解单个用户的具体需求;卡片分类可以帮助组织信息结构;用户调查问卷则适用于大规模的数据收集。此外,还可以通过用户日志研究、人类学调查、眼动追踪研究、快速原型调研以及A/B测试等多种方式来获得用户反馈。
1.2.4 竞争性需求分析的框架
NABCD模型提供了一个分析产品需求及其竞争力的框架。N代表需求(Need),即明确用户的基本需求是什么;A代表方法(Approach),即如何实现这些需求;B代表好处(Benefit),即产品带来的价值;C代表竞争对手(Competitors),即分析市场竞争状况;D代表交付(Delivery),即如何将产品交付给用户。
1.2.5 功能分析的四象限方法
功能分析的四象限方法可以帮助团队决定哪些功能需要维持、哪些需要抵消、哪些需要优化以及哪些可以差异化。例如,“维持”意味着以最低成本维持现有功能;“抵消”是指快速达到与竞争对手相当的水平;“优化”是努力做到行业内最佳;“差异化”则是创造独特的功能或优势;而“不做”则意味着剔除不必要的功能,以减少复杂性。
三、NABCD模型分析
以一款面向大学生的合作平台APP为例,NABCD模型的应用如下:
- N(需求):大学生希望在一个安全且隐私保护良好的环境中,促进跨学科的合作。此外,平台需要能够保护用户的个人信息不被滥用。
- A(方法):使用Figma进行原型设计,以可视化方式呈现用户界面;简化UI设计以方便用户注册使用,并设置相关组件和页面以提供详细功能。通过敏捷开发方法快速迭代,及时响应用户反馈。
- B(好处):该平台将面向学生和教师,提供项目推荐和个人聊天功能,以促进项目的创建和合作。这有助于学生建立专业网络,增加实践经验。
- C(竞争对手):市场上存在类似的APP,但本项目致力于提供更加符合校园文化和需求的服务。通过提供专业的认证机制和项目管理工具,吸引更多的目标用户。
- D(推广):通过校内社交网络、B站、微博等渠道进行宣传,并鼓励用户在个人社交媒体上分享。此外,还可以与学校合作,利用官方资源进行推广。
四、总结
综上所述,《构建之法》不仅教会了我们在技术层面如何成长为一名优秀的软件工程师,还强调了个人职业技能的重要性。书中提出的NABCD模型为我们提供了一个系统性的框架,用以指导产品设计和服务创新。通过持续改进我们的工作方法和技术实践,我们可以有效地应对各种项目挑战,最终实现高质量的产品交付。同时,我们也意识到,软件开发不仅仅是技术活,更是艺术和科学的结合,需要工程师们不断地探索和创新。
二、作业的NABCD模型
1、需求分析 (N - Need)
学生们需要一个平台来发起、寻找、和参与跨学科项目,提升合作机会,突破人脉和资源的局限性。
2、关键功能与界面设计 (A - Approach)
风格:命名为协力通,背景和logo采用淡粉色风格,更加惹人喜欢,让同学们在交流的过程中更心平气和。
1.登陆/注册界面
- 功能:
用户注册与登录界面,用户可以选择使用学号和邮箱进行注册或者登陆。 - 界面要素:
输入框(学号、用户名、密码、邮箱)
注册和登录按钮
用户协议等简要说明
2. 主页
- 功能:
根据用户的专业和兴趣,个性化推荐可能感兴趣的项目或合作伙伴。
主要展示正在进行的热门跨学科项目,按领域或合作需求进行分类(如:设计、编程、市场营销等)。 - 界面要素:
导航栏:主页、项目集、聊天、我
顶部搜索框
3. 项目集
- 功能:
用户可以点击查看自己发起或加入的项目
用户可以搜索或创建自己的想要的项目 - 界面要素:
项目描述区
创建按钮
搜索按钮
4.聊天
- 功能:
展示所有聊天对话框
如同微信的聊天功能,让同学们进一步相互了解,沟通项目的具体细节 - 界面要素:
列表显示聊天对话框
点击头像展示他人信息
5.我
- 功能:
展示个人资料,包括头像、昵称、个人信息、我的喜欢、我的申请,最下面展示自我介绍 - 界面要素:
头像(旁边是名字),下面为个人信息、我的喜欢、我的申请的按钮,最下面展示自我介绍
6.个人信息
- 功能:
编辑个人资料,包括头像、昵称、专业、学号、密码、邮箱等个人信息
编辑供同学们查看的自我介绍 - 界面要素:
左上角是保存并返回按钮
上半部分为个人信息编辑
下半部分为自我介绍
7.我的喜欢
- 功能:
收藏我喜欢的项目 - 界面要素:
左上角是保存并返回按钮
其他部分展示项目列
8.我的申请
- 功能:
查看我申请的项目和确认是否好友 - 界面要素:
上半部分为好友申请
下半部分为项目申请
0.搜索界面
- 功能:
展示搜索结果(某个项目的信息、同学信息)
10. 他人信息
- 功能:
展示他人的头像昵称和自我介绍
添加他人为好友
进入与他人的聊天界面 - 界面要素:
上面头像昵称
中间添加他人为好友的按钮和进入与他人的聊天界面的按钮
下面展示对方自我介绍
11.创建项目
- 功能:
用户可以在该页面创建项目 - 界面要素:
项目名称、成员、信息、公开库
3.解决方案的优势 (B - Benefit)
-
促进跨学科知识交流与合作
该平台不仅仅是项目对接工具,更是一个知识共享的社区,学生可以通过平台讨论各自领域的知识,帮助跨学科项目的成员更好地理解彼此的工作思路与方法,提高协作效率。 -
提升个人能力与展示机会
学生参与不同学科的项目可以积累宝贵的实战经验。平台提供的功能可以记录学生的技能和项目履历,增强他们在未来求职中的竞争力。 -
高效的沟通与协作工具
平台配备多样化的协作工具,如多语言支持、任务清单生成等,甚至可以通过AI优化团队沟通方式,减少跨学科交流中的障碍,提升团队协作效果。
平台的这些优势不仅能够提高跨学科合作的成功率,还能为学生的职业发展打下坚实基础,使其成为促进跨学科协作的有效工具。
4.竞争分析 (C - Competition)
-
现有替代方案
目前大学生通常通过以下方式寻找跨学科合作机会:- 人脉关系:依靠个人社交网络寻找合作伙伴。
- 导师引荐:通过导师推荐寻找合适的跨学科学生。
- 社交平台:使用校内QQ群、论坛或表白墙等平台发布需求。
- 校园活动:参加跨学科的社团或创新创业类活动,获取合作机会。
局限性:
- 合作机会有限:依赖社交网络和导师推荐,覆盖面小。
- 信息不透明:机会的发布和获取渠道分散,信息对称性差。
- 沟通成本高:跨专业协作中的信息传递不顺畅,容易产生误解。
-
竞争优势
相较于现有方式,平台的竞争优势在于:- 高效精准匹配:通过数据算法,快速精确地匹配合作伙伴,大大提升了寻找效率。
- 综合资源支持:提供项目管理、时间协调等功能,降低沟通和协作的成本。
- 导师资源整合:平台不仅支持学生间合作,还能引入导师资源,提供更广泛的指导和支持。
与传统的合作方式相比,平台在跨学科协作的组织管理和合作伙伴匹配方面有着明显的优势,能够有效提升学生间合作的成功率,并具有广阔的市场前景。
5.推广策略 (D - Delivery)
-
校园宣传与线上推广
通过学校的互助群、校内的表白墙等渠道发布宣传信息,直接接触有跨学科合作需求的学生。利用学生社交媒体进行病毒式传播,迅速提高平台的知名度和用户量。 -
成立运营团队与工作室
建立平台的运营团队,招募志愿者或学生作为工作室成员,负责平台的日常维护与技术支持,同时通过校园活动提高平台的曝光率,吸引更多学生参与。 -
开放源代码,扩大生态圈
在平台初步运营成功后,可以考虑将部分源代码开放给开发者社区,鼓励不同学校或组织根据自身需求定制和扩展平台功能。通过这种方式,吸引更多高校加入,形成更大的校园生态圈,进一步扩大平台的影响力。 -
校园大使计划
在各大高校中招募平台校园大使,负责推广和组织跨学科项目。校园大使可以定期举办跨学科合作的讲座和沙龙,帮助学生更好地了解平台的功能和优势,并鼓励更多学生注册使用。 -
与校内导师和部门合作
与学校的相关部门(如创新创业中心、学生事务部)合作,通过他们的渠道推广平台。同时,与导师们合作,鼓励他们将学生推荐到平台进行跨学科合作,进一步增加平台的使用频率和可信度。 -
策划线上与线下活动
定期组织跨学科创新挑战赛或黑客松等线上与线下活动,吸引学生参与并利用平台完成项目。通过这种方式,学生不仅能获得实际的合作体验,还能进一步熟悉平台的各项功能,促进平台的持续使用和推广。
平台通过多种推广策略,将在校园内外迅速扩展其影响力,吸引更多用户参与,并逐步建立起一个稳定的用户基础,成为跨学科合作领域的首选平台。
三、UML用例图
四、流程图
五、设计页面
设计总览
登录页面
软件主页
项目集
聊天沟通
个人介绍
六、工作过程
-
需求分析
在设计小程序页面之前,首先需要对需求进行全面分析。与客户或项目负责人讨论,明确目标用户、核心功能、使用场景等。- 用户需求:了解用户的痛点,确定小程序解决的问题和核心功能,要注重不同专业的同学跨专业合作的便利和自由性。
- 业务需求:明确小程序需要满足的业务目标,例如用户注册/登录、项目集的使用、首页的搜索、个人信息的编辑等。
-
功能规划与流程图设计
根据需求,规划小程序的主要功能模块和用户交互流程。创建功能清单并绘制用户流程图,确保每个功能环节逻辑清晰。- 功能模块:划分各个功能,如首页、项目集、聊天、我的资料等。
- 流程图:绘制用户从进入小程序到完成任务的操作流程,明确每一步的交互和跳转逻辑。
-
线框图设计
根据功能规划,制作小程序的低保真线框图(Wireframe)。线框图展示了页面布局和大致的界面结构,便于快速迭代和调整设计。- 页面布局:确定各个页面的布局,如导航栏、主要内容区、底部菜单等。
- 组件布局:明确每个功能模块的组件(按钮、文本框、图片等)的位置和大小。
-
用户体验设计
确保设计符合用户体验的最佳实践,提升小程序的可用性和流畅度。考虑用户行为习惯,设计直观易懂的界面和便捷的交互方式。- 简洁清晰:避免复杂的界面设计,确保用户可以轻松找到所需功能。
- 响应速度:优化页面设计,减少加载时间,提升用户交互的即时性。
- 触控优化:考虑手机屏幕的触控特点,确保按钮大小适中,交互操作顺畅。
七、psp表格
PSP | 预计耗时 (单位:小时) | 实际耗时 |
---|---|---|
阅读《构建之法》 | 1 | 1 |
需求分析 | 1 | 1 |
构建原型模型 | 4 | 6 |
项目准备工作 | 0.5 | 3 |
调试和修改 | 1 | 0.5 |
复盘与总结 | 0.5 | 2 |
八、总结
在本次作业中,我们围绕信息化的客户困扰,结合《构建之法》第3章和第8章的内容,特别是NABCD模型,设计了一款项目集管理系统。我们的目标是实现系统的实用性、有效性、安全性、隐私性和封闭性。通过结对合作,我们在设计过程中不断讨论与细化,确保最终方案符合用户需求。
我们决定开发一个名为“CoNexus-协力通”的程序。该程序的核心功能包括用户注册、角色管理、信息发布和数据分析。用户可以通过学号和邮箱注册,系统通过验证码进行认证,确保账户的安全性。用户分为管理者、普通用户和访客三类,管理者拥有最高权限,可以添加、删除用户及管理信息,而普通用户则可以参与信息发布和互动。访客只能浏览公开信息。
在原型设计中,我们使用了摹客RP工具,创建了各个界面的原型并进行了逻辑流程的梳理。整个界面友好易用,符合主流用户习惯,确保用户在使用时的便捷性与高效性。我们还设计了数据加密和访问控制机制,以保障用户的隐私和信息安全。
通过这一过程,我们不仅学会了使用原型设计工具,还增强了团队合作能力。在后续的代码实现阶段,我们计划基于此次原型进行进一步开发,并依赖AIGC和在线合作平台进行协作,确保工作的高效性和透明性。
总结而言,本次作业不仅让我们更深入地理解了信息化管理的重要性,也为实际开发奠定了基础。期待后续的编程实践能够顺利进行。