• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
流萤$洛水$归月
博客园    首页    新随笔    联系   管理    订阅  订阅
软工个人阅读作业 #2
项目
内容
这个作业属于哪个课程 2021春北航计算学院软件工程(罗杰 任健)
这个作业的要求在哪里 个人阅读作业 #2
我在这个课程的目标是 合作开发出一个具有实用性的项目,并锻炼自己的工程能力
这个作业在哪个具体方面帮助我实现目标 练习使用一系列分析工具,阅读材料让我受益匪浅

一、阅读提问

问题1:代码规范和代码复审

于是我们最后做了这个选择,每个“{”和“}”都独占一行。就是格式D:

if ( condition)
{
DoSomething();
}
else
{
DoSomethingElse();
}

​ 依我本人的使用经历,当前最热门的编程开发系列IDE——Jetbrains公司的系列产品中,默认规范的代码风格都是"{"和if、else等关键字在同一行(不论是C++、C#还是Java),即如果使用代码自动规范工具,那么IDE会自动将代码整理成上述风格。我的疑惑在于,教材中”最后做的选择:格式D“是否考虑了所有的因素(以及教材的版本是否跟上了时代),譬如采用格式D时,若if-else分支很多,会造成行数的大量增加,导致最后所在的函数行数过多而不满足行数检查的风格?或者说,Jetbrains本身的代码风格检查不够合理,而与教材所提到的相冲突。至少我在去年的面向对象课程中,多次被这样的问题所困扰。

问题2:代码规范和代码复审

(3)运算符的实现必须非常有效率,如果有复杂的操作,应定义一个单独的函数。

(4)当你拿不定主意的时候,用成员函数,不要用运算符。

​ 这是教材中对于C++操作符使用规范的说明。到目前为止,我使用重载操作符的操作次数并不多(主要都是上学期的编译实验课使用的)。我想知道对于相同的操作,C++中使用定义操作符以及定义函数在效率上是否有区别(尤其是在使用频繁的情况下)。依我本人的理解,定义函数有压栈、传参等操作,这些操作都需要时间,因此使用操作符会不会节省这些操作的时间?如果能的话,这两条规范是否过于绝对?

问题3:团队成员不同的投入和心态

在官僚层次驱动的项目中, 往往有一些鹦鹉会控制流程的关卡, 鹦鹉虽然对项目具体情况不了解, 也很忙, 但是项目的一些决定非得由她们来做, 她们做完决定之后, 拍拍翅膀飞走了... 这的确是比较让人郁闷的事。

​ 我从身边从事计算机相关工作了解得知,这种毫不知情的”项目经理“正在减少(即项目经理的门槛正在变高),那么即使作为一直”鹦鹉“,不参与项目创作的过程,是否也需要对项目有一定了解?我认为在对项目不甚了解的情况下很难做出正确的关键决策。(而且原文中这个”她“字是否用得不妥,容易引起某些对于性别问题比较敏感的人群的误会)

问题4:测试的计划和执行

效能测试:在100个用户的情况下,产品搜索必须在3秒钟内返回结果。

负载测试:在2 000个用户的情况下,产品搜索必须在5秒钟内返回结果。

压力测试:在高峰压力(4 000个用户)持续48小时的情况下,产品搜索的返回时间必须保持稳定。系统不至于崩溃。

​ 从数学的角度,我的第一反应并不能理解这些数字(几组时间的数字和用户的数量显然不成正比)。我想了解这几个测试的具体偏重解决的问题是什么,当工程能满足后面的测试时,前面的测试是否有必要?

问题5:绩效管理

在理想条件下, 把任务做得很好, 当然贡献会在最上面的 20%; 做的最差的, 贡献应该是最低的 10%. 但是在实践中要复杂得多, 有些人因为任务相对简单, 完成的很好, 但是对整个集体的贡献一般, 这种人可以得到 [好, 70%] 的位置。 有些人敢于做很难的事情, 结果未必令人满意, 但是对团队很重要, [中, 20%] 应该是一个合适的评价。

​ 贡献度的评价是否应考虑完成的内容对于整个项目的影响?在一个项目中,往往有重复性的工作以及关键的工作。有些关键性的工作难度很大,但对整个工程是至关重要的。如果这部分工作做得很好,他是否应获得比30%更多的贡献度?相反地,如果关键性的步骤出现了重大问题,影响了整个项目的实现,是否应考虑降低他的贡献度?我认为不同难度的任务应有不同的贡献度计算方法,要做到奖惩分明。

二、调研源代码版本管理软件

​ 我使用过的源代码版本管理软件有Gitlab和Github,对于BitBucket也有一定了解。

​ 对于Gitlab和Github,其主要相同点在于:

  • 都是基于Web的Git仓库

  • 都提供了分享开源项目的平台

  • 都为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所

    主要不同点在于:

  • Gitlab允许允许免费设置仓库权限

  • Gitlab允许用户设置 project 的获取权限,进一步提升安全性

​ 因此,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。对于BitBucket,其提供的服务也非常类似于GitHub,但是它的大部分功能也略有不同。BitBucket最适合小型开发团队,随着团队的成长,BitBucket提供了与GitHub和GitLab相比更温和的定价条件。BitBucket对于小团队免费,这意味着最多5名成员的团队将获得无限数量的免费存储库。支持Git,CodePlex,Google Code,HG,SourceForge,SVN导入。当然,BitBucket上面的项目不开源,这也是需要考虑的一点。

三、调研持续集成/部署工具

​ 以下是我使用Gitlab CI以及Github Actions的经历。

Gitlab CI

仓库地址

该仓库的项目是我重修OO的第二次作业,我写的测试文件TestMain.java内容为:

import org.junit.Assert;
import org.junit.Test;

public class TestMain {
    @Test
    public void testMain() {
        String ret = Main.test("x**3+x**2");
        Assert.assertEquals("3*x**2+2*x", ret);
    }
}

运行截图:

PS:由于需要将代码提交到课程网站进行评测,因此我最后在远程仓库中删除了test文件,在仓库中看不到该文件

Github Actions

我建立了一个仓库来放置我的OO评测机并尝试测试。很遗憾,由于我并未解决所有问题,因此最终没能运行出最终结果。不过,大部分步骤仍然成功完成,以下是部分运行截图:

感受:Gitlab CI提供了多种API供用户使用,而GitHub Actions则可以选择他人编写的actions文件模板直接使用,利用现成的模板可以减少不必要的工作。整体感觉Gitlab CI比Github Actions好用,可能是Gitlab我不太会配置相关环境所致。配置完成后,可以直接在网站上查看运行结果,还是相当方便的。

posted on 2021-03-17 21:08  紫杉醇  阅读(120)  评论(3)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3