软件工程第一次结对作业
软件工程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
作业目标 | 根据具体需求完成APP原型的创建 |
学号 | 102201127 |
合作伙伴 | 102201129 |
墨刀原型链接
作业准备:阅读《构建之法》第3章和第8章的内容
《构建之法》第三章
《构建之法》的第三章主要围绕软件工程师的成长展开,具体内容涵盖了多个方面,以下是对该章节内容的详细归纳:
一、初级软件工程师的成长路径
1.积累软件开发相关的知识:包括编程语言、开发工具、框架等基础知识的掌握。
2.提升技术技能:通过实践项目、阅读技术文档、参加技术社区等方式不断提升自己的技术能力。
3.积累问题领域的知识和经验:深入理解所从事的软件开发领域,积累相关的业务知识和实践经验。
4.对通用的软件设计思想和软件工程思想的理解:掌握面向对象设计、设计模式、软件测试、版本控制等软件工程的基本原理和方法。
5.提升职业技能:包括自我管理能力、沟通表达能力、与人合作能力、按量完成任务的执行力等,这些能力在软件开发过程中同样重要。
二、评价软件工程师水平的主要方法
章节中提到了评价软件工程师水平的一些主要方法,如通过项目大小、花费时长、每千行代码bug数量、能否按时交付等方面来衡量软件工程师的工作量和质量。同时,也强调了稳定、一致的交付时间是衡量员工能力的重要方面。
三、技能的反面与职业发展
1.技能的反面:通过一些例子(如巴克斯顿的观点和魔方的例子)来说明技能的一些层次和是否“精通”的考察方法,从技能的反面——解决问题来从本质上理解“技能”。
2.职业发展:章节还提到了软件工程师的职业发展路径,包括考级之路和职业成长的不同阶段,鼓励软件工程师不断学习和提升自己的能力。
四、团队对个人的期望
在团队环境中,软件工程师需要满足团队的期望,包括交流、说到做到、接收团队赋予的角色并按角色要求工作、全力投入团队的活动、按照团队流程的要求工作等。这些期望有助于团队成员之间的协作和项目的顺利进行。
五、实际案例与练习
章节中可能还包含了一些实际案例和练习,以帮助读者更好地理解和应用所学知识。这些案例和练习可以涉及软件开发过程中的各种场景和问题,帮助读者提升解决实际问题的能力。
综上所述,《构建之法》的第三章从多个方面详细阐述了软件工程师的成长路径、评价方法、技能反面与职业发展以及团队对个人的期望等内容,为软件工程师的成长和发展提供了有益的指导和建议。
《构建之法》第八章
《构建之法》的第八章主要围绕“需求分析”展开,详细阐述了软件团队在开发过程中如何进行有效的需求分析,以确保软件能够满足利益相关者的需求。以下是该章节内容的详细归纳:
一、需求分析的重要性
需求分析是软件开发过程中的关键步骤,它决定了软件最终能否成功满足用户和其他利益相关者的需求。有效的需求分析能够帮助团队明确软件的目标和功能,减少开发过程中的变更和返工,提高软件的质量和用户的满意度。
二、寻找和获取需求
1.利益相关者识别:软件团队需要找到软件的利益相关者,包括直接用户、顾客、市场分析师、软件工程师等,并了解他们对软件的需求。
2.需求获取方式:通过多种方式获取需求,如焦点小组、深入面谈、卡片分类、用户调查问卷、用户日志研究、快速原型调研、A/B测试等。这些方法有助于团队更全面地了解用户的需求和期望。
三、分析和定义需求
1.规整和定义需求:对从各个方面获取的需求进行规整,定义需求的内涵,从各个角度将需求量化(如需求实现的最后期限、所需时间和资源成本、优先级、收益等)。
2.沟通验证:软件团队要与利益相关者沟通,通过分析报告、技术原型、用户调查或演示等形式向他们验证团队对于这些需求的认知。
四、需求的类型
1.功能性需求:要求产品必须实现某些功能。
2.开发过程需求:要求软件的开发流程必须满足某些约束条件,如产生特定类型的文档、达到某个状态、对源代码施以某种约束等。
3.非功能性需求:如执行时间限制、安全性、可靠性等。
4.综合需求:可能牵涉到其他系统的情况,需要综合考虑多个系统的功能和执行力。
五、竞争性需求分析
1.NABCD模型:该章节还介绍了NABCD模型(需求-做法-好处-竞争-推广)作为竞争性需求分析的工具。这个模型帮助团队了解用户需求、创新点、竞争优势以及推广策略。
2.功能定位与优先级:通过NABCD模型分析,团队可以确定功能的定位和优先级,合理分配资源,确保关键功能得到优先实现。
六、需求变更管理
在软件的生命周期中,需求会发生变化。章节强调了需求变更管理的重要性,包括如何识别变更、评估变更的影响、制定变更计划以及执行和验证变更。
七、总结与反思
最后,章节可能还包含了对需求分析过程的总结和反思,帮助团队在未来的项目中更好地进行需求分析。
总的来说,《构建之法》的第八章为软件团队提供了一套系统的方法论来指导需求分析过程,旨在帮助团队开发出满足用户需求的高质量软件。
利用NABCD模型分析本次作业
第八章中的NABCD模型是一种在竞争环境中进行实用性且创新性项目需求分析的有效框架。这个模型由Need(需求)、Approach(做法)、Benefit(好处)、Competitors(竞争)和Delivery(推广)五个部分组成,每个部分都扮演着重要的角色,共同构成了对项目全面而深入的分析。
针对大学里跨专业项目合作面临的挑战,我们可以利用NABCD模型(尽管原文提到的是MABCD,但考虑到标准的NABCD模型在描述类似问题时更为通用,我们将基于NABCD进行解析)来分析和阐述如何改进这一现状。
Need(需求)
需求背景:大学生在追求全面发展和综合素质提升的过程中,对跨专业合作的需求日益增长。尤其是在创业和学术研究领域,多学科背景的团队往往能带来更具创新性和竞争力的项目。
具体问题:缺乏有效的跨专业合作平台和机制,导致学生难以找到合适的合作伙伴;不同专业间的课程安排、时间管理、沟通方式等差异阻碍了合作的顺利进行;缺乏持续的资源和支持以推动项目发展。
Approach(做法)
解决方案:建立一个集信息发布、合作匹配、资源共享、指导服务于一体的跨专业合作平台。该平台可包括但不限于在线论坛、项目数据库、导师推荐系统、时间管理工具、在线协作空间等功能模块。
实施步骤:首先,调研学生需求,明确平台的功能定位;其次,设计并开发平台,确保其易用性和兼容性;然后,通过校园宣传、社团活动等方式推广平台,吸引学生参与;最后,持续收集用户反馈,优化平台功能和服务。
Benefit(好处)
对学生:提供了便捷的合作渠道,帮助学生快速找到志同道合的伙伴;降低了跨专业合作的门槛,增强了学生的综合能力和创新思维;丰富了学习资源和实践机会,有助于学生的个人成长和职业发展。
对学校:促进了学科间的交叉融合,提升了学校的学术水平和科研实力;培养了具有创新精神和实践能力的高素质人才,提高了学校的知名度和影响力。
Competitors(竞争)
现有竞争:可能已存在类似的学生交流平台或创业孵化器,但可能未专注于跨专业合作或缺乏系统性支持。
竞争优势:通过精准定位(专注于跨专业合作)、全面服务(覆盖信息发布、合作匹配、资源共享等多个环节)和持续优化(根据用户反馈不断升级平台功能),形成独特的竞争优势。
Delivery(推广)
推广策略:采用线上线下相结合的方式进行推广。线上方面,利用学校官网、社交媒体、校园APP等渠道进行宣传;线下方面,组织跨专业合作交流会、项目展示会等活动,邀请师生参与并分享经验。同时,积极与学院、学生会等组织合作,共同推动平台的普及和应用。
目标用户:主要面向全校各专业学生,特别是对创业、学术研究等领域有浓厚兴趣的学生群体。通过精准定位和有效推广,逐步扩大用户规模并提升用户粘性。
文字化方案+原型图介绍
根据客户的描述,我们可以知道设计的App的用户以学生和老师为主,所以我们小组在登录界面设计了两种登录模式。
登录进入软件之后,第一个界面是项目界面。该界面右上角有发起项目选项,下面是一些已经发起的项目,同学们可以进行浏览,根据兴趣和项目要求判断自己是否可以参与该项目。
点击发起项目按钮,可以进入有关界面。该界面需要填写项目名称,项目类型,项目发起人,发起人专业,项目描述,需要的专业人才和项目优势这几个内容。此外发起人还可以通过浏览导师名单邀请适合的导师来指导项目。发起项目之后,项目进入项目界面,可以让同学和老师们进行浏览。
第二个界面是聊天界面,使用者可以与同学和老师进行交流互动。
第三个界面是个人界面。在这个界面,使用者可以编辑自己的个人信息,并且可以查看自己发起和参与的项目。
流程图
PSP表格
阶段 | 预估耗时(h) | 实际耗时(h) |
---|---|---|
计划 | 0.5 | 0.5 |
分析 | 0.5 | 0.5 |
设计 | 5 | 5 |
测试 | 0.5 | 0.5 |
评估 | 0.5 | 0.5 |
结对工作过程
我和搭档对相关问题展开了仔细的讨论和细化,并有着明确的分工和任务。我完成了原型图的相关工作,搭档完成了流程图的相关工作。以下是我们进行讨论和交流的图片。
个人总结
理解软件工程基础
在完成本次作业的过程中,我深入阅读了《构建之法》的第3章和第8章,对软件工程师的成长路径、评价方法、技能的反面与职业发展以及团队对个人的期望有了更深刻的理解。同时,我也学习了需求分析的重要性、方法和步骤,以及如何通过NABCD模型进行竞争性需求分析。
应用NABCD模型
通过NABCD模型的应用,我对大学跨专业项目合作的挑战进行了深入分析,并提出了建立跨专业合作平台的解决方案。这个过程中,我学会了如何从需求出发,设计解决方案,评估好处,分析竞争,并制定推广策略。
设计App原型
在设计App的过程中,我与搭档紧密合作,完成了原型图和流程图的制作。我们针对学生和老师的需求,设计了登录界面、项目界面、聊天界面和个人界面,确保了App的易用性和功能性。
时间管理与PSP表格
通过PSP(个人软件过程)表格的使用,我对项目的时间管理有了更清晰的认识。虽然预估耗时与实际耗时相匹配,但这个过程让我意识到了时间预估的重要性和改进空间。
个人成长与反思
总结来说,本次作业不仅让我对软件工程的理论知识有了更全面的理解,还提升了我的实践能力,特别是在需求分析、团队协作和时间管理方面。我相信这些经验将对我未来的学习和职业发展大有裨益。