个人作业-Week1

疑问

  • 教材中说,PM在衡量需求时需要方方面面的能力与研究。可是,当下许多互联网IT公司只承担外包业务,即客户给什么需求就实现什么需求,甚至可能不要求其它先进的功能。此时,开发团队还需要一个全能的PM吗?

  • 我们都知道,客户的需求变化是极其随机且难以预测的。软件工程要求开发团队在coding之前做足准备工作以更好地处理这些需求变动,然而计划赶不上变化快(“神秘的程序员们”一篇漫画有提到),我想知道,当下企业中遇到这种情况是选择重构(能高效实现需求,但耗时耗力)多、还是选择补丁(这么说不准确,能省时省力实现,但增加了负载,效率不高)、还是因为变动过大而放弃项目?

  • “用户需要帮助,但用户没有这么笨。”, “用户需要帮助,需要很多帮助。” 对于上述两种情况开发团队如何对其进行界定?

  • 软件的设计文档是否从需求至实现进行了全部设计?软件设计文档是否规定了每一个类、每一个函数的参功能、参数、返回值,但不涉及到函数的实现?可是,实现过程中一定会出现意料之外的情况,设计可能也随之改变,请问怎样的设计文档才算作合格或优秀的设计文档?

哲学家的宗旨是:我思,故我在;科学家的宗旨是:我发现,故我在;工程师的宗旨是:我构建,故我在。

  • 我的问题是,工程师在构建的过程中,是否受科学家、哲学家思想引领与指挥?灵感来源于生活,来源于一切事物,工程师除了构建,其他方面(如其它学科领域、人文、艺术、哲学等)的涉猎与接触是否对工程师的构建有帮助?

软件与软件工程

  • 软件一词的出现:在2000年,耶鲁法学院的图书馆员Fred Shapiro发表一封信,显示Tukey的1958年“混凝土数学教学”文章包含了最早知道使用“ JSTOR ” 搜索中找到的“software”的电子档案。

  • 软件工程一词的出现:Margaret Hamilton在为阿波罗11号开发软件的期间发明了软件工程一词。

代码版本管理软件与缺陷管理系统

  • Microsoft TFS

    • 优点:

      • 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用;
      • 集成了项目管理、版本控制、BUG 跟踪;
      • 能有效实现 SCRUM;
      • 能与 VS 无缝接合。
    • 缺点:
      • 整个系统是用 asp 实现的,用浏览器访问相当慢;
      • 用 XP 系统无法访问;
      • 团队的邮件细节配置比较复杂。

    引用:知乎-如何评价微软的TFS(Team Foundation Server),类似的更好替代产品有哪些?

  • Git
    • 优点:

      • 免费的、开源的、分布式的版本控制系统;
      • 版本库本地化,支持离线提交,相对独立不影响协同开发;
      • 把内容按元数据方式存储,完整克隆版本库;
      • 支持快速切换分支方便合并,比较合并性能好;分布式版本库,无单点故障,内容完整性好。
    • 缺点:
      • 概念过于复杂;
      • 引入了 index/commit/stash/branch/remote repo 等诸多概念;
      • 对于初学 Git 的用户,在使用 Git 的过程中还会继续遇到更多的陌生概念。
      • 命令行语法设计得比较随意且不一致。例如 git pull 等价于 git fetch 后加 git merge,git branch -b 等价于 git branch 后跟 git checkout;
      • 缺乏良好的封装。初学者有时不得不面对(需要用到(和内部实现相关的知识))的问题;
      • 对代码的维护者友好,但却牺牲了共享者的使用体验。

    引用:Git的优势和用法,
    知乎-Git有哪些缺点

  • Mercurial
    • 优点:

      • 跨平台;
      • 封装好。
    • 缺点:
      • 分支管理不灵活;
      • 支持社区略差。

    引用:Mercurial 有哪些优点?适合怎样的开发者或团队使用?

  • Github
    • 优点:

      • pull request,issue都是杀手级的feature;
      • 强调个人,符合hacker更看重名誉/成就感的天性。
    • 缺点:
      • 国内访问速度太慢,经常出现connect time-out(非GFW所为);
      • 不能很好的解决GB2312/GBK,对中文不够友好;
      • wiki功能太弱,直接导致文档(对于开源项目很重要)经常被分离到一个独立站点。

    引用:Github 有什么优缺点?把项目直接搭建在 Github 上合适吗?

  • Bitbucket
    • 优点:

      • 支持Hg,最易学易用(但不是最强大的)的分布式版本管理工具。同时也支持Git。他的网页端的git仓库不如github好用,但是作为远端仓库足够了;
      • 完全免费的闭源项目,还支持5人以内的合作开发;
      • 支持中文;
      • 官方的git工具SourceTree比GitHub for windows好用。
    • 缺点:
      • 限制公开仓库,有时候速度比较慢;
      • 域名不好记。

    引用:GitHub、Bitbucket、Google Code 各有哪些优缺点?

  • Bugzilla
    • 优点:

      • 免费的开源的一款功能强大的Bug管理系统;
      • 强大的检索功能,强大的后端数据库支持, 丰富多样的配置设定;
    • 缺点:
      • 安装需要Perl和配置MYSQL数据库,过程比较繁琐;
      • 修改配置文件比较麻烦;
      • 能汉化但是汉化后容易出现乱码。

    引用:常用的五大bug管理工具的优缺点和下载地址

  • Rational
    • 优点:

      • 可以创建争论地图,推理和论点图表;
      • Rationale 将帮助学生学习良好的推理,重要思维,论文写作的基本原理;
      • 并且还将有助于专业人士更加方便有效地进行复杂的推论。

    引用:http://www.onlinedown.net/soft/6009.htm

