群体化软件开发方法

群体化软件开发方法

何为闭源软件

定义

软件代码不对用户开放的一类软件,购买软件时只提供可运行软件或服务,没有提供源代码

以使用许可证(License)的方式授权用户使用软件

特点

无法获得源代码(无渠道)

无权使用源代码(合法性)

闭源软件只提供可执行代码,不提供源代码

闭源软件带来的问题

无法掌握软件内部实现情况(如是否存在恶意代码),难可信

无法修改和完善软件,影响了开发者的创新自由

何为开源软件

定义

一种源代码可以自由获取和传播的计算机软件,其拥有者通过开源许可证赋予被许可人对软件进行使用、修改和传播

开源软件的特点

源程序代码对外开放

自由使用、修改和传播

开源软件对源代码开放,并允许你修改和传播

开源软件的开发要求

任何人都可获得开源软件的代码

开源软件的种类

操作系统

  • Linux、 Ubuntu、麒麟、鸿蒙、OpenEuler

数据库系统

  • MySQL、PostgreSQL、MongoDB、Redis

开发平台

  • Eclipse、Junit、SonarQube、Kubernetes

人工智能

  • Tensorflow、Opencv、Caffe、Deeplearning4j

网络安全

  • Nmap、curity Onion、Suricata、Bro

何为群体化软件开发方法

基本理念

基于团队的软件开发方法及其组织模式

基于团队软件开发的特点

  • 开发团队边界封闭
  • 域外人员无法参与
  • 人员以及资源有限
  • 项目的成果不共享
  • 集中化的管理模式
  • 关注生产而非创作
  • 无法充分利用团队之外的力量,阻碍大众参与软件创作和生产

思想

依托互联网平台来吸引、汇聚、组织和管理互联网上的大规模软件开发人员,通过竞争、合作、协商等多种自主协同方式,让他们参与软件开发、分享软件开发知识和成果、贡献智慧和力量的一种新颖软件开发方法

特点

软件开发边界开放

互联网大众自由参与

利用海量的大众资源

共享源程序代码

兼顾软件创作和生产

依托互联网平台

群体化软件开发是一种基于社区的软件开发模式

软件创作

发挥软件工程师的智慧,结合创作者的爱好和兴趣,开展软件创作

如构思需求、开展设计、精雕代码等

开源软件项目的开发和组织模式

开放项目边界

大众参与开发

软件代码共享

由少数核心开发人员和大量互联网大众(外围)所组成的群体化开发

  • 将软件创作和生产融合在一起,充分发挥大众的智慧和力量
  • 互联网大众的作用

•     构思软件需求,增强软件功能-创作

•     发现软件问题,指出软件缺陷-创作

•     编写程序代码,提交开发成果-创作+生产

•     参与代码评审,评价贡献质量-生产

软件生产

任务分工,集中管理

计划驱动,有序开发

评审测试,保证质量

交流沟通,促进合作

软件开发是创作和生产的过程

大教堂与集市

大教堂(基于团队的闭源软件开发)

传统大型软件公司的开发模式就像艰难缓慢的大教堂建造工程,严密的组织和集中式结构

特点是封闭式建设、成本高、周期长、品质优

集市(基于群体的开源软件开发)

特点是开放式建设、成本低、周期短、品质平庸

并行、对等的扁平化开发,参与者大多来自于互联网上的志愿者,结构松散、来去自由

如何实现群体化软件开发

关键软件工程技术

基于社区的群体化组织

基于Issue的任务管理

基于Git的分布式版本管理

基于Pull/Request的分布式协同开发

基于群智的知识分享

基于社区的群体化软件项目组织

开发方式

  • 依托开源社区来组织不同人员

•     开发人员

•     核心开发人员

•     开源软件项目的主要贡献者,主要职责

•     开源软件的核心贡献人员(如提供了最初的开源代码)

•     分析和评估外围开放大众所发现的软件缺陷和提出的软件需求,将其转化为生产性的软件开发计划

•     评审和分析开放大众所提交的程序代码,并将通过评审的代码融入到软件仓库之中

•     人数不多

•     几个到几十个不等

•     外围开发人员

•     开源软件项目的外围贡献者,主要职责

•     借助于互联网平台获得软件项目信息,结合个人的兴趣爱好、经验和技能,自发地为软件项目贡献自己的力量

•     提出需求建议、汇报代码缺陷、提交程序代码、评审代码质量等

•     数量会非常大

•     成百上千,甚至有几万人

  • 开源软件社区将核心开发人员与外围开发人员有机地结合在一起,依托软件仓库进行分布式协同开发

•     开源软件社区

•     开源软件原则

•     自由进出社区

•     遵循社区规定

•     自愿开展工作

•     开放分享代码

传统软件开发的任务管理

软件项目团队管理者向团队成员指派开发任务

基于Issue的任务管理

开源软件的开发任务

不同于传统的开发任务分解方式

开发者群体自主提出,体现了群体创作思想

每个任务对应于一个Issue

开发任务的二类形式:修复软件缺陷、功能实现需求

创建Issue,提出软件开发任务

清晰地描述任务:需要包含任务的标题,内容,特征

提供必要的标签以补充说明任务的性质和特征:例如:缺陷或者要求,程序语言

任何人均可提出软件开发任务:代码缺陷 和 软件需求

讨论Issue,分析开发任务的意义和价值

指派Issue,安排人员来完成Issue

何为指派Issue

  • 将Issue分配给相应人员加以解决

要考虑的因素

  • 群体基于兴趣和特长来认领相关任务
  • 结合开发者的开发技术和经验
  • 考虑开发人员的能力和精力

Issue指派并非强制性

  • 具有通知和推荐的性质
  • 接受到任务指派的人员有权决定是否接受该指派,可自愿参加或拒绝指派

掌控Issue,掌握Issue解决的进展状况

辨别Issue的类别

  • 代码缺陷,新增功能需求
  • 给Issue打标签

确认Issue的有效性

  • 缺陷是否客观存在
  • 软件需求是否有意义

为Issue贴上适当标签

  • 直观地展示其特征信息
  • Bug表示缺陷修复任务,duplicate表示这是一个重复任务

跟踪Issue

跟踪和记录Issue的解决过程,掌握Issue解决状况

  • 事件的发起者
  • 发生的时间点
  • 事件的内容等

重要的事件

  • 提出
  • 贴标签
  • 指派负责人

特点

自主提出任务

自发完成任务

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值