[2017BUAA软工]第1次个人作业

  • 快速看完整部教材,列出你不懂的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)

  • 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rationale,Apple XCode)?

Microsoft TFS:

优点:

    • 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用
    • 集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM
    • 能与 VS 无缝接合

缺点:

    • 用ASP实现,用浏览器访问很慢
    • 团队的邮件细节配置很复杂

Git:

优点:

    • 免费的开源软件
    • 很好地实现分支、合并、提交、回滚
    • 项目安全性好,误操作警告丰富

缺点:

    • 概念过于复杂
    • 语法设计比较随意
    • 对初学者不友好,代码封装性差
    • 总有办法破坏版本库的内容

Mercurial:

优点:

    • 命令有双字母简称
    • 命令兼容svn
    • 命令封装性好
    • 服务器部署相对容易

缺点:

    • 分支管理不灵活
    • 支持社区略差

Github:

  使用人数:24,377,273 , https://www.quora.com/How-many-users-does-GitHub-have

  优点:

    • pull request和issue功能方便社区协作
    • 个人展示、合作平台
    • 有大量优秀的开源项目

缺点:

    • wiki 功能太弱
    • 学习曲线陡峭
    • 可能未来某天被墙
    • 企业应用费用太高

Bitbucket:

优点:

    • 支持私有免费项目
    • 支持git

缺点:

    • 受欢迎度不如Github
    • 网站功能不如Github丰富

Trac:

   优点:

  • 作为一个SCM配置管理平台,具有良好的扩充性
  • 权限体系设计完备
  • 非常灵活

缺点:

  • 不支持多项目
  • 需求和缺陷没有分离
  • wiki 作为文档的学习代价比较高

Bugzilla:

优点:

    • 强大的检索功能
    • 通过跟踪和描述处理Bug
    • 强大的后端数据库支持功能
    • 免费开源

缺点:

  • 界面不友善
  • 本地化不够好

Apple XCode:

优点:

  • 集成了C、 C++、Swift等大量语言和编程模型
  • 编译成各种架构
  • 编写iOS App
  • GUI工具
  • 可以自动撤销、重做、保存

缺点:

  • 比较臃肿
  • 只能在Mac环境中运行
  • 非官方渠道的XCode开发的App可能被恶意植入程序

【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?(+2')

提到程序员,你脑海里会出现什么形象?

年轻男性?戴眼镜、邋遢、不善言辞的极客?总之,第一反应是女性的恐怕不多。

但几十年前是恰好相反的。

那时候,编程被视为女孩的职业,人们甚至认为女性的天赋很适合这个工作。1967年出版的一份就业指导里,这样写道:“编程需要耐心、恒心、关注细节,这些正是女生的特点”。

其实,人类历史上第一个程序员就是女性。她叫埃达·洛夫莱斯(Ada Lovelace),是英国著名诗人拜伦的女儿。

事实上她写的程序仅仅作为数学推演,而并未在实际的计算机上运行过。

  

posted @ 2017-09-21 22:20  hitaku  阅读(432)  评论(5编辑  收藏  举报