实验十四 团队项目评审&课程学习总结
||||||||||||||
|:--|:--|
|这个作业属于哪个课程|软件工程任教教师|
|这个作业的要求在哪里|https://www.cnblogs.com/nwnu-daizh/p/11093584.html|
|作业学习目标|(1)掌握软件项目评审会流程;(2)反思总结课程学习内容。|
结合本学期课程学习内容,对比《实验一 软件工程准备》的任务5你所提的问题(给出提问博客链接),尝试对提出问题进行解答,并阐明是如何通过学习/实践/讨论弄清楚的;学习中是否产生了新的问题?如有,请提出。
||||||||||||||
|:--|:--|
|提问博客链接|https://www.cnblogs.com/yangat/p/10487624.html|
Q1:什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是抓住了软件工程的一个要素。和软件打交道的专业人士都知道软件有(Bug),软件团队的很多人都整天和Bug打交道,Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。
解答:所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。软件的Bug,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。仅就狭义概念而言,软件出现Bug的原因有:1、对各种流程分支考虑不全面;2、对边界情况的处理不到位;3、编码时的手误。一个程序没有bug是不可能的,对于bug的数量能够在控制范围内,这就是一个好的软件。
Q2:投入和回报不是一个线性的关系,有时投入根本看不到回报,另一方面,如果在质量上做到极致,达到高级工匠的水平,会对团队成员本身和用户产生巨大影响。
解答:有时投入根本看不到回报,从燃尽图就可以看出,有时大家投入大量的精力、财力、物力还是没有成效。是因为前期的规划没有做好。若是想要将投入与回报成为一个线性关系,那是一种理想的关系。而在实际的项目过程中,是不可能达到理想状态下的。当然如果前期你投入较好,安排规划的合理,后期投入精力,回报是可观的,在项目的质量上达到极致的状态,会对团队成员和用户都产生巨大的影响。
Q3:PM的核心要求是:根据市场和用户需求,协调各部门资源,正确地把握产品定位和方向,解决用户的痛点,持续优化产品。
解答:Product Manager:产品经理——正确地做产品 目前国内公司大部分PM都是指这个职位。产品经理对一个或多个产品或产品线负责,而互联网产品涉及到这些方方面面:产品定位、市场发展、需求分析、运营、营销、市场推广、商务合作。产品经理横跨这些部门,寻找资源,持续推进产品。随着产品的发展,不同公司,对PM要求会不一样。 核心要求是,根据市场和用户需求,协调各部门资源,正确地把握产品定位和方向,解决用户的痛点,持续优化产品。
Project Manager:项目经理——正确地做流程 在某些公司,这个职位与产品经理分开单列。他们对项目流程负责,即项目从立项到上线按时完成。正确地协调团队内部外部,调配各部门资源和时间,有效进行风险管理,保证一个项目顺利按计划结项,是一个项目经理的核心价值。
Program Manager:微软的职位名称 微软产品团队三足鼎立的角色分配就是PM、开发、测试。PM负责除产品开发和测试之外的所有事情。从某种意义上说,是前面两种角色的综合。微软通常有专门的产品策划(Product Planner),他们和市场部门的专职人员一起,负责产品的长期发展和市场推广。
以前我认为PM最好有一个,现在我知道有着不同的PM,每个人负责的岗位也不一样。每个PM在自己的位置上各司其职就好。
总结自己在项目的可行性分析/需求分析/软件设计/实现/测试/项目验收/中学到了哪些“知识点”。
-
可行性分析
- 可行性分析是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性分析应具有预见性、公正性、可靠性、科学性的特点。
-
需求分析
- 需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。具体分为功能性需求、非功能性需求与设计约束三个方面。
- 1.功能性需求
- 功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。功能性需求是软件需求的主体。开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。
- 2.非功能性需求
- 作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。主要包括软件使用时对性能方面的要求、运行环境要求。软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。
- 3.设计约束
- 一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。例如,要求待开发软件必须使用MySQL数据库系统完成数据管理功能,运行时必须基于Windows环境等。
- 需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。具体分为功能性需求、非功能性需求与设计约束三个方面。
-
实现
- 实现是将设计转换为特定编程语言代码并在相应环境运行,同时保持可追踪性,灵活性和可扩展性。
-
测试
- 测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。如安全测试是测试安全措施是否完善,能不能保证系统不受非法侵入。再例如,压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取) 等情况下是否还能正常地工作。
-
软件设计
- 软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。
-
项目验收
- 项目验收是核查项目计划规定范围内各项工作或活动是否已经全部完成,可交付成果是否令人满意,并将核查结果记录在验收文件中的一系列活动。
结合个人项目/结对编程/团队项目的个人经历,谈谈心得。
在个人项目中,因为自己前期根本没有接触过Java语言,是自己第一次接触Java语言,当时请教了同学,看了很多书,自己一点一点的学习。虽然自己的技术不足,熟练程度不够,付出很多,效果甚微,但是好在磕磕绊绊的还是做出了,可能实现的效果不好。以后还是会再接再厉的,希望做出更好的东西来。对于此次作业影响最深的原因大概就是学了很多新的东西,从无到有。
在结对编程中,两个人的分歧还是较小的,我们两个进展的较为顺利。
在团队项目中,小组多人合作方面存在很多问题,前后端合作不完美,前端也在改,后端也在改,然后就是任务分工方面,有的任务不能严格的分给前端或者后端,必须前后端合作,这样就得俩人共同协作。也是考验一个团队的默契。
总结这门课程的实践总结和给你带来的提升,包括以下内容:
1.统计在软件工程实践中,你完成了多少行的代码?
||||||||||||||
|:--|:--|
|完成多少行代码|2800多行|
2.你在软件工程实践的各次作业分别花了多少时间?
个人作业:
||||||||||||||
|:--|:--|
|作业名|花费的时间(h)|
|泛读构建之法的三个问题|1h|
|实验三作业互评与改进报告|2.5h|
|词频统计软件项目报告|5h|
|实验四 软件工程结对项目|5h|
|实验四附加实验 项目互评|1h|
团队作业:
||||||||||||||
|:--|:--|
|作业名|花费的时间(h)|
|团队项目选题报告|1h|
|团队项目的原型设计|2.5h|
|基于原型的团队项目需求调研与分析|2.5h|
|项目需求分析改进与系统设计|2.5h|
|团队项目系统设计改进与详细设计|2h|
|团队项目设计完善&编码|10h|
|Alpha冲刺|18h|
|Beta冲刺与验收准备|8h|
3.哪一次作业让你印象最深刻?为什么?
词频统计软件项目报告这项个人作业,因为自己前期根本没有接触过Java语言,是自己第一次接触Java语言,当时请教了同学,看了很多书,自己一点一点的学习。虽然自己的技术不足,熟练程度不够,付出很多,效果甚微,但是好在磕磕绊绊的还是做出了,可能实现的效果不好。以后还是会再接再厉的,希望做出更好的东西来。对于此次作业影响最深的原因大概就是学了很多新的东西,从无到有。
4.累计花了多少个小时在软件工程实践上?平均每周花多少个小时?
||||||||||||||
|:--|:--|
|累计花在软件工程实践上的时间(h)|平均每周(h)|
|61|4.7|
5.你学习和掌握的新语言、新平台
本学期主要掌握的新平台有博客园、github,慕客绘制原型,在leangoo上进行团队燃尽图的制作,visio画用例图、类图、活动图等,问卷星编写问卷调查,新语言有Java、web。
6.填写下表,总结一学期的学习中,你学习或使用的软件工程开发工具、开发方法和建模方法
||||||||||||||
|:--|:--|:--|
|软件开发工具、项目管理工具|软件开发方法|软件建模方法|
|GitHub,Eclipse,MySQL| 原型化方法,面向对象开发方法、面向数据结构的软件开发方法|面向对象建模方法|
7.其他方面的收获或提升
在自主性上有了很大的提高,现在老师不用催着我们,我们也开始会对要掌握的内容先行学习。团队意识也明显提高,争取每个人求同存异。
8.你认为目前的课程存在哪些问题,你有什么更好的建议。
代祖华老师所采用的新型教学方式是翻转课堂,在这种教学模式下,课堂内的宝贵时间,学生能够更专注于主动的基于项目的学习,共同研究面临的问题,从而获得更深层次的理解。教师不再占用课堂的时间来讲授信息,这些信息需要学生在课前完成自主学习,他们可以看视频、阅读功能增强的电子书,还能在网络上与别的同学讨论,能在任何时候去查阅需要的材料。教师也能有更多的时间与每个人交流。在课后,学生自主规划学习内容、学习节奏、风格和呈现知识的方式,教师则采用讲授法和协作法来满足学生的需要和促成他们的个性化学习,其目标是为了让学生通过实践获得更真实的学习。翻转课堂模式是大教育运动的一部分,它与混合式学习、探究性学习、其他教学方法和工具在含义上有所重叠,都是为了让学习更加灵活、主动,让学生的参与度更强。互联网时代,学生通过互联网学习丰富的在线课程,不必一定要到学校接受教师讲授。但是目前我们这些学生不是很适应这种新型的教学模式,以前的课程中教师基本上是满堂灌。希望老师可以两者中和一下,让学生们有一个更好的过渡阶段。另外,老师加入了助教,平时有助教为我们细心检查问题,让我们及时看到自己的错误,并加以改正。