EBU6304 Software Engineering 知识点总结_7 Open Source Software; Software Development Tools

Open Source Software

free of charge, free of legal restrictions on usage.

也需要敏捷开发,但是开发方式略有不同,毕竟不是利益相关的模式。强调个人之间的密切交互 close personal interaction,开发者也是自己的客户,因此有很多人做测试,而且修改后的小版本可以很快发布;通常分的小模块很多,世界各地的大家分别开发。

世界各地大家通过电子方式互相交流 electronically。

整体协调者 overall co-ordinator 通常由志愿者负责。

商业软件和OSS就像大教堂和集市的区别,大教堂需要有一个整体的建造目标,大家一同努力。集市可能由城管那样的整体协调者管大家秩序,但是大家还是偏personal一点。

如果自己公司自己开发项目,当然需要大量人力财力开发和后期维护;选择闭源软件,就绑定在供应商身上了(垄断技术),他们需要进一步收费咱也得交。开源软件就不用担心支付费用这类问题或者供应商倒闭问题,但是不是是开源软件就能拿来用的,注意版权问题。

开源软件大多数有一小部分人在开发核心core以及新功能,大多数人在correcting defects。大多数情况下开发者更愿意维护现有fork分支而不是一味开发新分支。

开源软件也有一个control structure,通常由最初提出项目的人拥有软件的最终决议权,由一些商业公司管理而并非个人(这样能多保质一点),比如安卓开源软件由谷歌掌握控制权,对于提交的fork和patch有权最终决定下一个版本更新的内容。

  • contributor:OSS中做贡献的人。
  • developer:在软件平台上开发应用的人。
  • verifier:测试 change request 是否正确的人。
  • approver:决定这些修改是否要合并进大版本的人,和verifier都需要审核面试筛选。
  • Project leads:监督单个项目的工程。

software freedom

  • 运行程序的自由 run the program

  • 学习程序运行原理和按自己意愿修改代码的自由 study how this program works, change it so it does your compute as you wish (当然前提是能访问到源码)

  • 分发软件副本的自由 redistribute copies

  • 发布自己的版本给他人的自由 distribute copies of your modified versions to others。

Copyright

只有制作者producer有权利制作副本和创建新内容 produce copies and create new work based on it,但是可以授权允许别人复制和改编该作品 make copies of the work and adapt it。制作者可以通过收费等方式赋予这些权力给他人,或者对改编的范围加限制,因为这算是加在producer身上的一种义务,有点回报也正常。

Copyleft

但是OSS的版权声明采用的是copyleft,一种 free software license,并不是限定他人复制改编的权力,而是赋予他人这种权力。许可证内容包括:声明源代码可用,以及改编允许的范围。

voting

有权投票的人每人最多一票;没权投票的人不能投;有权投票且选择投票的人不能被阻止投票;其须拥有充足的选择 full choice;其投票结果必须被正确统计不能被别人篡改;总票数正确相加,不能篡改;大多数时候没有人能知道任何一个投票者的选择。

电子投票有风险,比如数据容易被篡改,被伪造等。

Software Development Tools

Software Craftsmanship and Clean Code

注意代码整洁,比如格式、注释等。

Saying “No”

不要一直盲目答应老板和客户的需求,程序员更熟悉代码,而且需要帮老板规避可能发生的错误。

Learning from Mistakes

Microsoft’s Best Practices

Revision Control System

版本控制。

roll-back:版本回滚。

check-out:开发者拉下来代码。

check-in:开发者提交自己的修订版。

conflict:两个人的提交出冲突了。

merge:合并入主分支。

Daily Build

每日构建一次代码,编译链接源代码,进行一些测试,确保第二天大家能使用最新版本。

Continuous Integration

开发人员也建议每天check-in一次。

Build Verification Tests

断言和单元测试。

Bug Database

记录以前的bug记录,解决方法,严重程度,优先级等信息。

War Team and Bug Triage

发布前,作战小组确认系统“好到可以发布”。检查运行是否正常,剩余的bug严重程度等。

Code reviews and coding guidelines

团队对彼此代码进行彻底审查。

Globalisation and Localisation

针对不同语言、脚本的差异处理。

Documentation Generators

文档生成。

猜你喜欢

转载自blog.csdn.net/jtwqwq/article/details/131073844