### 一:实验名称:团队项目评审&课程学习总结
### 二:实验目的与要求 (1)掌握软件项目评审会流程; (2)反思总结课程学习内容。
### 三:实验步骤 任务一:按照团队项目结对评审名单,由项目组扮演乙方,结对项目组扮演甲方,相互对各自软件产品进行验收评审(会议流程参见实验十三 软件项目验收相关知识),并形成验收意见。 任务二:经历了一个学期的软件工程学习和项目实践,请每位同学完成一篇个人学习总结博客。
### 四:实验内容
(1)掌握软件项目评审会流程; (2)反思总结课程学习内容。 |
---|
对提出问题进行解答:
1.对于软件工程师这个职位来说没有适合不适合一说,而是a.个人得对软件工程师这个职业有兴趣:因为只有兴趣才能使你乐在其中,乐在其中你才会产生热情,充满热情才能使你做到卓越;b.认知:认知影响态度,态度决定一切;c.EQ(情商):在进入社会后聪明才智已经退为次要位置,EQ方面的东西更为重要,包括人际关系能力、沟通表达能力、抗压性、处理危机的能力;d.强大的毅力:无论从技术还是工程量,都得有刻苦钻研,坚持不懈的精神;e. 会带领团队:技术达标后,就要培养个人的领导能力了,带领一个团队,有效地与其他人协同工作,才能取得更大的成果。
2.我认为个人对团队的选择首先要看这个团队是否有一个核心,而这个核心的工作目的主要是团队的每一个人是否能牢牢的团结在一起,朝一个相同目标或最重要目标前进。核心的主要能力要有:a.卓越的领导能力;b.完美的人格魅力;c.果断的执行能力。
团队的发展前景从以下几个因素表现:a.优秀的组织领导:到一个企业集体,小到一个职能部门,或者是一个工作小组,要想组织有力,使团队成员拥有较高的忠诚度,那么,优选一个大家都认可的团队领导人至关重要;b.共同的事业愿景:一个组织能否一起走的更远、更久,归结于这个团队是否有共同的远景,也就是团队信念,组织信念是让团队成员排除万难,风雨同舟;c.互补的成员类型:要想保证组织团队的有效有力,组织成员的组成非常关键,很难想象,一个组织都是性格暴躁,或者性格柔弱,或者都是某一块面的高手,他们组合在一起能够给团队带来什么,因此,互补型的成员类型,才是“粘合”组织的基础;d.合理的激励考核:人都有惰性,一个团队组织要想保持持久的动力与活力,就必须要引入竞争机制,同时,一个团队在从不稳定到稳定发展过程中,必须通过激励考核,来优胜劣汰,来奖优罚劣;e.系统的学习提升:人最大的敌人就是自己,一个组织最大的敌人也是自己。当一个团队以经验作为工作的依靠时,这个组织就有可能陷入“经验主义的”的怪圈,就有可能会陷入“僵化”,就有可能“死在自己手里”,一个组织要想保持基业长青,要想永葆青春活力,就必须要依靠系统的学习提升。
3.首先判断客户要求是否合理,如果合理做出相应的解决,如果不合理,保持冷静,不要被客户情绪影响,心平气和的进行沟通,找到双方都能接受的解决方案。
阐明是如何通过学习/实践/讨论弄清楚的:
为期两个月的团队项目学习不仅从技术方面也对如何进行团队协作,一个优秀团队的形成等方面有了思考,见解!所以对于实验一的任务5所提出的问题是本人的亲身体会,对于他们的回答也就自然而然了。
(2)总结自己在项目的 可行性分析/需求分析/软件设计/实现/测试/项目验收/中学到了哪些“知识点”
- 可行性分析:软件生命周期的第一个阶段就是对项目可行性的研究,可行性研究项目不是解决问题,而是确定,确定软件项目是否值得做,能否用尽可能的代价,在尽可能短的时间内开发完成。
可行性研究的任务是:a.确定问题是不是值得解决;b.如果问题没有可行的解,应建议不做这个软件项目,以避免时间、资源、人力和时间的浪费;c.如果问题值得解,则推荐一个好的解决方案,并制定一个初步的工程计划。
可行性研究的内容:可行性研究从以下几个方面进行分析:a.技术可行性b.经济可行性c.操作可行性d.法律可行性e.系统效益f.开发方案的选择 - 需求分析:知道了需求获取的几种方法及其使用场合:
a.现场观察:窥探(真实发生的场地);
b.访谈:包打听;
c.问卷调查:套取;
d.会议研讨:头脑风暴;
e.原型评估:界面(样品)迭代(需要有原型开发的能力);
f.场景分析:模仿(有角色扮演);
g.其它:文献考古,用例分析。 - 软件设计:软件设计的目标是把软件需求规格说明 书中所表述的用户功能、性能等需求转换为如何实现这些需求的描述,其成果能够指导后续编码实现、测试。
软件设计的阶段与任务:a.传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计及过程设计四部分;b.面向对象对象方法则将软件设计划分为体系结构设计、类设计/数据设计、接口设计、构件级设计四部分;c.概要设计(系统设计),将软件需求转换为数据结构和软件的系统结构;d.详细设计(过程设计),通过对结构表示进行细化,得到软件的详细的数据结构和算法 。
在软件设计这一阶段,还对UML建模图进行了学习:用例图、类图、对象图、序列图、协作图、状态图、活动图、组件图、部署图,其中对类图进行了主要的学习。 - 实现:这一部分包括两个方面,一个是编码,一个是测试。我们的团队项目小组使用的语言是c#,所以,本人对这门语言的编程技术有了提升。对项目开发中编码规范有了了解。
- 测试:这一部分主要对黑盒测试和百合测试进行了学习,白盒测试又称结构测试,黑盒测试着重测试软件的功能,黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型的错误。
- 项目验收:软件项目实现之后,还要进行项目的实施、维护、管理。
(3)结合个人项目/结对编程/团队项目的个人经历,谈谈心得
从个人项目/结对编程/团队项目的文档编制,系统开发再到现在的项目收尾,每次做作业都会花费大量的时间、精力,还记得刚开始接触开发系统的时候是懵懂的、迷茫的,不知道该从那里开始,可转眼间,一次又一次的bug修复,系统检查,验收准备工作的进行,都有一种成就感。需求文档、系统设计文档、编码规范文档等一系列文档编制一次又一次的修改,对bug一次又一次的查找都是为了实现更好的库存管理系统,过程是漫长而又痛苦的,而结果是满意的。
(4)总结这门课程的实践总结和给你带来的提升:
- 统计在软件工程实践中,你完成了多少行的代码?
对于项目编码,项目小组每次编写都有参与并实施编写,但具体多少并未细算。 - 你在软件工程实践的各次作业分别花了多少时间?
<tr>
<th>实验一 软件工程准备</th>
<th><center>5</center></th>
</tr>
<tr>
<th>实验二 软件工程个人项目</th>
<th><center>14</center></th>
</tr>
<tr>
<th>实验三 作业互评与改进</th>
<th><center>3.5</center></th>
</tr>
<tr>
<th>实验四 软件工程结对项目</th>
<th><center>23</center></th>
</tr>
<tr>
<th>实验五 团队作业1:软件研发团队你组建</th>
<th><center>7</center></th>
</tr>
<tr>
<th>实验六 团队作业2:团队项目选题</th>
<th><center>4</center></th>
</tr>
<tr>
<th>实验七 团队作业3:团队项目原型设计与开发</th>
<th><center>27</center></th>
</tr>
<tr>
<th>实验八 团队作业4:基于原型的团队项目需求调研与分析</th>
<th><center>45</center></th>
</tr>
<tr>
<th>实验九 团队作业5:团队项目需求改进与系统设计</th>
<th><center>30</center></th>
</tr>
<tr>
<th>实验十 团队作业6:团队项目系统设计改进与详细设计</th>
<th><center>62</center></th>
</tr>
<tr>
<th>实验十一 团队作业7:团队项目设计完善&编码 </th>
<th><center>135</center></th>
</tr>
<tr>
<th>实验十二 团队作业8:软件测试与Alpha冲刺</th>
<th><center>14</center></th>
</tr>
<tr>
<th>实验十三 团队作业9:BETA冲刺与团队项目验收</th>
<th><center>12</center></th>
</tr>
软件开发工具、项目管理工具 | 软件开发方法 |
Github、sql sever2014、Visual Studio | 原型化方法、结构化方法、面型对象的开发方法 |
- 其他方面的收获或提升:
对于团队项目的开发过程中,遇到的有些问题自身想不到的,团队项目小组其他成员就会给出意见及建议,这就在其他人身上学到了一些知识,并使得项目开发速度提高。各项目成员分工合作,互相配合,团队精神可佳可奖。
(5)你认为目前的课程存在哪些问题,你有什么更好的建议?
经过一学期软件工程这门科目的学习,让我深有体会的是:本课程作业量过大。本人基本每周大量的时间都在此科目实验中。我知道老师每次为实验内容也是花费很多心思,助教评审作业也是不易。可任务量过多,有时候会精神疲劳,产生懈怠,反而会违背当初实验目的。所以,我的建议是:对实验任务进行适当折中,从而达到高效率、高质量。