趣闻(因为不够冷)

Donald Ervin Knuth习惯用铅笔而非键盘写初稿,他将原因归咎于打字速度远高于思考速度(每分钟 80 个单词以上),而这会导致思考出现太多停顿,用铅笔可以让思考与输入速度保持一致——“我打字的速度比我思考的速度更快,这样当我试图用键盘创作重要内容时,就会产生同步问题。速度通常不会是最重要的标准。科学一般都难以迅速解释或迅速领会……我通常的工作方式是用铅笔和纸先把所有东西都写下来,然后在旁边放一个大废纸篓。然后使用Emacs将所有文本键入到机器中……特定的Emacs快捷键使得写书的过程有点儿像演奏风琴……”

(评价:这老头这么任性也是没谁了。。先膜为敬,反正写软工作业我不会用铅笔 :D

[BUAA_SE_2017]个人作业-Week1的更多相关文章

  1. 个人博客作业Week1

    个人博客作业Week1 一.问题 通读<构建之法>我有一下几个问题 PM没有参与代码编如何进行管理. 软件工程师的职业资格考试对我们来说很有必要吗. 当我们为用户开发软件时我们需要了解用户 ...

  2. 集大软件工程15级个人作业Week1

    集大软件工程15级个人作业Week1 孙志威 201521123077 博客园主页 码云地址 阅读参考材料,并回答下面几个问题 (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络 ...

  3. 团队博客作业Week1 --- 团队成员简介

    团队博客作业Week1 团队作业1 我们团队是一个以功能团队模式组建而成的团队,我们总共有5位队员,分别是:李剑锋.陈谋.卢惠明.潘成鼎.仉伯龙. 中间的那位就是李剑锋,我们的PM(项目经理).性格热 ...

  4. [buaa-SE-2017]个人作业-Week1

    个人作业-Week1 Part1:教材中不懂的问题 1.根据书中"除了前20的学校之外,计科和软工没有区别"所以计算机科学这个专业也许在我们学校是和软件工程有区别的,但是可以料想的 ...

  5. 团队博客作业Week1

    Study the projects done by previous student groups - View their blog site, use their software, email ...

  6. 团队博客作业Week1 Team Homework #3软件工程在北航

    这次我们采访了一位大四的学姐,让她简单地谈了谈去年学习软件工程的经历和感受. 在完成软件工程大作业的过程中,由于计划安排与实际脱节,导致时间前松后紧,平均每周花在这门课上的时间大约有8个小时. 项目完 ...

  7. 个人作业-Week1

    问题1:程序员的优劣是否在软件开发中已经不重要了??用户实际关心的 外形,使用的乐趣和效率,自我形象,个人满足感,回忆,这么多条中,仅有效率与代码有关,而实际上用户比起效率却更在意其他这些“幺蛾子”. ...

  8. 个人作业——week1

    1.问题 (1)与软件学院相比,计算机科学更偏向理论研究,本系开设软件工程课程的意图是否是为了平衡理论与应用的比重? (2)Bug的定义根据开发者与使用者的分析角度不同,有着很大的区别,如何使开发者能 ...

  9. 软件工程个人作业 - week1

    <构建之法>阅读疑惑: 如何寻找开发效率和性能的均衡点?显然开发效率强调封装,重视代码重用.但是遗憾的是代码重用往往泛化了数据特征,降低了效率. 如何“公平”分配工作?尤其是团队中人员参差 ...

随机推荐

  1. 第五周 加分题-mybash的实现

    第五周 加分题-mybash的实现 使用fork,exec,wait实现mybash 产品代码 #include <stdio.h> #include <stdlib.h> # ...

  2. Python day1 ---python基础1.1

    1.模块初识2..pyc是个什么鬼?3.数据类型初识 4.数据运算5.入门知识拾遗 1.模块初识 sys模块 import sys print(sys.path) #打印环境变量 'D:\\Pycha ...

  3. [CQOI2015]任务查询系统 主席树

    [CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...

  4. 2_C语言中的数据类型 (一)2.1.常量和字符串常量

    2.1 常量就是在程序中不可变化的量,常量在定义的时候必须给一个初值. 1.1.1          #define 定义一个宏常量 1.1.2          const 定义一个const常量 ...

  5. 安装QConf 报错及解决方案

    1:提示找不到gdbm.h头文件 /alidata/QConf/agent/qconf_dump.cc:1:18: fatal error: gdbm.h: No such file or direc ...

  6. 常见面试算法题JS实现-设计一个有getMin功能的栈

    前言: 已经确定工作了-下周一正式入职,按理说应该是可以好好浪荡一周的,但是内心总是不安,总觉得自己这个水平真的太菜了,还是趁着现在有自己的时间,赶紧多看看书,多学习学习吧orz所以把之前校招买的书, ...

  7. hdu2795 Billboard(线段树单点修改)

    传送门 结点中的l和r表示层数,maxx表示这层最多还剩下多少宽度.根据公告的宽度取找到可以放的那一层 找到后返回层数,并修改maxx #include<bits/stdc++.h> us ...

  8. opengl矩阵向量

    如何创建一个物体.着色.加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣.我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理 ...

  9. FFmpeg+vs2013开发环境配置(windows)

    1.下载ffmpeg包(dll.include.lib)   https://ffmpeg.zeranoe.com/builds/         有3个版本:Static.Shared和Dev St ...

  10. 服务发现与消费 --> Spring Cloud Eureka

    在上两篇文章中,我们已经搭建起微服务架构中的核心组件 服务注册 中心(包括单节点模式和高可用模式).同时, 还对上一章中实现的Spring Boot入门程序 做了改造. 通过简单的配置,使该程序注册到 ...