当前位置: 首页 > news >正文

软工2023个人作业一——阅读和提问

项目内容
这个作业属于哪个课程2023年北航敏捷软件工程
这个作业的要求在哪里个人作业-阅读和提问
我在这个课程的目标是学习并掌握现代软件开发和项目管理技术,体验敏捷开发工作流程
这个作业在哪个具体方面帮助我实现目标通读《构建之法》,了解软件工程中基本概念,初步学习 CI/CD 的应用

提问 1

文章背景

文章第 4.3.2 节中写到:

函数最好有单一的出口,为了达到这一目的,可以使用 goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括 goto。

问题提出

我看了这段文字后有疑问。我们在学习 C 语言时都曾听说过 Dijkstra 提出的 “goto 有害论”。本人在编译原理课程上阅读类 pascal 代码时,确实感受到 goto 语句使程序难以理解。并且本人在阅读实际投入使用的高级语言代码时(github 上开源项目或者实习经历)也从未见到过 goto 语句。因此我仍持有疑惑,作者认为 goto 可能使程序逻辑清晰体现这种观点是否不符合主流?

提问 2

文章背景

文章第 4.5.3 节中写到,结对编程是“不间断地复审”:

结对编程让两个人所写的代码不断地处于“复审”的过程,程序员们能够不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。

问题提出

我看了这段文字后有疑问。根据我在以往课程中的实践与观察,但有些人的编程习惯可能是有了大致设计后先搭起初步框架,之后具体实现每一部分时再调整,这个过程中可能发现之前的设计有考虑不周的地方进而做修改。这个过程是很自然的,效率可能比“试图想清所有问题再动手”的悲观方式更高。

但如果处于“不间断地复审”,同伴可能对最初起草的框架有诸多疑问、或者在实现上有不同想法,进而引入很多问答环节。那么我存疑,这样会不会导致了两人在实际动手前花过多时间讨论实现方案的各种细节?

提问 3

文章背景

在文章第 4.6 节中写到:

为什么这一节要讲这么多两人合作的反馈问题?因为,如果软件工程师连一对一的合作都做不好,不能有效地去影响同伴,让合作双方都能从合作中受益,提高水平,那大家就别扯什么团队合作这些事了。

问题提出

本人对这种说法持质疑态度。从文章描述的结对编程和敏捷团队合作流程可以看出,二者的合作模式是不同的:结对编程时两人轮流编程,另一人始终在旁复审,随时沟通,两个人几乎处于平等的角色;而团队合作时大家各司其职,有 PM、DEV、测试之分,DEV 可能还分前端和后端。我设想,在结对编程中,如果一个人的能力明显高于另一人,比如拥有 20 年 C++ 开发经验的程序员和 ta 新带的实习生,可能实习生并不能给 mentor 的代码提太多意见,反而还会因为各种问题不懂,需要讲解,而拖慢开发进度。但实习生未必不能参与团队合作,ta 可能可以很好地完成一些相对简单机械、 mentor 没时间亲自完成的部分;或者做一部分测试工作,在此过程中通过阅读代码提升自己。所以我对结对编程到团队合作的必要性存疑。

提问 4

文章背景

文章第 9.1 节这样描述 PM:

你是否觉得你的长处不在于写代码和debug,而是协调、沟通,让一个团队或组织有效运转起来?你是否喜欢表达,善于和各种专业背景的人沟通?你是否经常思考如何该井生活中点点滴滴的小问题?你是否会思考这样的问题么:新浪微博、豆瓣、qq、微信都可以社交,它们的定位、产品特性、用户群、解决的需求,有什么不同?你是否对以下领域感兴趣,甚至自己找过相关的书来看:心理学、社会学、组织行为学、统计学、商业模式?

问题提出

