201971010233-潘晴 实验四 团队作业1:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | 2022年春软件工程2019级计算机科学与技术) |
这个作业要求链接 | 实验四 团队作业1:软件研发团队组建 |
团队名称 | 夏日限定 |
本次课程学习目标 | 1. 实验三作业互评 2. 组建软件项目研发团队 |
这个作业在哪些方面帮助我实现学习目标 | 1. 通过阅读《构建之法》,了解什么是团队,学会团队交流和合作。 2. 通过阅读完成质量较高的项目小组的代码,了解其思想,学习其优秀之处。 |
团队博客链接 | Summer-limit |
任务一
1. 博文评论
2. 项目克隆
- 克隆情况如下
- 代码核查表
项目 | 内容 |
---|---|
概要部分 | |
代码符合需求和规格说明么? | 符合需求和规格说明 |
代码设计是否考虑周全? | 考虑周全 |
代码可读性如何? | 可读性较好 ,并对关键代码进行了注释 |
代码容易维护么? | 容易维护,对其中一个功能进行修改时,不会影响到其他功能 |
代码的每一行都执行并检查过了吗? | 对项目代码都已执行并检查过 |
设计规范部分 | |
设计是否遵从已知的设计模式或项目中常用的模式? | 遵守 |
有没有硬编码或字符串/数字等存在? | 有 |
代码有没有依赖于某一平台,是否会影响将来的移植? | 移植影响较小 |
开发者新写的代码是否用已有的Library/SDK/Framework中的功能实现?? | 是 |
有没有无用的代码可以清除? | 无 |
代码规范部分 | |
修改的部分符合代码标准和风格么? | 基本符合 |
具体代码部分 | |
有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 已处理所出现错误 |
参数传递有无错误,字符串的长度是字节的长度还是字符的长度,是从0开始计数还是从1开始计数 | 无错误出现;字符的长度;从0开始 |
边界条件是如何处理的?switch语句和default分支是如何处理的?循环有没有可能出现死循环? | 通过前提假设分析推导边界条件;可能出现死循环 |
有没有使用断言来保证我们认为不变的条件真的得到满足? | 否 |
对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄露?有没有优化的空间? | 使用程序语句进行申请、释放;不存在资源泄露;有优化空间 |
数据结构中有没有用不到的元素? | 无 |
效能 | |
代码的效能如何?最坏的情况是怎么样的? | 效能较好;最坏情况下界面显示不完整 |
代码中,特别是循环中是否有明显可优化的部分? | 无,目前未找到 |
对于系统和网络的调用是否会超时?如何处理? | 不会超时,系统运行较快 |
可读性 | |
代码可读性如何?有没有足够的注释? | 对关键代码均有注释,可读性较好 |
可测试性 | |
代码是否需要更新或创建新的单元测试? | 需要 |
3. 阅读《现代软件工程—构建之法》第12章内容,完成以下分析任务
A. 体验任务3实现软件功能,简要描述软件的使用过程,上传使用软件的照片
- 用户登录界面
- APP界面数据库信息读入
- 对物品按照价值重量比进行非降序排列
- 算法求解
B. 总结任务3要求的功能软件解决了吗?软件在数据量/界面/功能上各有什么优缺点?对该软件产品功能有什么改进意见?
- 任务三要求的功能软件全部解决。
- 软件评价
- 数据量:使用测试数据文件,数据量大。
- 界面美观简洁
- 功能完善充实
- 数据量:使用测试数据文件,数据量大。
C. 从学历、年龄、专业、爱好、收入等方面概括实验三任务3所研发软件产品的典型用户群特征,他们表面需求,潜在需求都是什么?
调查方面 | 用户特征 |
---|---|
学历 | 高中及以上 |
年龄 | 16岁及以上 |
专业 | 理工学科 |
爱好 | 编程、算法、数学方面 |
收入 | 不限 |
表面需求 | 可以用贪心算法,遗传算法,动态规划,回溯算法来快速解决0-1背包问题 |
潜在需求 | 学习各个算法的基本思想,了解到使用不同算法解决问题的效率差异 |
4. 为评价作业选择一个结论:a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
e) 非常推荐
任务二
1. 队名:夏日限定
2. 团队组成
成员学号 | 成员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
201971010235 | 阮凯 | 阮凯-博客地址 | PM |
201971010146 | 杨凯 | 杨凯-博客地址 | |
201971010230 | 孟姣姣 | 孟姣姣-博客地址 | |
201971010233 | 潘晴 | 潘晴-博客地址 |
3. 团队成员风采
成员姓名 | 擅长技术 | 编程兴趣 | 希望承担的角色 | 宣言 |
---|---|---|---|---|
阮凯 | web前端 | web前端和python | PM | 做好每一件事 |
杨凯 | java | 前端 | 测试 | 从现在开始 |
孟姣姣 | java | 后端开发 | 开发 | 星光不问赶路人,时光不负有心人 |
潘晴 | c语言 | 前端开发 | 文档 | 虽然很菜,但是努力不在菜 |
4. 阅读《现代软件工程—构建之法》第5章内容:
-
什么是团队?
- 团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力跑。团队成员有各自的分工,互相依赖合作,共同完成任务。
-
软件团队的模式
-
主治医师模式:这样的软件团队中有首席程序员,他负责处理主要模块的设计和编码,其他成员从各种角度支持他的工作(后备程序员、系统管理员、工具开发、编程语言专家、业务专家)。
-
明星模式:主治医师模式运用到极点,可以退化为明星模式。
-
社区模式:社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。
-
业余剧团模式:在每一个项目中,不同的人会挑选不同的角色,在下一个项目中,这些人也许会换一个完全不同的角色类型。个人在团队中听从一个中央指挥的指导和安排。
-
秘密团队:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。这种模式的好处是:团队内部以后极大的自由,较高的热情,没有外界的干扰。
-
特工模式:软件行业的一些团队由一些有特殊技能的专业人员组成,负责解决一些棘手而有紧迫性的问题。
-
交响乐团模式:门类齐全、各司其职。当某个软件领域处于稳定成长阶段的时候,众多大型软件公司的开发团队就会采取这种模式。
-
爵士乐模式:强调个性化的表达,强有力的互动,对变化的内容有创意的回应。
-
功能团队模式:很多软件公司的团队最后都演变成功能团队,具备不同能力的同事们平等合作,共同完成一个功能。
-
官僚模式:这种模式在软件开发中会出问题,因为成员之间不光有技术方面的合作和领导,同时还混进了组织上的领导和被领导关系。
-
-
开发流程
-
软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。
-
写了再改模式:这种模式不需要太多其他准备或相关知识,上来就写代码,写不出来就改,但要写一个有实际用户、解决实际需求的软件,这个方法缺点就很大。
-
瀑布模型:他的适用范围如果产品的定义非常稳定,但是产品的正确性非常重要,需要每一步验证,产品模块之间的借口、输入和输出能很好的用形式化的方法定义和验证,使用的技术非常成熟,团队成员都很熟悉这些技术,负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流。
-
瀑布模式的各种变形:生鱼片模型、大瀑布带小瀑布
-
统一流程:业务建模、需求、分析和设计、实现、测试、部署、配置和变更管理、项目管理、环境、初始阶段、细化阶段、构造阶段、交付阶段
-
老版驱动的流程:该模式的问题领导对许多技术细节是外行,未必懂得软件项目的管理,领导的权威影响了自由的交流和创造,领导最擅长的管理方式是行政命令,这未必能管好软件团队或任何需要创造力的团队,领导的精力有限,领导很忙时,团队怎么办?
-
渐进交付的流程:很接近迭代式开发流程,当系统的主要需求和架构明确之后,软件团队进入了一个不断演进的evolution循环中:开发→发布→听取反馈→根据反馈做改进
-
TSP的原则:使用妥善定义的流程,流程中的每一步都是可以重复的、可以衡量结果的,团队的各个成员对团队的目标,角色,产品都有统一的理解,尽量使用成熟的技术和做法,尽量多地收集数据,并用数据来帮助团队做出理性的决定,制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定,增加团队的自我管理能力,专注于提高质量,争取在软件生命周期的早期发现问题,最有效提高质量的办法是做全面而细致的设计工作。
-
5. MSF的9点基本原则:
-
推动信息共享与沟通(Foster open communications)
所有信息都保留公开,同时对于涉及到技术机密以及安全性等信息采取保护措施。
-
为共同的远景而工作(Work toward a shared vision)
共同的远景”指产品的远景。 -
充分授权和信任(Empower team members)
在一个高效的团队中,所有成员都应得到充分授权。
-
各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
团队中每个角色都有自己的职责,若出现了问题,这个角色就要负责。
-
重视商业价值
如果你还没有能说清楚你的产品解决了什么问题,为谁解决问题,为什么你的产品会解决这些问题,以及客户怎样付钱让你解决
-
保持敏捷,预期和适应变化(Stay agile, expect and adapt change)
软件工程,唯一不变的是变化;我们是预期变化,不是期望变化。
-
投资质量(Invest in quality)
对质量的重视,引发对质量的投资,引发对人、过程和工具的投资。
-
学习所有的经验(Learn from all experiences)
在学习过去的经验的同时,也要避免让过去的经验妨碍解决现在的问题。
-
与顾客合作(Partner with internal and external customers)
MSF强调产品团队与顾客的交流和合作,因为“我觉得”和“顾客觉得”是两码事。
6. 团队企业微信群
7. 团队特色描述:
- 团队特点:思维活跃,特点分明,分工明确。
- 核心竞争力:团队组建的时间久,合作的范围广,相互了解。
任务三
1. 记录完成《实验四 团队作业1:软件研发团队组建》各项任务实际花费的时间
任务 | 实际花费时间(min) |
---|---|
团队名称 | 5 |
团队成员组成 | 10 |
团队成员风采 | 10 |
第5章内容的阅读 | 15 |
MSF的学习 | 30 |
团队企业微信群 | 2 |
特色描述 | 5 |
2. 总结
在本次作业中,我选择了一组完成质量较高的小组项目成果进行测试、复审,代码运行非常成功,项目功能也十分完善,学习到了新的知识,反思了自身的不足,之后应努力向做的好的同学看齐。本次组建团队十分顺利,因为团队成员有过合作完成项目的经历,彼此熟悉,团队相处十分融洽,希望在今后的合作会更加愉快默契。