1. 团队项目-总结
这个作业属于哪个课程 | 课程链接 |
---|---|
这个作业要求在哪里 | 作业要求 |
团队名称 | CTRP-lkun |
这个作业的目标 | 团队项目总结,每个人的收获和感悟 |
Github地址 | Github |
2. 队员列表
姓名 | 学号列表 |
---|---|
廖志丹(队长) | 201731032125 |
王川 | 201731021132 |
江天宇 | 201731024132 |
张微玖 | 201731024126 |
宋杰 | 201731024120 |
3. 队员个人总结
(一)张微玖个人总结
姓名 | 张微玖 |
---|---|
学号 | 201731024126 |
第一次博客地址 | 地址 |
1.解答问题
(1)业务人员和开发人员在项目开发过程中应该每天共同工作吗?
答:在这次项目之后,我认为应该尽量保持共同,比如相同的工作时间,工作地点,以确保及
时的交流反馈,便于处理需求变更的问题。
(2)我们应该如何辨别和吸引潜在用户
答:在做需求分析时 ,我也遇到了这样的问题:我们的产品的受众群体有哪些?首先,我们是
做一款学生课堂考勤系统,所以首先想到的就是学生,然而学生是那种类型的呢?高中生?
大学生?留学生还是其他?问题不断被细化,目标越来越小,至此,找到了用户和潜在用
户,吸引潜在用户的方式:受欢迎的典型客户推荐是极其重要的手段。最后,我还有一个延
伸出来的疑问:怎么把潜在用户发展成为典型客户?
(3)创新在什么情况下是让人痛恨的?
答:书中的例子让我想到了答案那就是创新的产品或者理念触及到了那些被创新产品覆盖的人的
利益。创新的本质就是高效化和利益最大化,创新就是不断把效率和利益推向极致的方式。
由此可见创新也是有人恨的。
2. 新的问题
答:1.这次团队项目中那些书中的知识得到了实践?
2.Github仓库怎么管理?
3. 个人体会
答:这次团队项目中我收获了很多,比如编写代码,写博客,做PTT等,不仅学会了这些,还学
会了测试代码,最重要的是感受到了一个团队中每个人的能力和优点和自己的个人能力参
照,了解到了自己的优点和缺点,同时在团队中自己的信心也会增加,每个人都会做到更好
的自己。
(二)廖志丹个人总结
姓名 | 廖志丹 |
---|---|
学号 | 201731032125 |
个人博客地址 | https://www.cnblogs.com/liaozhidan/ |
第一篇博文地址 | https://www.cnblogs.com/liaozhidan/p/11504717.html |
1.第一次作业问题与解决:
问题一:课本第二章《个人技术和流程》P25中“单元测试必须由最熟悉代码的人(程序的作者)来写”,程序的作者是最熟悉源代码的人,由程序的作者进行单元测试是最好的选择,但是,我认为由作者进行单元测试也存在一些问题,当局者迷,旁观者清,作为程序的作者,一些程序的局限通过自身是很难发现的,所以单元测试由具有专业经验的人员与程序的作者一起进行是否更好?
单元测试可以帮助开发人员编写代码,提升质量、减少bug。如果大家分析一下我们bug原因的构成,我想有会有一部分bug的原因是开发人员在编写工作代码的时候没有考虑到某些case或者边际条件。造成这种问题的原因很多,其中很重要的一个原因是我们对工作代码所要完成的功能思考不足,而编写单元测试,特别是先写单元测试再写工作代码就可以帮助开发人员思考编写的代码到底要实现哪些功能。例如实现一个简单的用户注册功能的业务类方法,用单元测试再写工作代码的方式来工作的话开发人员就会先考虑各种场景相关,编写单元测试代码的过程就是促使开发人员思考工作代码实现内容和逻辑的过程,之后实现工作代码的时候,开发人员思路会更清晰,实现代码的质量也会有相应的提升。所以,编写单元测试的目的不只要发现bug,还要通过单元测试提高代码质量,所以单元测试是开发人员开发产品的必要过程。
问题二:课本第三章《软件工程师的成长》P58图3-2问题的层次,舒适区,学习区和恐慌区图中描述了问题的三个层次,在学习编程的过程中也总是想快一点过完语法和基础知识,现在很多人学习编程也是有想速成的心态,像《某某语言21天入门与精通》也成为畅销书,我想问对于编程语言的基础应该速成,脱离舒适区,还是循序渐进的耗费大量时间学好基础?
学习编程大部分人在初学的时候都会有速成的心态,但在度过学习的舒适区后,更深入的学习编程后就会发现,速成基础后会留下很多的问题,学习的过程是一个融会贯通的过程,我们要在掌握扎实的编程基础才能在学习中更进一步,所以对于学习(包括编程),我们尽量不要抱着速成的心态,学习是一个循序渐进的过程,学习更深厚的知识源于掌握了扎实基础知识。
问题三:课本第十二章《用户体验》P260中“好的用户体验当然是所有人都想要的,如果它和质量有冲突,怎么办?”,课本中中通过GE公司总裁讲述的故事传达的信息是好的用户体验更重要,但是,在软件开发的过程中,为了好的用户体验,一味的牺牲软件的性能是否可取?我们应该怎样在用户体验与软件性能做抉择?
当前,互联网和移动互联网已经深刻影响整个中国社会的工作和生活。与传统的软件产品更新周期不同,当前为网络服务而产生的软件产品一个星期要升级两三次,一项新的服务,可能两三天就要上线。在传统的软件工程中,上线之后出现错误时用户难以原谅的。以数量的思维寻求质量解决之道,抓大放小,让步接受质量的观念是有问题的,“千里之堤溃于蚁穴”,软件质量不能一味让位与用户体验,要在保证软件质量的前提下尽量提高软件体验。
问题四:课本第十四章《质量保障》P305中“软件的开发过程有三个主要的特性:“好”、“快”、“便宜” 。通俗的理解是“软件在功能、成本、时间三方面满足利益相关者的需求””,在课上,老师也讲过软件开发的成本是越来越高的,同时,慢工出细活,但软件开发的工期短暂的情况下,软件开发人员在交工之前加班熬夜完成,恐怕难以高质量完成软件产品,所以,我想问,如何才能确保在工期的情况下,控制软件成本,做出功能齐全的软件?
开发高质量的软件产品,在需求阶段,要特别深入进行需求分析,需求分析模型需要专家和用户认真讨论审查批准。在软件设计阶段需要进行软件设计方案审查,要确保设计反映了需求的要求,要确保架构合理。在测试阶段要严格测试,测试的规程要严格满足需求分析模型的要求。其中最重要的是需求分析以及需求分析的审查。
问题五:课本第十六章《IT行业的创新》P347中"70%的创新者说,他们最成功的领域,是在他们的拿手领域之外发现的。"很多行业的创新是由行业外人士完成的,是行业内的专家在精通本行业的后失去了创新的动力,或是业内人士会更加容易被本行业的条条框框所限制吗?那么,作为软件的开发者,该如何走出软件行业的限制,推动行业的创新呢?
对于软件行业的创新,我觉得最重要的是倾听用户的需求,走出行业“专家”的限制,深入到用户群体,用软件工程的知识去解决用户的问题,从用户问题,从用户需求中找到行业的不足之处,在软件行业的不足之中发掘到软件行业的创新点,解决软件行业的不足。
2.遇到的新问题:
- (1)编程能力不足,对于“二维码签到”,“语音播报”等软件功能受限于编程能力不足未进行开发。
- (2)对github的利用不足,只是将github当作文档的存储。
3.项目总结
(一)这次软件工程项目是一次较为正式的项目开发实践的机会,通过这次项目开发,对C#语言,尤其是winform有了一次系统性了解,了解了各种控件的功能,还了解了数据库相关知识,运用数据库+C#完成了一次软件项目开发,巩固了编程知识,同时掌握了一些Cskin控件的使用,初步学习了一些软件UI开发的知识。同时,学习了使用github的使用,并在github上获取许多优秀的学习资料,提高自身的自学能力,提高了编程能力,了解了单元测试和软件测试的一般流程,通过修改软件bug提高了软件开发能力。
(二)通过这次软件项目开发,从需求分析开始,了解并实践了整个软件开发的过程,学习了软件文档的编写,软件项目答辩PPT的制作,提高了office应用能力,并在整个开发过程中进行了团队分工,提高了我们的团队协作能力。
(三)江天宇个人总结
姓名 | 江天宇 |
---|---|
学号 | 201## (二)廖志丹个人总结 https://www.cnblogs.com/jiangtianyusimida/ |
第一次博客地址 | https://www.cnblogs.com/jiangtianyusimida/p/11509051.html |
一.问题解答 | |
1.文中一个18月效应印象深刻,一个软件18个月做不出来就该放弃,可是人多一点不就用不着18个月了?若是真的当代技术问题那么要么一直干要么早放弃,何必十八个月 | |
答:18月效应指的是大体的总趋势,而非精确的18月,若18月还没有结果甚至是方向那就应该放弃,若18月了还剩点点那么就该继续完成。 |
2.12章用户体验里面,用户的第一印象很重要,确实,但是第一印象的建立又是什么呢,文章说要简洁,可是对于不同的人来说应该有不同的评价。
答:用户的第一印象是指大部分用户的第一印象,简洁清爽美观大方是第一印象的主流。
3.17章说领导力很重要,知人善任,可是在现实中怎么做却没有说
答:领导力毋庸置疑很重要,做法就是知人善任,更加的细节却不能细说而是靠天赋和生活中的磨练。
4.13章软件测试,还根据不同的分类方法来分类,直接测试不就好了吗?
答:软件测试有很多种,直接测试并不一定能完全覆盖,而根据不同的分类方法测试能完全覆盖测试内容,同时使这门学科更加系统全面。
5.全书初略看完之后感觉这本书是本文科书,教我们如何运作维护一个软件,并没有叫我们写代码
答:这门课教的不只是我们写代码,更多的是团队协作包括分工和互相帮助,软件制作的可不只是代码,前期的调查准备和后期的维护也同样重要。
二.掌握的技能
1.学会了用csdn写博客,使博客排版更加简单美观
2.了解了软件初期到完成的流程
3.学会了git的基本操作
4.编程能力有所提升
5.更加具有团队意识
三.总结体会
总结:这门课不止教我们写代码,并且让我知道代码写得好不一定能做出好的软件,包括前期的调查和过程中的维护和后期的冲刺都十分重要,而这一切离不开自己的团队间的配合。在制作软件的过程中,每一个步骤都应该严谨并且环环相扣,这十分需要耐心。
体会:这门课老师和助教都十分尽职尽责,为了让我们学到东西特地采用了邹星的学习模式还给优秀的学生奖励了小黄衫,学习这种模式真的对以后的实习工作很有帮助。
(四)宋杰个人总结
(1)第一次博客链接:博客链接
(2)对自己提出的问题进行解答,并阐明,是如何通过看书,实际,或者讨论弄明白的是否产生了新的问题?请提出。
1、我看了第十六章16.1.3写好的想法会赢,可是它的例子写QWERTY键盘的例子,为什么在这个例子里面我就没读出来是好的想法会赢呢?
我通过反复读那篇文章结合自己的认识得出:这个例子写到QWERTY键盘敲出来的单词效率不高,但是却因为为人们先入为主的想法,却让它广泛被使用,我觉得这个例子没有凸显出好的想法会赢的思想。
2、我看了第十六章16.1.4,写到,大家听了很多创新者的故事,有些人想,他们真了不起了不起,第一个想出了这些想法,要是我早生了几十年也第一个实现那些想法就好了。其实,大部分成功的创新者都不是先行者。读到这里,我觉得为什么就不是那些人比我们先想出来那些想法所以才那么厉害呢?
以我多年的人生阅历和自己的理解我觉得:就拿写音乐来说,我就觉得现在的歌手写歌比以前就难多了,因为前人已经写出了很多很好的旋律,后人在写如果稍微和前人的有相似的地方就会被骂抄袭,这不就是一个道理么,现象出来的人就是厉害,后面也有人想出来可是那个想法也不属于后想出来的人了,别人可能就会说你抄袭。
3、我看了第十六章16.1.5,我想问为什么创新的总是外领域的人而本领域的专家却占少数?
这个是我通过查阅了很多调查和适当理解文章得出:我认为就是本领域的专家对自己领域的知识理论那些都知道的清清楚楚了,所以他们的想法都很严谨如果想到什么东西他们就会很完美的却证明如果证明不出来肯定就想不出来,反而比不了那些什么都不懂的人突发奇想他们也没考虑太多严谨的东西,所以更容易创新。
4、我看了第十六章16.1.7写到,已有的销售团队往往不愿意推广颠覆性的新产品,因为市场还没打开,利润率低。可为什么他们没想到,如果新兴产品市场打开,他们就会大赚一笔呢?
结合我个人的理解和一些文章中的观点得出:我觉得现在还是有很多团队愿意用创新打开属于自己的市场,一旦成功他们便是该行业的“龙头”。所以我觉得还是有很多愿意冒险的。
5、我看了第十六章16.3,我想问一个团队的产品在竞争环境中需要怎么做?
阅读理解文章,然后总结书中给出的答案:
1).建立共同的愿景,形成强烈的团队意识建立共同的愿景。
2).形成强烈的团队意识建立共同的愿景。
3).建立有效的奖励机制。
(3)经过这学期的学习,你掌握到了哪些以前没有的技能,你是如何掌握的?
经过这学期的学习我学习到了很多技能,撰写博客必然是其中之一,我之前都不知道有博客这种网站,至于如何掌握的,那必然是在那么多次复杂的作业撰写中一次一次积累经验练出来的,然后就是撰写博客时运用CSDN辅助。然后就是使用GitHub上传文件,也是一次次的复杂作业撰写中练出来的。之后就是C#的编程,因为以前学过,所以这个只能算是更精进了吧,更加的锻炼了我的编程能力。
(4)有什么深刻的体会,对自己一学期学习过程的总结。
在这一学期的软件工程学习过程中,收获颇丰,学到了很多学习到了很多技能,也学到了很多软件工程的专业知识。我觉得自己在代码方面的编程能力还有所欠缺还需要不断的练习代码编写,然后就是关于软件项目还有好多需要我去学习探索,不应该这门课结课了就停止学习,我还要更加的努力去学习,毕竟我们专业以后想要有好的发展,那必然离不开优秀的编程能力。总之,我觉得自己需要在编程方面更加的严格要求自己。
(五)王川个人总结
姓名 | 王川 |
---|---|
学号 | 201731021132 |
个人博客地址 | Mr-Chopper |
第一次博客 | 博客 |
1、第一次作业提出的问题与思考
Q1:第二章提到单元测试必须由最熟悉代码的人(程序作者)来写,尽管代码作者是最了解代码的人,但是代码作者对于写代码时的思维应该是不变的,而且不能走出原来的思维模式,所以我个人认为,单元测试时需要一位经验丰富的人辅助进行。
答:单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。在一些极限编程方法中是可以考虑让别人代替,但代码作责要对单元测试负责。
Q2:第三章软件工程师的职业发展软件工程师在工作时应有的职业道德和态度应该是什么?
答:1993 年5 月, 在IEEE (电气和电子工程师协会) 的管理委员会正式建立起一个指导委员会, 以对软件工程为职业并对其进行评估及计划等活动, 在同一年, ACM (美国计算机协会) 理事会也建立起一个软件工程的的委员会。第二年1 月由上述两个协会联手建立起一个指导委员会, 为软件工程制定合适统一的标准, 作为软件工程师的教育和职业认证的基础。由两个协会联手结合的指导委员会通过对软件工程职业道德和实践的认识开发, 并通过该委员会的审核形成现如今的《软件工程师道德规范》。
https://wenku.baidu.com/view/cf662866f18583d0496459cc.html
Q3:第九章提到领导力————高效的团队讨论,本学期我们有必须做的团队项目,大家都想把它做好,因此在项目实施过程中就需要大家一起讨论,如何高效进行?
答:首先在开会讨论时要有明确的方向和目的,在探讨问题是不要带着感情,针对问题提出看法和科学依据,分清现实。高效进行就需要合理的分工和团队之间的协作。具体的分工过程就需要成员之间协商,作为成员应该要有责任和担当,而不是斤斤计较。
Q4:第十二章《用户体验》:好的用户体验当然是所有人都想要的,如果它和质量有冲突,怎么办?牺牲质量去追求用户体验,用户能接受么?质量是确定软件收益的一个重要因素,但用户体验也是非常重要的,软件本身就是面向很多用户,因此在这两者之间的权衡如和选择?
答:不能片面追求用户体验,毕竟有好的质量才会有好的体验。因此,在进行用户需求调查时,就要了解足够多的用户的需求,尽量避免自己所认为的满足用户体验,以免脱离了业务定位或产品本质。当出现冲突时,心平气和地与用户进行沟通和协商。用户需求是不一定都能具体实现。
Q5:第十四章《质量保障》:软件开发过程有三个主要的特征:“好”,“快”,“便宜”。通俗的理解是“软件在功能、成本、时间三方面满足利益相关者的需求”软件开发过程的成本很高,那么如何做到在较低成本下,做出满足功能要求的软件?
答:系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。然后系统分析员向用户再次确认需求。认真审核系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等。
2、遇到的新问题
Q1:代码编写能力不足,只能写一些基本的操作和功能
Q2:GitHub仍然不会操作,需要使用时,必须网上查找使用方法
Q3:在文档编写过程中,需要用到用例图,燃尽图等实例,虽然有查找资料,但不能正确理解,画出来也只是依葫芦画瓢
3、总结
这一学期对软件工程这门课程的学习,对C#语言再次进行了学习,但编程能力并没有太大提高。团队项目实施过程以及专业课程学习过程中,更多的是对Visual Studio软件的学习和使用;学习了软件开发一般流程,知道如何进行单元测试,回归测试。学会了写博客,对软件Visual Studio Code有了一定了解。我所学习的专业要求必须掌握至少一门编程语言,因此必须进一步进行学习。