读了这段文字,我对 PM 这一岗位的选择标准有所疑问。想起来实习时组里的 PM 姐姐(CS 专业毕业)曾回忆往昔:“感觉我毕业时那阵 PM 这个岗位特别火,每个人都拿着一本《人人都是产品经理》,但产品经理哪是那么好做的啊!”根据文章所写,产品经理无疑是要懂得技术的,ta 需要“做开发和测试之外的所有事情”,但 ta 还需要协调沟通。那么成为产品经理最重要的特质是什么呢?或者说如何选择产品经理呢?是选择技术了解全面,还是善于统筹规划,或者是团队沟通、领导能力强的人呢?

提问 5

文章背景

文章第 14.6.1 节写到:

要尽量减少非开发时间,不要动不动就开“全体会议”。团队成员们自我时间管理也很重要。

但敏捷开发鼓励每日例会,在文章第 6.1 节中有写到:

每日立会强迫每个人向同伴报告进度,迫使大家把问题摆在明面上。

问题提出

读了这两段文字,我认为这两种观点看似有矛盾之处。本人理解为,作者反对频繁的程式化的大规模集体会议,但小型的敏捷团队需要随时和组员同步自己的动态。但我依然质疑在实际操作中这两者是否如此泾渭分明。在“会前苦心准备材料,会上汇报自己工作进度给老板听,其它同事汇报时就摸鱼”的累赘和“我昨天写代码-我今天继续写代码-我没碰到什么问题-散会”的草率之间的平衡点如何把控?

相关文章:

软工2023个人作业一——阅读和提问

项目内容这个作业属于哪个课程2023年北航敏捷软件工程这个作业的要求在哪里个人作业-阅读和提问我在这个课程的目标是学习并掌握现代软件开发和项目管理技术,体验敏捷开发工作流程这个作业在哪个具体方面帮助我实现目标通读《构建之法》,了解软件工程中基…...

【Redis】线程模型:Redis是单线程还是多线程?

【Redis】线程模型:Redis是单线程还是多线程? 文章目录【Redis】线程模型:Redis是单线程还是多线程?Redis 是单线程吗?Redis 单线程模式是怎样的?Redis 采用单线程为什么还这么快?Redis 6.0 之前…...

FSM(有限状态机)

FSM有限状态机FSM创建控制有限状态机的脚本设置FSM状态机下的各个状态添加测试类FSM的优点FSM 虽然Unity已经有了动画状态机,但是为了代码的开放封闭原则,这时FSM有限状态机的作用就凸显了出来。 创建控制有限状态机的脚本 先创建一个脚本用来控制有限…...

奇妙的background-clip:text

我们在学习CSS3时,一个背景属性background-clip用来对背景进行裁剪,即指定背景绘制的区域,通常我们使用的几个属性如下:值说明border-box默认值。背景绘制在边框方框内(剪切成边框方框)。padding-box背景绘…...

Vmware虚拟机无法联通主机解决方法二

昨天在遇到了VMware 虚拟机无法联通主机,导致我在CentOS-7 搭建的伪Hadoop3 服务,无法访问管理平台,使用将网络编辑器修改为“桥接”模式解决。今天在学习HBase 时,昨天的问题又重新了,我通过SSH 工具MobaXterm 都无法…...

Boost资料整理备忘

Boost资料整理备忘 网络资源 书籍: The Boost C Libraries官方文档 Boost Library Documentation random boost.randomBoost随机库的简单使用:Boost.Random(STL通用)tutorialstd::random boost::asio Boost.Asio 网络编程 - 基本原理Boost.Asio DocBoost定时器 网…...

规则引擎与风控系统01:新问题,新挑战

如果说在支付系统中使用设计模式,以及开发自定义协议的物联网这两类应用还不够酷的话,那么接下来,咱们就来学一点高逼格的技术吧。 在互联网已经日益普遍的时代,不管是开发2C应用还是2B应用,相信大部分的开发者都有过处理复杂业务逻辑的经历,比如电商、社交、电子政务、O…...

Oracle-00-卸载篇

这里给出企业级的Oracle 10g的卸教程,新安装的19c并没有正经去做卸载的操作,为了后面教程的进度,这里就先借用下10g,如果有需要会重新更新19c的卸载教程 windows服务中将Oracle所有服务全部停掉 选中Oracle - OraDb10g_home2->Oracle Installation Products->Univers…...

