项目 | 内容 |
软件工程 | https://www.cnblogs.com/nwnu-daizh/ |
实验要求 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
构建之法与博客首秀 | 拟定3个准备从课程学习中找到答案的问题,并以写博客形式记录下来 |
问题一 经常听到“软件工程”,那么“软件工程”到底是什么呢?
在前期的专业学习中,经常会听到老师强调“软件工程”的重要性。现在,要真正开始学习这门功课时,我想先弄清楚“软件工程”到底是什么?具体都涉及到哪些方面呢?
通过阅读邹欣老师的《现代软件工程—构建之法》并且搜索,我发现“软件工程”是没有一个统一的定义的:
- 邹欣老师给出的定义是:软件工程是把系统的, 有序的, 可量化的方法应用到软件的开发, 运营, 和维护上的过程。
- BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
- IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
- FritzBauer:在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
- 《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。
“软件工程”涉及的方面也很广:
- 软件工程包括下列领域: 软件需求分析, 软件设计, 软件构建, 软件测试, 和软件维护.
- 软件工程和下列的学科相关: 计算机科学, 计算机工程, 管理学, 数学, 项目管理学, 质量管理, 软件人体工学, 系统工程, 工业设计, 和用户界面设计.
问题二 为什么说“软件=程序+软件工程”?
在阅读邹欣老师的《现代软件工程—构建之法》之前,接触的概念都是“软件=程序+数据+文档”。然而《现代软件工程—构建之法》这本书在开始不久就提出了“软件=程序+软件工程”,虽然我对软件工程这门课程还没有开始学习,但很明显“数据+文档”和“软件工程”是不等价的。那么,为什么书中会提到“软件=程序+软件工程”呢?
带着疑惑我继续学习,庆幸在后面邹欣老师给出了非常明确的回答:程序是基本功,但是除了程序之外,软件工程决定了软件的命运。
问题三 为什么要学习“软件工程”?它的框架是什么?
软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义.
为什么要学习“软件工程”?
1995年,Standish Group针对系统开发成功的研究表明,所有的开发项目中有32%的项目在它们结束之前被中止.此外多于一半的软件项目花费的成本相当于原来预算的2倍.只有42%的软件项目完成时达到了预期的范围和功能,事实上,许多系统只完成了部分预期的需求.因此,软件的开发是一个很困难的活动,要求很仔细的计划和执行.软件工程就是在这样的背景下,由许多计算机科学家经过多方面的探索和总结而成形的.近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门,生产部门,和服务行业中的关键因素,渗透到了各个领域,是当今世界不可缺少的一部分.
软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
- 软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
- 软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
- 软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则