软件工程第一次结对作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
这个作业的目标 | 学习使用原型软件,辅助完成软件工程的前期任务 |
学号 | 102201237 |
结对成员学号 | 102201137 102201237 |
原型链接 | https://4mk6lo.axshare.com/?g=4&id=8g48sx&p=初始界面 |
阅读《构建之法》后的成果
阅读第三章的总体学习感悟
-
个人成长与能力衡量:软件工程师的成长不仅仅是技术技能的积累,更重要的是对软件工程理念的深入理解、职业素质的提升以及在团队中的有效协作。
-
团队合作的重要性:团队流程和个人流程的有机结合是提升软件开发效率和质量的关键。团队成员之间的沟通、角色分配和流程遵循对于项目的成功至关重要。
-
思维误区:软件工程师在成长过程中会遇到各种思维误区,如分析麻痹和过早优化。识别并克服这些误区是提升个人能力的重要一步。
-
职业发展:软件工程师应有清晰的职业规划,不断提升自己的技术水平和业务理解能力,以适应不断变化的技术环境和市场需求。
-
技能的反面:技能的掌握不仅仅是学会操作,更重要的是理解其背后的原理和逻辑,能够在不同的情境下灵活运用。
第三章的内容和学习成果
1. 软件工程师的成长
-
个人能力的衡量与发展
- 软件工程包括开发、运营、维护软件的技术、做法、习惯和理念。
- 软件开发流程旨在提高效率和用户满意度。
-
团队和个人流程
- 团队流程包括角色间的合作与冲突管理。
- 个人流程涉及理解问题、提出解决方案、执行、测试、修复缺陷。
-
职业篮球运动员与软件工程师
- 职业篮球运动员有详细的数据记录,而软件工程师缺乏类似的量化数据。
-
软件工程师的成长路径
- 积累技术知识。
- 积累问题领域的经验。
- 理解软件设计和工程思想。
- 提升职业技能,如自我管理、沟通、合作。
- 实际成果是评价的重要标准。
-
工作量和质量的衡量
- 项目大小、时间花费、质量(缺陷数量)、按时交付。
-
团队对个人的期望
- 交流、按时交付、接受角色、全力投入、按流程工作、准备、理性工作。
-
软件工程师的思维误区
- 分析麻痹:过度分析导致无法行动。
- 过早优化:在不适当的时机进行优化。
- 过早泛化:过早地将问题一般化。
-
职业发展
- 职业发展路径包括从临时工作到理想的呼唤。
- 考试和认证可以帮助职业发展。
2. 技能的反面
-
技能与问题解决
- 技能的反面是解决问题,通过练习将低层次问题转化为自动操作。
-
魔方技能层次
- 从了解玩法到设计新型魔方。
3. 练习与讨论
-
医生的比喻
- 讨论选择哪种医生,反映软件开发的实践。
-
工程、艺术与手艺
- 讨论软件开发的性质。
-
绞刑架的比喻
- 讨论职业发展和行业竞争。
-
案例分析
- 分析程序员面临的设计决策。
-
代码量与水平的关系
- 探讨代码量与工程师水平的关系。
-
学习方法和核心竞争力
- 讨论有效的学习方法和行业的核心竞争力。
-
IT行业需要的好工程师
- 提供好工程师的检查清单。
-
对职业梯的思考
- 反思职业发展路径。
-
自知之明
- 讨论在学习和工作中的自我认知。
阅读第八章的总体学习感悟
-
需求分析的复杂性:需求分析不单是技术问题,还涉及对人性的理解、市场趋势的洞察以及对业务目标的把握。它要求工程师具备跨领域的知识和技能。
-
用户中心的设计:需求分析始终围绕用户展开,从用户的视角出发,挖掘用户的真实需求,强调了用户体验在软件开发中的重要性。
-
团队合作的必要性:需求分析是一个团队活动,涉及多个利益相关者。有效的沟通和协作对于达成共识、明确需求至关重要。
-
持续迭代和学习:需求分析是一个动态的、迭代的过程。随着项目的推进和市场的变化,需求也在不断变化,工程师需要持续学习和适应。
-
技术和方法论的多样性:需求分析采用多种技术和方法,如焦点小组、用户访谈、卡片分类等,每种方法都有其适用场景和局限性。
-
量化分析的重要性:通过量化的方法,如KANO模型、四象限法等,可以更好地理解需求的优先级和对用户满意度的影响。
-
创新与实践的结合:需求分析不仅是对现有需求的响应,也是创新的起点。工程师需要在理解用户需求的基础上,探索新的解决方案。
-
项目管理技能:需求分析还涉及到项目计划和估计的技术,这要求工程师具备一定的项目管理能力,合理规划项目进度和资源。
第八章的内容和学习成果
《构建之法:现代软件工程》第8章需求分析
1. 软件需求
- 需求获取:通过与利益相关者的沟通,了解他们对软件的需求。
- 需求分析:对获取的需求进行规整和量化,定义需求的内涵。
- 需求验证:与利益相关者沟通,通过分析报告、技术原型等形式验证需求。
- 需求管理:在软件生命周期中对需求进行持续的审核和调整。
2. 软件产品的利益相关者
- 用户:直接使用软件系统的人。
- 顾客:购买软件或根据合同接收软件的人。
- 市场分析者:代表典型用户的需求。
- 监管机构:确保软件符合行业和政策规定。
- 系统/应用集成商:提供咨询、服务、集成等工作。
- 软件团队:完成特定软件或功能的开发团队。
- 软件工程师:参与需求分析的重要角色。
3. 获取用户需求的方法
- 焦点小组:组织目标用户的代表进行讨论。
- 深入访谈:一对一的方式了解用户的背景、心理、需求等。
- 卡片分类:通过分类整理杂乱无章的需求。
- 用户调查问卷:向用户提供设计好的问题进行回答。
- 用户日志研究:要求用户记录与软件相关的行为。
- 人类学调查:与目标用户共同生活,从生活中得到体会和需求。
- 眼动跟踪研究:了解用户浏览网页的规律。
- 快速原型调研:通过快速原型获取用户反馈。
- A/B测试:在现有用户中测试不同的设计方案。
4. 竞争性需求分析的框架NABCD
- N(Need):需求 - 解决用户什么需求?
- A(Approach):做法 - 如何独特地解决这些需求?
- B(Benefit):好处 - 产品/服务给用户带来的好处?
- C(Competitors):竞争 - 竞争对手的情况?
- D(Delivery):推广 - 如何将产品交给用户?
5. 功能的定位和优先级
- 通过四个象限来划分产品功能的特点:
- 杀手功能(Core):差异化焦点。
- 外围功能(Context):支持杀手功能。
- 必要需求(Mission Critical):产品必须满足的基本需求。
- 辅助需求(Enabling):非核心的辅助功能。
6. 计划和估计
- 目标、估计和决心:明确区分目标、估计和决心。
- 找出估计后面的假设:明确估计背后的假设条件。
- 提高估计能力的招数:参考前人经验,快速原型法,提高估计的准确性。
7. 分而治之(Work Breakdown Structure, WBS)
- 将大型交付件分解为小型、具体的交付件。
- WBS的构建要点:
- 保证子节点覆盖全部父节点内容。
- 保证子节点不相互覆盖。
- 叶子节点足够小,能在一个里程碑中完成。
- 从结果出发构建WBS。
NABCD模型
NABCD模型是一个系统化的方法,用于在竞争激烈的市场中分析和规划产品的需求。它帮助团队明确产品的核心价值主张,评估与竞争对手的差异化优势,并制定有效的市场推广策略。
N(Need - 需求)
需求是竞争性需求分析的起点。以下是对需求的进一步理解:
-
用户需求:
- 直接与用户交流,了解他们在使用现有产品或服务时遇到的问题。
- 观察用户行为,发现他们未被满足的需求。
-
市场趋势:
- 分析市场趋势和技术发展,预测未来可能出现的需求。
-
非消费用户:
- 研究那些没有使用任何类似产品或服务的用户,了解原因。
A(Approach - 做法)
做法是团队如何满足这些需求的策略。以下是对做法的进一步理解:
-
技术创新:
- 利用新技术或改进现有技术来提供更好的解决方案。
-
商业模式创新:
- 探索新的商业模式,如免费基础服务加增值服务。
-
用户体验:
- 专注于提供卓越的用户体验。
B(Benefit - 好处)
好处是产品或服务为用户带来的价值。以下是对好处的进一步理解:
-
性能优势:
- 提供比竞争对手更好的性能。
-
成本优势:
- 以更低的价格提供相同的价值。
-
独特功能:
- 提供独特的功能或服务,满足特定用户群体的需求。
C(Competitors - 竞争)
竞争分析是了解市场现状和竞争对手的关键步骤。以下是对竞争的进一步理解:
-
竞争对手分析:
- 了解竞争对手的产品、价格、市场定位等。
-
市场定位:
- 确定自己的产品如何在市场中定位。
-
差异化策略:
- 制定差异化策略,以区别于竞争对手。
D(Delivery - 推广)
推广是确保产品能够到达用户手中的策略。以下是对推广的进一步理解:
-
市场进入策略:
- 制定有效的市场进入策略,确保产品能够吸引目标用户。
-
营销和宣传:
- 利用各种营销渠道和宣传活动来推广产品。
-
用户反馈:
- 收集用户反馈,并据此改进产品。
通过NABCD模型,团队可以更清晰地理解市场需求,制定有效的产品策略,并提高产品的市场竞争力。
2.利用NABCD模型分析此次作业
N(Need - 需求)
需求描述:
- 个人成长:大学生需要一个平台来发现并参与跨专业的学术或创业项目。
- 团队构成:需要找到具有不同专业背景的合作伙伴,以增加项目的多样性和成功率。
- 沟通协作:需要一个共享的沟通和协作平台,以便于管理项目和协调团队成员。
需求来源:
- 内在需求:学生对于个人成长和职业发展的内在需求。
- 项目需求:多学科项目本身对不同专业技能的需求。
- 教育政策:学校鼓励创新创业教育,但缺乏有效的组织和支持。
A(Approach - 做法)
解决方案:
- 协作平台:创建一个校园内的跨专业项目协作平台,类似于内部的创新孵化器。
- 招募系统:提供一个项目提案和团队组建的系统,让学生可以发布项目并招募所需技能的成员。
- 工作坊:组织定期的跨专业工作坊和研讨会,以促进不同专业学生之间的交流和合作。
实施策略:
- 移动应用:开发一个校园社交网络或移动应用,专注于项目合作和专业技能交流。
- 校方合作:与学校的就业指导中心、创业孵化器和各个院系合作,获取支持和资源。
- 导师制度:引入导师制度,让教职工和行业专家指导学生团队。
B(Benefit - 好处)
用户好处:
- 能力提升:学生可以根据自己的兴趣和专业技能选择项目,提升个人能力。
- 创新思维:跨专业的团队构成可以促进创新思维和解决问题的能力。
- 人脉资源:通过项目合作,学生可以积累行业经验和人脉资源。
项目优势:
- 就业竞争力:增加学生的就业竞争力和创业成功率。
- 学术交流:促进校园内的学术交流和知识共享。
- 创新文化:有助于形成积极的校园创新文化。
C(Competitors - 竞争)
竞争分析:
- 现有活动:校园内部可能已有一些零散的社团或活动,但没有系统化和专业化的跨专业合作平台。
- 社交媒体:学生可能会利用现有的社交媒体工具寻找合作伙伴,但这些工具并非专为项目合作设计。
竞争优势:
- 专业性:提供专门针对跨专业项目合作设计的平台,功能更加专业和全面。
- 校方支持:与学校官方合作,提供更多资源和支持,增加项目的可信度和成功率。
D(Delivery - 推广)
推广策略:
- 校园宣传:在校园内部进行宣传,包括海报、横幅、校园广播和社交媒体。
- 校方合作推广:与学校的职业发展中心、学生事务部门和院系合作,将平台推广给所有学生。
- 启动活动:举办启动活动和演示会,展示平台的使用方法和成功案例。
实施计划:
- 市场推广:制定详细的市场推广计划和时间表。
- 收集反馈:收集反馈并持续改进平台功能和用户体验。
- 激励机制:建立激励机制,鼓励学生积极参与和推荐新用户。
3、UML用例图
4、流程图
5、软件主要界面以及功能
1、初始界面
(1)登录界面
(2)注册界面
2、消息界面
·点击右上角"+"弹出菜单栏,点击进入其他页面
(1)聊天界面
(2)创建项目界面
(3)二维码界面
(4)添加好友/群
·支持学号/职工号搜索
(5)搜索界面
(6)个人资料界面
3、联系人界面
·点击右上角图标弹出菜单栏,点击进入添加好友界面
(1)好友、频道、群聊界面
·点击好友头像所属区域进入好友资料界面
(2)新朋友
(3)群通知
4、广场界面
(1)频道界面
(2)广场界面
·点击项目所属区域进去项目详情界面
·项目详情页面点击发布人名称,可以添加好友
·添加好友点击后出现“好友请求已发送”弹窗,点击周围空白区域,弹窗消除
(3)设置界面
·点击推送设置进入推送修改页面
·点击"退出登录"返回主页面
·点击"偏好设置"右侧箭头出现下拉菜单,再次点击收回
6、用户操作流程
(1)用户登录
·可通过学号/职工号/手机号登录
·没有账号的话通过手机号注册
(2)创建项目
·点击消息界面右上角图标创建项目
(3)参与项目
·进入广场界面,寻找感兴趣的项目,点进去与发布者交流沟通
·进入搜索界面,搜索感兴趣的项目
(4)频道交流
·进入频道页面,与他人沟通协作
7、系统维护
(1)使用频率与便利度
·此软件可以作为聊天交友软件,与他人沟通协作
·频道与群聊功能为志同道合的人提供相识的平台
·配备的功能与其他聊天软件并无多大差异,易上手
(2)安全与隐私性
·项目可以设置可见性
·隐私协议承诺收集到的用户信息不被泄露
·设置举报功能,对侵犯他人权利的人或项目进行举报
(3)时效性
·定时对过期的项目进行清理
·对不在校内人员的账号进行清理
(4)相对封闭性
·学生与教职工的账号的初始密码均为学号或职工号,手机号与学生号或职工号绑定,可以保证使用此软件的学生和教职工均为校内人员
·定时获取校内人员名单,登录时记录登录地点,与名单进行匹配,观察是否为我校人员,若不是发出信息警告,引导学生修改密码
8、PSP表格
任务名称 | 预估耗时(h) | 实际耗时(h) |
---|---|---|
阅读《构建之法》 | 3 | 3 |
需求分析 | 1 | 1.5 |
学习Axure | 4 | 5 |
构建原型模型 | 8 | 10 |
项目准备工作 | 1 | 1.5 |
调试和修改 | 2 | 2.5 |
测试 | 1 | 1 |
复盘与总结 | 2 | 2 |
总用时 | 22 | 26.5 |
9、个人总结
(1)个人
- 学习新技能:通过项目,我掌握了设计原型的能力,将创意转化为实际成果,并在实施中修正理论缺陷。
- 实践中的成长:尽管遇到挑战,但从中获得了极大的成就感,提升了自身的解决问题能力。
(2)团队
- 有效沟通:在结对编程中,学会了与搭档进行高效的思想交流和问题解决。
- 任务分配策略:合理规划时间,根据成员专长进行任务分配,确保项目顺利推进。
- 共同进步:通过相互学习和启发,团队整体在编程技术和协作能力上都有所提升。
- 应对挑战:面对种种困难,团队展现出色的适应能力,这让我们有机会在逆境中成长。
- 人际关系:深刻认识到良好的人际互动有助于增强团队凝聚力,提高整体效率。