Java线程池使用与原理解析1(线程池优点、使用方法、参数含义及线程池运转机制)

为什么要使用线程池? JDK1.5后JUC包添加了线程池相关接口,在Java诞生之初并没有线程池这个概念。刚开始Java程序都是自行创建线程去处理任务。随着应用使用的线程越来越多,JDK开发者们发现有必要使用一个统一的类来管理这些线程,…...

windows下编译leveldb(动态库+静态库)

环境准备 1)下载cmake并安装 下载路径: https://cmake.org/download/2)下载leveldb源码 git clone https://github.com/google/leveldb.git3)下载googletest和benchmark,cmake编译时需要 # 进入leveldb源码路径下的third_part…...

如何用76行代码写一个AI微信机器人......

本期博客主要介绍如何使用 微信SDK 和 AI聊天接口 ,实现 微信机器人功能。 准备 电脑需要安装Go环境,这个可以直接参考菜鸟教程:Go 语言环境安装,知道CSDN的同学基本能在半小时内装好吧…(可选)一个编译器…...

拿下域控后,我还是对大佬的操作念念不忘

历来攻防演练中,我都笃信一个道理——吃饱了才有力气干活。所以,在清晨的客户现场,当看到大佬满意地吃完了我带来的煎饺,我知道这一战,我们作为攻击队,基本已经拿下了。 虽然说的每一句话都带着一股醋味儿…...

实习-----Mybatis 框架

Mybatis 框架ORM持久化介绍 了解什么是“持久化”即把数据(如内存中的对象)保存的磁盘的某一文件中ORM概念ORM,即Object Relational Mapping,它是对象关系映射的简称。它的作用是在关系型数据库和对象之间作一个映射,是…...

【Linux】孤儿进程 | 环境变量 | 命令行参数 | 进程优先级

文章目录1. 孤儿进程2. 环境变量1. PATH环境变量证明ls是系统指令修改自己写的可执行程序对应路径2. env——查看系统环境变量3. 获取环境变量envpenvirongetenv 函数获取 (主流)4. 总结3 . 命令行参数理解命令行参数4. 进程优先级优先级与权限的区分为什么会有优先级&#xff…...

Matlab字符串相关操作-拼接、格式化

常见的有三种方法:向量拼接、strcat函数和sprintf函数1、向量拼接在matlab中字符串本质上也是一个向量,可以通过矩阵运算来实现字符串的拼接,这里随便输入两个字符串a1和b1,用矩阵形式进行拼接:a1 I love;b1 Matlab…...

死磕Spring系列,SpringBoot启动流程

参考文章:SpringBoot启动流程系列讲解 参考视频:SpringBoot启动流程 吐血推荐视频:史上最完整的Spring启动流程 超级好文:SpringBoot执行原理 参考文章:SpringBoot资源接口ResourceLoader和Resource学习 参考文章&…...

关于条件变量wait操作中锁的作用

condition_variable::wait的锁 在看C Concurrency in Action 6.2.3节的线程安全队列时,其对condition_variable的使用与常规用法有点不同,我对condition_variable::wait中锁的作用产生了疑惑:它究竟是保护的谁?于是找到了 C noti…...

JUC并发编程与源码分析笔记09-原子类操作之十八罗汉增强

基本类型原子类 AtomicInteger、AtomicBoolean、AtomicLong。 常用API: public final int get();// 获取当前的值 public final int getAndSet(int newValue);// 获取当前值,并设置新值 public final int getAndIncrement();// 获取当前的值&#xff0…...

含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

FreeRTOS的Delay函数

两个Delay函数有两个延时函数vTaskDelay:至少等待指定个数的Tick Interrupt才能变为就绪态xTaskDelayUtil:等待到指定的绝对时刻,才能变为就绪态个人感觉这两个延时函数就是,比如一个我等3个小时,一个是我等到下午3点的…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...