项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12709461.html |
团队名称 | GF4 |
团队的课程学习目标 | (1)组建项目研发团队;(2)团队协作学习 |
这个作业在哪些方面帮助团队实现学习目标 | 团队通过软件项目案例分析来协作学习 |
团队博客链接 | https://www.cnblogs.com/xzyy2017/ |
任务一:团队组建
1、队名:GF4
2、团队成员组成:
成员学号 | 成员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
201771010132 | 徐思 | https://www.cnblogs.com/sisi-713/ | 组长 |
201771010134 | 杨其菊 | https://www.cnblogs.com/yqj-yf-111/ | 组员 |
201771010135 | 杨蓉庆 | https://www.cnblogs.com/YRQY/ | 组员 |
201771010142 | 张燕 | https://www.cnblogs.com/zyan---/ | 组员 |
3、成员风采
成员姓名 | 擅长技术 | 编程兴趣 | 希望承担的软工角色 | 一句话宣言 |
---|---|---|---|---|
徐思 | C语言 | 界面设计 | 代码编写及软件测试 | 过于爽快地承认错误,就可能发觉不了曾与正确非常接近 |
杨蓉庆 | java前端开发、写文档 | java语言 | 编写文档、测试 | 凡事都尽量试试看 |
杨其菊 | java语言 | java开发 | 开发、文档 | kaizen |
张燕 | java语言 | java开发 | 开发及测试 | 行动是成功的开始 |
4、MSF基本原则:
- 推动信息共享与沟通
在一个团队里,最少不了的就是相互交流了。好的交流方式可以让整个团队给更加和谐,事半功倍,首先de 原则就是除了涉及到的技术机密、安全性等信息,别的所有的信息都应该以公开的方式呈现,随着一个项目逐渐复杂化,没有信息共享和沟通是万万不可得,就拿最简单得例子来说,比如一些事情,自己拿不定主意,决定不了哪个更好,就需要和队员一起去讨论交流,才能选择出更好那个。当然,团队成员之间也不必去大费周章得搞一堆交接文档来进行交流,还是要简明易懂,或者可以去使用像GitHub一样的服务器来帮助我们留下每次记录,更为便捷。 |
- 未共同的远景而工作;
所谓兄弟齐心,其利断金。一个团队的队员必须是要齐心的,有着共同的、明确的、非空泛的目标,并为之一起努力实现,这样才能是一个优秀的团队,才能做出符合需求的成功项目。如果没有“共同远景”,即使团队发布了产品,不同成员对项目的理解不同,对自己心中的”远景”参照不同,对以后项目发展的前景也有着不同的意见,那样就很容易产生分歧,造成时间浪费等本可避免的问题,所以一个团队要有一致的目标,一致的努力方向,才能做出优秀的项目。 |
- 充分授权和信任;
关于授权,有两个意思:一是给某人权力和权威;二是给予某人更多的自信和自尊。在一个团队中,首先彼此要互相尊重互相理解,每个成员都应得到充分的授权,成员之间、团队之间都应该是平等协作的关系,MSF提倡自上而下的计划,让真正做这件事的人都有充分的权力估计并决定自己的任务需要多长时间,按照自己想法估计完成任务。而且团队成员之间要互相信任,鼓励和帮助队员。要相信每个人都有不可替代的作用,没有谁会是永远的领导者,不同的人在不同的场合下都有不同的能力。 |
- 各司其职,对项目共同负责;
在一个团队里,入手项目之间,都会有明确的分工,不同擅长领域的人会负责自己拿手的一部分,如此一来,团队内每个角色对于整个团队本身及各自的利益相关人都是负有责任的,因为每个角色在其职责范围内失败都会导致整个项目的失败,各个角色都是相互依赖,相互渗透的,可谓是牵一发而动全身,所以要求团队内每个角色都建立清晰的责任和共同的职责,这样,一旦出现什么问题,就可以去找相应的负责人去解决,不会相互推脱,无处寻责,这样一来,解决问题的效率就会大大提升,如果相应负责人无法解决,其余有方法的成员也可在本职之外为其他领域做贡献。 |
- 交付增量的价值;
软件企业=软件+商业模式,一个项目的商业价值只有在它被成功地发布并运行时才能体现出来,所以MSF过程模式包括了开发和发布阶段。项目应该是出于商业目的的,如果没有商业需求,再好的技术也无用武之地,所以我们应该要贴合市场需求,如果没有用户的需要,这个项目就不会被开发利用,故而我们也是重视项目的商业价值。 |
- 保持敏捷,预期和适应变化;
软件工程,唯一不变的是变化。所以别幻想客户的需求会在第一时间很明确,然后保持不会变。除开客户的外部原因,团队内部也在不断的变化,比如随着科技的进步之迅速,很多的技术都在提高,原来也许需要几十行的代码才能实现,如今就只需要几行,这就要求团队预期变化,保持敏捷的身段来克服这些突然的变化,能够及时采取措施,不至于乱了阵脚。 |
- 投资质量;
对质量的重视,引起对质量的投资,引起对人、过程和工具的投资。之所以叫“投资”,而不叫“全面的质量管理”是有其道理的: 1、投资要讲效率。我们要重视质量,但并不是要不惜一切代价达到最高的质量标准,提高质量是要花成本的,而不是为提高质量而提高质量。 2、投资要讲时机,就和股票一样。 3、投资是长期的。真正的投资者看重的是长线的收益;人的成长,团队的成熟都需要时间,不可能短期内立竿见影; 商用软件只有在其发布以后才会体现它的商用价值,但是面对软件缺陷的无休止出现,我们做商用软件要找到一个平衡点,及时发布能够解决用户问题的软件,并能够及时修改软件中的问题。好的公司便能够做到这两个“及时”。 |
- 学习所有的经验;
在项目过程中,我们要学会总结经验并学会分享经验,可以在开发项目过程中就逐渐积累,这样的好处就是让团队成员从别人的成果和失败的例子中学到东西,帮助新项目重复以往成功的做法,培育团队总结的习惯和“批评与自我批评”的文化。 |
- 与顾客合作。
MSF强调产品团队与顾客的交流与合作,并不是产品团队拿到合同之后,就闭门造车,直到产品完成才告诉用户,我们要及时和用户交流,不能在最后时刻再给人家一个惊喜什么的,那样如果人家不满意,毕竟商业价值还是人家说了算,就得所有得推翻,重新做这个项目,这样就很麻烦了,耗费精力又给客户不好得体验,就得不偿失了,所以还是要和客户商量着来,及时交流,省去不必要得麻烦。 |
5、组建团队企业微信群,给出群成员截图:
6、团队特色描述:
- 团队成员有各自长处和优势,在项目研发中能够发挥各自的优势。
- 由于平时交流比较频繁,所以团队成员相处融洽,默契度很好,能够很好的交流协作。
- 整个团队都可以根据MSF原则来学习探究,共同完成项目。
任务2:软件项目案例分析
现代社会,人们很多时候要和软件打交道,手机游戏、微信、QQ、中国铁路12306等等。软件工程学习中,通过这些软件案例的分析、 评测、辨析和总结,我们就能看到软件工程的原理和原则在工程实践中的种种体现和应用,从而加深对软件工程知识内容的理解,帮助我们在软件项目实践中做得更好。
以下是本次作业候选分析案例,这里我们选择案例二:
案例2: VS和VS Code
微软公司有两个代码编辑器:Visual Studio、VS Code,它们的目标用户,主要功能有何不同?为何要有两个编辑器和开发环境?请用这两个编辑器/IDE写出一个简单的C/C++/Python程序,记录程序耗时多久运行成功?描述你的发现。给出程序和运行结果截屏。
Visual Studio (Community)社区版指的是可免费提供给单个开发人员,给予初学者及大部分程序员支持,可以无任何经济负担、合法地使用的版本,官网下载链接: VSCode发布站点:https://code.visualstudio.com/ VSCode源代码git地址:https://github.com/Microsoft/vscode VSCode作为一个开源的项目,github平台有许多IT人士在为此项目做出贡献,参照本篇博文后ffl((范飞龙老师)的建议可以学习github协作开发的技巧和方法。 |
- 阅读《现代软件工程—构建之法》第8章、第12章内容,完成以下案例分析任务:
A.下载、部署并体验案例软件的功能,使用10–30分钟这个软件的基本功能(上传使用软件的照片);
1.首先根据老师所给出得链接进行下载安装
2.VSCode使用
- 配置C/C++环境
下载mingw-w64,配置环境变量。
- 插件扩展:
-
配置几个.json文件
-
编写简单的C语言程序:生成乘法口诀表。
3.VS使用
-
创建新项目:
默认情况下,Visual studio会给我们创建一个源代码文件,这个源代码的功能是向控制台输出字符Hello World。
-
编译程序:生成->生成解决方案。
下方输出可以看到编译成功,没有报错。
-
运行程序:调试>开始执行(不调试)。
-
创建我们自己的源文件:找到右边的解决方案管理器,点开源文件,右键删除test.cpp;
源文件上点右键,添加,新建项;
选择C++文件.cpp,修改源文件名称,点击添加。
-
编写简单的C程序:有1、2、3、4个数字,输出互不相同且无重复数字的三位数。
比较:VSCode第一次运行时耗时近10秒;VS第一次运行时耗时将近8秒。另外,VSCode运行所需要的插件较多,初学者使用起来有点困难。VS编辑错误时会有错误编码,点击编码就可以进入网页查看错误原因,修改代码很方便。
B.描述使用案例产品的过程,产品解决了用户的问题么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么?
软件名称 | 优缺点 | 能否解决问题 | 数据量 | 界面 | 功能 |
---|---|---|---|---|---|
Visual Studio | 优点 | 对于此次实验来说,可以解决 | 可使完整开发解决方案的开发人员使用 | 功能全面,比较丰富 | 安装完成,就能直接用。编译工具,调试工具,各个语言的开发工具,都是已经配置好的,可以做到开箱即用。 |
Visual Studio | 缺点 | 暂无 | 占用空间根据选择变化(一般大于20G) | 不够轻量级 | 无法跨平台使用 |
Visual Studio Code | 优点 | 对于此次实验来说,可以解决 | 轻量级,查看,编辑,运行和调试应用程序的源代码 | 界面好看 | 供处理客户端技术的Mac上的开发人员使用 |
Visual Studio Code | 缺点 | 暂无 | 未配置时无法进行代码的调试等操作 | 刚安装成功时,就是个记事本界面,无太多功能 | 需要自己安装插件并手动设置参数 |
关于用户体验:
-
在功能上,vs2017远大于vscode,但是vscode远比vs2017轻量级。vscode在安装了插件并正确配置后可以做到vs2017的大多数基础功能(自动补全,一键编译连接运行,错误提示,程序调试等)。,二者在使用领域无太大差别;
-
VSCode 具有很高的定制化能力和可扩展性,用户可以按自己想法来下载插件进行修改;
-
Visual Studio 各种功能只能在 Windows 和 macOS(Mac OS X )之上运行,不能跳跃各平台编辑。
Visual Studio code是一款真正的跨平台编辑器,可以在用户习惯的平台上使用,而不是非要迁徙到 Windows上。
C.对产品有什么改进意见?
(1)Visual Studio有着强大的功能也就意味着其存在冗余,对于某些用户并不需要如此多的功能,所以就导致了在打开软件,打开新的项目,编译项目的时候没有VScode快。如果可以更快一点就好了;
(2)Visual Studio code下载安装比较方便,但是需要下载大量的插件,配置无误后,才可以有丰富功能,比较麻烦易出错;
(3)Visual Studio无法跨平台使用;
D. 除了定性的结论,还可以定量地评价一个软件?请看这个链接,并尝试进行定量的测评。
Visual Studio:
XX | 类别 | 描述 | 评分(满分10分,5分表示中等,其余按个人看法打分) |
---|---|---|---|
功能 | 核心功能 | windows平台应用程序的设计开发、调试、数据库功能、可视化设计功能、语言集成功能等N多功能 | 7 |
功 | 细节 | 有细节处理,但是还有很多问题。如:界面设计没有充分考虑空间占用,占用了过多的空间 | 5 |
能 | 用户体验 | 功能齐全丰富,可以满足很多群体 | 8 |
功 | 辅助功能 | 有及其人性化的功能,如给残障人士提供的工具栏按钮和文本放大功能 | 6.5 |
能 | 差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 6 |
功 | 软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 4 |
能 | 软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 3.5 |
体验 | 成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 5 |
体验 | 用户有控制权 | 关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 7 |
Visual Studio code:
XX | 类别 | 描述 | 评分(满分10分,5分表示中等,其余按个人看法打分) |
---|---|---|---|
功能 | 核心功能 | 分析三个核心功能,功能设计和质量 | 4 |
功 | 细节 | 有较多为用户考虑的细节 | 6 |
能 | 用户体验 | 当用户完成功能时,不干扰用户 | 8 |
功 | 辅助功能 | 一些辅助功能如皮肤等 | 7 |
能 | 差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 5 |
功 | 软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 7 |
能 | 软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 3.5 |
体验 | 成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 5 |
体验 | 用户有控制权 | 关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 6.5 |
E. 经过以上工作,你们一定有充分的理由给这个软件选择一个评价结论:a) 非常不推荐 b) 不推荐 c) 一般 d) 好,不错 e) 非常推荐
-
对于Visual Studio,我们团队选择 e) 非常推荐
-
对于visual studio code,我们团队选择 d) 好,不错
(2)阅读《现代软件工程—构建之法》第8.6、14.1节内容,完成以下案例分析任务
- A. 使用此软件的所有功能,估计这个软件/网站做到这个程度大约需要多少时间,并说明估算理由(假设团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
visual studio是一个支持了软件开发过程几乎所有需要的集成开发环境,编译工具,调试工具还有各个语言的开发工具都是已经配置好的,功能非常强大。在经过对visual studio基本功能使用之后,,我们大概估算在团队成员为6位计算机大学毕业生的情况下,将此软件做到这个程度困难性非常大,至少得要三年的时间。而visual studio code与visual studio相比起来更加轻量化,还支持跨平台,并且在安装了插件并正确配置后可以做到visual studio的大多数基本功能(自动补全,一键编译连接运行,错误提示,程序调试等)。如果先不考虑插件的开发,我们预估同样的情况下visual studio code比visual studio容易一些,大概需要一到两年左右。 - B. 和同类软件相比分析,这个软件目前的优劣,这个产品的质量在同类产品中估计名列第几?
最近的 JS 2019 报告中,visual studio code也是以压倒性的优势获胜第一
作为轻量级的开源的代码编辑器,visual studio code具有各种强大的优势:软件轻量又功能齐全;具有各种自由化自定义的设置;插件编辑器分离,能够自主开发插件自主使用。轻量级IDE虽然也有很多,但是与visual studio code相比,大多数IDE仅支持少数甚至一种语言,并且没有自定义设置的功能。
- C. 综合判断,给出这个软件团队在软件工程方面可以提高的一个重要方面(具体建议)。
缺少本地历史记录功能,与Eclipse相比, Eclipse有一个非常强大的功能是将最近的编辑历史记录保存在本地,这样即使没有使用版本数据库也能跟踪修订信息、比较版本、还原历史记录,对一些实验性的项目或者不需要签入的开源项目来说是非常有用的,并且你也可以用它来记忆内容,整理思路。而Visual Studio则完全没有这种功能,建议增加本地历史记录功能。
(3)阅读《现代软件工程—构建之法》第8.5节、第9章内容,完成以下案例分析任务:
这个软件/网站有很多可以提高的部分,如果你是该软件新上任的项目经理,你一定非常希望所负责的项目在竞争中胜出,请思考以下问题:
- 首先,市场有多大?潜在的用户有多少?
根据埃文斯数据公司(Evans Data Corporation) 2019最新的统计数据显示,2018年全球共有2300万软件开发人员(即2.3亿),预计到2023年达到2770万(即2.7亿)。Visual Studio和VS Code是面向上述数据显示的上亿市场。
潜在用户:每年初入编程行业的学生、科研人员或者其他相关人员有上千万,再加上放弃使用其他软件转入使用Visual Studio和VS Code的人,全球基本上可以认为有超过上千万的潜在用户。 - 目前市场上有什么样的产品了,它们的优势劣势在哪里?和它直接竞争的产品在那里?
如下图常见领域最为受欢迎的 IDE 的榜单,其中即为市场上的产品:
Visual Studio作为集成开发工具(IDE),与之相比的同类产品的优势与劣势如下:
产品 | 优点 | 缺点 |
---|---|---|
Android Studio | 更加适合 Android 的开发,节省时间,效率高 | |
eclipse | 公开、免费源代码;跟踪活动项、代码格式灵活;代码清晰美观;本地历史记录;代码定位功能强;窗口对空间的利用有效得多;错误信息人性化、智能化快速修复; | 版本间不兼容;与JDK捆绑过密 |
NetBeans | 配置简单,小巧 | 速度慢 |
pycharm | 功能全面,补全强大,集成了很多东西比如 Git 版本管理、单元测试 | 启动速度慢 |
IntelliJ IDEA | 智能提醒,快捷键方面,Editor 能力超强, 极客范的操作方式非常完善的补全,代码提示等功能。速度和便利度都很高 | 调试系统不如vs好 |
VS Code作为跨平台的代码编辑器,其对手是vim,emace,sublime,atom,notepad++这样的文本编辑器,与之相比的同类产品的优势与劣势如下:
产品 | 优点 | 缺点 |
---|---|---|
Atom | 插件很丰富,配置简单,更简洁 | 启动速度慢 |
Vim | 模式化编辑提高编辑速度 | 翻页的处理方式;处理大文件时效率低; |
sublime | 最轻量级,非常快,界面简洁 | 配置麻烦,插件生态不好 |
- 作为新上任的项目经理,这个产品的核心用户群是什么样的人,典型用户长什么样?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
核心用户群 | 年龄 | 学历 | 专业 | 爱好 | 收入 | 表面需求 | 潜在需求 |
---|---|---|---|---|---|---|---|
计算机及相关专业学生 | 15-25 | 大学 | 计算机及相关专业 | 编程 | 1000-10000/月生活费 | 基础的编程需求 | 学习编程的便利需求 |
计算机及相关专业授课人员 | 25-60 | 大学或更高 | 计算机及相关专业 | 编程、授课 | 5000-20000/月 | 基本的编程需求 | 教学帮助功能 |
科研人员、工程师 | 25-70 | 大学或更高 | 以理工科为主的广泛专业 | 编程、对应专业的研究 | 1w-10w/月 | 满足专业的高性能需求 | 复杂实验的部分自动化辅助 |
- 功能:你要设计什么样的功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用NABCD分析。
可以在上面开发一个编程记录辅助的功能,作为Visual Studio的插件。
o Need :主要是为了解决学习编程的计算机及相关专业学生的需求,他们需要记录常见的编程出错情况、解决办法和注意事项,通过网络共享笔记查找待解决问题的方法,在编程时方便查看(Need),并且能定位到代码位置,现有的IDE大多没有此类功能,不能解决学习者此类需求。
o Approach :我们通过开放云服务,部署远程数据库,开放数据云端分析和获取的功能,并提供本地上传和导入到本地。
o Benefit :它能帮助学习编程者,并且数据开放共享,便于学生互相学习、提高解决问题的能力。
o Competitor :软件可以吸引计算机及相关专业的编程学习者,独有数据库的相关数据,可以成为靠前的数据分享中心
o Delivery :广大学生群体之间的交流可以加速产品推广,让更多人目标用户知道我们的产品,并进一步传播。 - 如果你有钱可以招聘6个人,有4个月的时间,你作为项目经理,应该如何配置角色(开发,测试,美工等等)?描述你的团队在16周期间每周都要做什么,才能在第16周如期发布软件的改进版本,并取得预想中的成绩。
假如我有六个成员完成上个问题的任务,16周我会如下部署
时间(周) | 任务 | 需求分析和设计(人) | 开发(人) | 测试(人) | 美工(人) |
---|---|---|---|---|---|
1-2 | 实际考察计算机及相关专业学生的需求,确定数据和数据库类型,需求定义、归类和排序 | 6 | 0 | 0 | 0 |
3-6 | 持续和相关学生用户保持交流并获取一定数据,进行数据库的核心功能开发和测试 | 1 | 2 | 1 | 1 |
7-8 | 获取目标用户数据库、数据分析模式使用体验,继续进行开发和改进,并制作GUI | 1 | 2 | 2 | 1 |
9-16 | 进行发布、推广、获取新用户意见、添加新功能、测试的迭代,直到时间用完 | 1 | 2 | 2 | 1 |
(4)团队协作学习方式总结:我们团队的协作方式是先进行任务分工,遇到问题时一起讨论,然后将各成员的任务结果进行分享总结,完成任务目标。
团队进度花费时间表
任务 | 实际完成时间(/h) |
---|---|
任务一 | 2 |
任务二 | 5 |
任务三 | 2 |
感受与体会:
这次实验采用团队协作的方式,都说人多力量大,但是有时人多问题也多,如何更好地组织团队,更好地进行分工合作,找到团队最适合的一种协作方式都是一个团队需要解决的问题。之前也有很多团队协作项目,但是之前的团队协作大多数是组建好之后就直接进入系统设计,没有团队协作的磨合阶段,以至于在协作过程中出现很多问题。这次实验可以说是为后期能更好的协作设计项目奠定的一个基础,让各成员在这次项目案例分析中互相了解,彼此磨合,找到一种适合团队的协作模式。