这个作业属于那个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/ |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618 |
这个作业的目标 | 列出自己遇到的问题并解决 |
作业正文 | https://www.cnblogs.com/zzexian/p/12681478.html |
其他参考文献 | https://www.baidu.com/ |
问题清单
第一次课问题
1.软件产品是否应该追求“零缺陷”?
答:软件产品的质量定义始终都是满足要求和适合使用,高质量和高等级是有区别的。软件质量目标应该来源于商业目标驱动,商业目标决定了软件的价值。提高软件质量的目标仍然是为了盈利和创造更大的效益,而不是创造完美无缺的产品。
参考这里
2.软件开发面临的挑战有哪些?
答:
1)客户不满意
2)风险与成本问题
3)项目过程失控
4)无力管理团队
第二次课问题
1.学Python能做什么?
python是一种代表简单主义思想的语言。代码规范简洁、关键字相对较少、说明文档很简单,容易上手,应用便捷。它能够把用其他语言制作的各种模块很轻松地联结在一起,常被昵称为“胶水语言”。 python优势众多、功能强大。学python可选择的方向广,web方向、人工智能方向、数据分析方向、网络爬虫等都是可以做的,学python可以选择的岗位很多,python开发工程师、人工智能工程师、大数据分析工程师、爬虫开发工程师、搜索引擎工程师、游戏开发工程师、系统运维工程师、全栈工程师等
2.也不是所有的人都适合结对编程,这类人通常指的是?
答:抗拒结对编程的人
第三次课问题
1.代码审查的作用是什么?
答:
1)检查设计的合理性
2)互为Backup
3)分享知识、设计、技术
4)增加代码可读性
5)处理代码中的“地雷区”
2.有哪些情况是不适合结对编程的?
答:
1)处于探索阶段的项目
2)后期维护的技术含量不高
3)验证测试需要运行很长时间
4)团队的成员需要在多个项目中工作
5)领航的用处不大
第四次课问题
1.黑盒测试与白盒测试相比,各有什么优缺点?
答:白盒测试的优点有:
(1)帮助软件测试人员增大代码的覆盖率
(2)提高代码的质量
(3)发现代码中隐藏的问题
白盒测试的缺点有:
(1)程序运行会有很多不同的路径,不可能测试所有的运行路径
(2)测试基于代码,只能测试开发人 员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求
(3)系统庞大时,测试开销 会非常大
黑盒测试的优点有:
(1)比较简单,不需要了解程序内部的代码及实现
(2)与软件的内部实现无关
(3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题
(4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能
(5)在做软件自动化测试时较为方便
黑盒测试的缺点有:
(1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30%
(2)自动化测试的复用性较低
2.Python是什么?如何编写单元测试?
答:Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
如何编写测试点这里
3.单元测试都包括哪些内容?
答:单元测试包括出错处理、独立路径和模块接口。
参考这里
第五次课问题
1.瀑布模型有哪些优缺点?其使用范围是什么?
答:瀑布模型的优点:
(1)有利于大型软件开发过程中人员的组织、管理
(2)有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
瀑布模型的缺点:
(1)开发过程一般不能逆转,否则代价太大
(2)实际的项目开发很难严格按该模型进行
(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此
(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心
瀑布模型的使用范围:
(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化
(2)开发人员对软件的应用领域很熟悉
(3)用户的使用环境非常稳定
(4)开发工作对用户参与的要求很低
2.一款软件从提出到研发成功,一般要经过哪几个步骤?
答:
(1)需求文档
(2)设计概要
(3)详细设计
(4)编码
(5)测试
(6)发布
3.软件维护工作最主要的部分是?
答:完善性维护
第六次课问题
1.敏捷开发的核心思想是什么?主要包括哪几个步骤?
答:敏捷开发的核心思想主要是迭代式开发
步骤:需求制定——需求分析——设计编码——测试、功能验证——发布版本——下一个周期
2.传统开发与敏捷开发有什么区别?
答:敏捷软件开发和传统软件开发这两种方法各有各自擅长的领域,差异很大但是各有千秋。传统软件开发在大型、复杂的系统中优势更为明显,因为这些系统一般都具有安全关键或者其他高可靠性的属性,需求经常相当稳定,环境也具有相当的可预见性。而敏捷软件开发擅长的则是那些系统和开发团队规模较小、客户和系统的使用随时可以到位、需求和环境相对容易变更的项目。在他们各自的领域中它们的优势明显优于对手,并不能一概而论的说哪种开发方式更好、更为优秀。在未来,应用开发领域的发展趋势既需要敏捷,又离不开规范
参考这里
3.敏捷开发方法中的Scrum方法有什么特点?它和极限编程XP有什么区别?
答:Scrum模型的一个显著特点就是响应变化。
区别:(1)迭代长度的不同
(2)在迭代中, 是否允许修改需求
(3)在迭代中,User Story是否严格按照优先级别来实现
(4)软件的实施过程中,是否采用严格的工程方法,保证进度或者质量
第七次课问题
1.如何对开发团队的人员进行绩效管理?
答:(1)制定整体策略
绩效的管理的第一步,首先应该明白整体的策略是怎样的,这一般跟团队和公司的实际情况有关。比如一个10人以下的小团队和一个100人以上的大团队,前者肯定是要寻求最直接有效的管理方式,而后者就需要更为复杂的、有体制的管理方式。又比如在一个公司创业阶段和平稳发展的阶段,所实行的策略也应该是有所不同的。
(2)目标和OKR
绩效目标的制定、引导和监控,就不得不提 OKR 了。OKR 是一种简便且强大的目标管理方法,相对于 KPI 而言,可以帮助员工建立一个更清晰的目标。一方面,OKR 中的 O 可以使团队在一段时间内保持专注;另一方面,KRs 又为目标如何实现提供了灵活度。O 是团队一段时间内的目标,成员个人的安排都应该是为了达到这个目标而设置的,这样使团队所有成员目标一致;KR 可以由成员自己设定,调动了员工的积极性。总体来说,OKR 可以保持专注度和灵活度之间的平衡。
(3)绩效考核
对开发人员进行绩效考核是一件很头疼的事情,显然不能简单的依据代码行数、Bug 数来评估,根据不同的团队情况,这些指标也不能是千篇一律的。
2.如何做好项目沟通管理让会议更有效?
答:成功的项目管理离不开有效的沟通管理,沟通管理是项目管理的一个重要方面。对项目实施过程中的口头、书面或其他方式的沟通进行管理、保证项目的所有相关利益者之间能够进行通畅、高效的沟通、保证信息传递的有效性,正确性、及时性,保证项目的所有相关利益者能够对项目的目标,计划和工作任务达成一致的理解,从而保证准确无误的实现项目目标。项目沟通管理是为保证项目信息及时、正确地收集、传播、存储以及反馈,保证项目信息畅通所进行的管理活动。项目沟通管理的目标是及时而适当地产生、收集、发送、储存和处理项目的信息,保证项目的成功实施。项目沟通的基本原则是在项目沟通中,为了保证沟通的有效性,必须贯彻以下4项原则:及时性、准确性、完整性和可理解性
参考这里
3.软件项目需求变更频繁,如何做好有效的需求管理和规划?
答:首先对问题进行分析,然后针对不同原因制定解决措施
参考这里
第八次课问题
1.软件配置管理的目的是什么?
答:(1)记录软件产品的演化过程
(2)确保开发人员在软件生命周期的每一个阶段都可以获得精确的产品配置
(3)保证软件产品的完整性,一致性和可追溯性
2.在敏捷开发方法中,用户故事(User Story)的作用是什么?
答:(1)定义需要发布给最终用户的软件特性和功能
(2)用于估算构建当前增量所需要的努力
第九次课问题
1.在选择软件需求获取技术的时候,需要考虑什么?
答:(1)考虑尚不了解的那部分的需求
(2)考虑需求工程师本身对各种获取技术的驾驭能力
(3)考虑目前系统所属的行业及应用领域的现状
第十次课问题
1.用例建模的主要步骤是什么?
2.用例图中,当一个用例只在一定条件下比另一个用例增加少数步骤时,用哪种关系建模更合适?
3.UML为模型可视化提供了哪些表示方法?
第十一次课问题
1.怎么理解面向对象?
2.面向对象程序设计的优点是什么?
3.什么是类?类与对象的区别是什么?
第十三至十四次课问题
1.集中式控制系统与分布式控制系统都有什么特点?
2.顺序图与用例有哪些关系?
3.状态图与其他UML图的关系有哪些?