201771030115-牛莉梅 实验一 软件工程准备-<初学《构建之法--现代软件工程》的疑问>

项目 内容
课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12369881.html
我的课程学习目标 1、了解软件工程是什么 2、学好软件工程的理论知识 3、将理论知识应用到实践中去
这个作业在哪些方面帮助我实现学习目标 初步了解了软件工程的具体含义,同时对理论知识有了大概的了解
作业正文 1、快速浏览邹欣老师博客或《构建之法--现代软件工程》,参照参考文章的提问模板,尝试拟定3个准备从课程学习中找到答案的问题,并以写博客形式记录下来,博客要求使用Markdown排版。2、请参考这篇博客修改博客园博客默认编辑器。3、请参照这篇博客,在博客撰写中练习 MarkDown,有余力的同学可以进一步优化博客的阅读体验。
作业参考文献 [1]张涛,马春燕,郑炜,杨帆,王海鹏,成静编.软件技术基础实验教程[M].陕西:西北工业大学出版社,2015.01:第111页
[2]邹欣.构建之法--现代软件工程.人民邮电出版社,2017

一、读完邹欣老师《构建之法--现代软件工程》一书,以下三个问题比较困扰我

1、问题一

我阅读了该书第1.2.2章的这一段文字

软件工程与计算机科学的关系[2]:
根据我们对软件特性及工程这一概念的了解,可以看到,计算机科学中的理论研究部分,大多可以从形式上证明,与数学、离散数学、数理逻辑密切相关;计算机科学中与实践相关的部分,都和数据以及其他学科发生关系;软件工程则和人的行为、现实社会的需求息息相关。软件工程的研究目标(软件的开发、运营和维护)中都有“人”出现,这些“人”可以是项目需求的提供者,可以是软件的开发人员,还可以是软件的用户。这一特征与其他计算机科学的子领城明显不同。其实,在任何科学领域中,都有偏理论的子领域和偏应用的子领域(例如数学与应用数学),当偏应用的领域得到长足发展之后,就会更多地被大家所熟知,甚至成为一门独立的学科,这并不说明相对应的两方面有高低或优劣之分。
计算机理论的进展会帮助软件工程(例如对程序正确性的分析);软件工程的进展(更好的工具,更多的应用领域)会帮助计算机科学家更有效地进行实验和探索。理论方面的不足或错误,也会对实践造成深远的影响。托尼本人反省,他在20世纪60年代设计Algol w语言的时候引入了NullReference,对后来的编程语言影响很大,他自已估计给工业界造成的损失应该在10亿美元以上。”

我有这个问题:是否可以说软件工程和计算机科学两者相辅相成,缺一不可?
我在网络上查找了一些资料,有这些说法:

  • 软件工程算是专业培养软件技术开发人才的专业,计算机科学是培养理论性人才
  • 两者都很重要,各有侧重点

根据我的实践,我得到的这些经验作为一个计算机科学与技术班的学生,我们和软件工程班所开设的课程大致相同,但软件工程班相对来说他们的动手能力更强,但两个专业都可以从事软件开发工作,所以应该是可以舍弃一个的。但是我还是不太明白,我的困惑是如果可以舍弃一个,那么为什么还会有这两个专业?

2、问题二

我阅读了该书第3.2章的这一段文字

软件工程师的思维误区[2]

  • 分析麻痹
  • 不分主次,想解决所有依赖问题
  • 过早优化
  • 过早扩大化/泛化
  • 画扇面——调侃目标和远景

由于该书是电子版的,可能图片看起来不是很清晰
我有这个问题:读到这,我觉得此处描绘的现象正是我们亲身经历的,那么在做项目之前如何有效的进行需求分析,避免项目太空,到最后完成不了?
我在网络上查找了一些资料,有这些说法:

  • 编写业务流程规范
  • 调研多种类型的用户,了解用户需求
  • 延长需求分析时间

根据我的实践,我得到的这些经验一定要多调研,让调研个体足够大。但是我还是不太明白,我的困惑是在这个个人信息很不安全的时代,如何采集多个用户的需求信息?需求随时在变,到最后项目的实际完成时间是否会远远大于计划完成的时间?

3、问题三

我阅读了该书第13.1.1章的这一段文字

测试设计有两类方法:黑箱(Black Box)和白箱(White Box),这是每个接触过软件测试的人都会给出的答案,但这只是整个软件测试的人门知识。所谓黑箱/白箱,是指软件测试设计的方法,不是软件测试的方法!注意“设计”二字。[2]

有这个问题:软件测试设计和软件测试两者有什么区别?
我查了资料,有这些说法:

  • 软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
  • 从是否关心软件内部结构和具体实现的角度划分,测试方法主要有白盒测试和黑盒测试。
  • 从是否执行程序的角度划分,测试方法又可分为静态测试和动态测试。[1]

--引用自百度搜索

然而,并未给出软件测试设计的具体含义,根据我的实践,我得到的这些经验软件测试设计是指在尚未开发软件之前,对软件测试所要用的方法的一个预先设计,而软件测试伴随软件的整个生命周期,是一种检验手段。但是我还是不太明白,我的困惑是为什么大多数作者并未强调两者的区别,反而把黑箱/白箱归结于软件测试的范畴?

二、修改博客默认编辑器为Markdown

第一步:打开博客园-->随笔,点击设置默认编辑器

第二步:选择Markdown编辑器,点击确定即可修改博客默认编辑器为Markdown

三、小结

这篇博客是我的首篇博客,起初,很难接受用博客的方式来提交作业,各种操作都不熟悉,但是到这篇博客完成后,还是有一丝丝成就感,感觉一步一步来,还是可以做好的,同时,通过对邹欣老师《构建之法--现代软件工程》简单浏览后,我也对软件工程这门课有了初步的了解,可以毫不夸张的说,该书真的是我阅读过的语言最幽默的一本书,希望广大读者有机会能够仔细阅读该书,相信一定会受益匪浅。

猜你喜欢

转载自www.cnblogs.com/niulimei/p/12389107.html