- 快速看完整部教材,列出你不懂的5-10个问题,发布在你的个人博客上。
1. 为什么说软件是人类创造的最复杂的系统类型?大型建筑、飞行器甚至长篇小说的结构也可以非常复杂,并且容易变得难以理解和维护,认为软件系统十分复杂是不是因为软件工程还没有充分发展?
2. 用形式逻辑的方法验证需要高可靠性的大型软件的正确性是否可行?例如航空的软件系统。
3. 如何发现社会的潜在需求?类似小黄车这样的项目,之前从未有人提出来过,这种颠覆性的创新是如何提出并且恰好被市场认可?
4. 为什么作者坚持认为代码应该手写?用技术提高写代码的效率,除了造轮子,实现代码的自动生成是否也是一条出路?
5. 作为领导者,当团队急需看到成就时,是应该更多依赖直觉快速决策还是依赖分析决策?
6. Program Manager 如何保持和开发、测试、UX等人员平等的地位?如果PM负责统筹规划,其他人员是否还是他实际意义下的下属?如果PM和DEV发生不可调和的分歧,该听PM的吗?
7. 该如何控制项目的风险?特别是在中国当前的经济、文化政策下,很难预知软件发布时是否出台了更严格的审查政策,在这样的环境下,如果资金和人力不丰厚,如何保持项目的健壮性?
8. 客户不断增加新需求,打乱开发流程该怎么办?如何让软件架构适应不断变化的需求?
9. 一般的项目经理需要怎样的技术能力?工程师觉得项目经理不懂技术,不服领导,是否有道理?项目经理是否应该有足够的技术功底?
10. 作为以编程为生的程序员,在这个人人会编程的年代,保持不可替代性的方法,除了学习软件工程等专业开发知识,还有什么?
- 请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
1. “软件(software)”一词用于描述电脑程序最早出现在1958年1月,由John W. Tukey在Princeton大学提出.(http://www.historyofinformation.com/expanded.php?id=936)
2. “软件工程”在1968年,由Peter Naur和Brian Randell提出,在Garmisch, 德国。(《构建之法第二版》,邹欣,P19)
3. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rationale,Apple XCode)?
Microsoft TFS:
优点:
-
- 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用
- 集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM
- 能与 VS 无缝接合
缺点:
-
- 用ASP实现,用浏览器访问很慢
- 团队的邮件细节配置很复杂
Git:
优点:
-
- 免费的开源软件
- 很好地实现分支、合并、提交、回滚
- 项目安全性好,误操作警告丰富
缺点:
-
- 概念过于复杂
- 语法设计比较随意
- 对初学者不友好,代码封装性差
- 总有办法破坏版本库的内容
Mercurial:
优点:
-
- 命令有双字母简称
- 命令兼容svn
- 命令封装性好
- 服务器部署相对容易
缺点:
-
- 分支管理不灵活
- 支持社区略差
Github:
优点:
-
- pull request和issue功能方便社区协作
- 个人展示、合作平台
- 有大量优秀的开源项目
缺点:
-
- wiki 功能太弱
- 学习曲线陡峭
- 可能未来某天被墙
- 企业应用费用太高
Bitbucket:
优点:
-
- 支持私有免费项目
- 支持git
缺点:
-
- 受欢迎度不如Github
- 网站功能不如Github丰富
Trac: