软件工程准备
项目 | 内容 |
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE] |
作业要求 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
学习目标 | 通过浏览邹欣老师博客或《现代软件工程—构建之法》,学习软件构建之法,总结三个问题以及做出解答,并且学会用MarkDown编辑博客 |
哪些方面帮助我实现学习目标 | 1.学习习惯方面2.学习态度方面 |
作业参考文献 | [1]邹欣.构建之法:现代软件工程》北京:人民邮电出版社,2017.7. |
一、Markdown学习博客
在Markdown编辑器的学习中主要学习了以下几个方面
1.如何设置标题
2.如何设置字体字号
3.如何插入图片和链接
4.绘制表格
5.嵌入数学公式
二 、浏览邹欣老师博客或《现代软件工程—构建之法》,参照参考文章的提问模板,提出三个问题
1.软件工程是什么?软件工程涵盖的领域有哪些?软件工程与哪些学科相关与计算机科学的不同点在哪里?
根据第一章的第1.2节标题为软件工程是什么,引发思考传统的工程应该是指一些工业方面的建树,他们涉及到的应该只是相关领域。例如制造工程、建筑工程等等,但是软件工程我觉得范围很大,所以引发提问(软件工程该怎么定义,与之相关的学科有哪些呢?)
- 软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运行,维护上的过程。
- 软件工程包括下列领域:软件需求分析,软件设计,软件构件,软件测试和软件维护
- 软件工程和下列的学科相关:计算机科学,计算机工程,管理学,数学,项目管理学,质量管理,软件人体工学,系统工程,工业设计和用户体验设计。
人们在开发,运营,维护软件的过程中有很多技术,做法,习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程的目的是为了提高软件开发,运营,维护的效率,并提高软件的质量,用户满意度,可靠性和软件的可维护性。
计算机科学与软件工程的不同测出重点如下图所示
2.软件工程的目标是什么?
根据第一章的第1.2.4节标题为软件工程的目标——创造“足够好”的软件,引发疑问:到底是么样的软件能称得上“足够好”,这样的标准的是什么?我们要开发软件肯定是要有一个目标要达到,这样也才是有目标,有意义的工作,而其它行业的产品研发出来就是为了针对某一问题的,所以只需要检测产品是否合格便可,可是对于研发的软件产品他没有一个衡量的度,所以我们会有疑问:研发过程中追求的目标?
每一个软件都会尽可能的满足用户的需求,但是程序员总是无法写出一个足够好的软件来满足所有的用户所谓软件工程九十八软件中的Bug都消灭,BUG很重要它主要是衡量一个软件的开发效率,用户满意度,可靠性和可维护性,以此来达到用户的期望值。学习过《构建之法》书中倡导的目标要做到如下三点:
(1)研发出符合用户需求的软件(前提是要做大量的需求分析)
(2) 通过一定的软件流程,在预计的时间内发布“足够好”的软件
这个软件要经历一定的软件流程,通过全体团队成员的努力在一个长期阶段内逐步完成的,对于现实生活中的软件团多来说,好产品不是某个英雄长期加班突击出来的。
(3)能证明所开发的软件是可以维护和继续发展的
主要功能的设计文档说明和软件的实际行为一致。源代码完整,能用软件管理看到源代码的每次修改记录,Bug的修改过程,关键模块右可以正常秩序的单元测试,压力测试脚本,等等。
能做到这三点,就是初步学会了软件工程
3软件工程这门课为何能够体现团队的重要性?
书中第4章提到了两人合作,表示结对编程的优点既可以提升效率而且产品的质量会提高,第5章提到了团队这个概念,那么在一本书中会多次强调“团队”的意义在于什么?随之后面第8章会做到需求分析,我认为这当中就不是仅仅一个人就能完成的,根据前面的问题,我们想要设计好的软件,尽可能地满足用户的需求,显然产品功能仅有一个人分析的话就不会特别完整,多人同时考虑完整性可以提高,所以我们才会考虑“团队”在软件工程中的重要性。
1.在书中提到了团队的重要性,在软件开发中一个团队中需要各司其职,平等协作,互相交流,同时编程规范达成一致也是必须的 。我们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫做"软件开发流程",软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。
2.同时提到了绩效管理,团队中需要队友,同时也需要队友评估,根据完成任务维度以及团队贡献维度的不同有着不同的待遇。团队不断的发展,不断地成熟,能让团队的效率和影响力不断地提升。我们自己组建的小组中也应该各尽其责,各自发挥自己 的能力为团队作贡献
学习总结
看过邹欣老师的书后,我了解到了软件的特性:复杂性、不可见性、易变性、服从性和非连续性,软件=程序+软件工程。软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。包括了软件需求分析、软件设计、软件构建、软件测试和软件维护。软件工程就是为了要能研发出符合用户需求的软件,要通过一定的软件流程,在预计的时间内发布出"足够好"的软件,要能证明所开发的软件是可维护的可持续发展的。