1构造之法

1.1软件=程序+软件工程

核心推论:软件=程序+软件工程

              软件=程序+软件工程

软件工程是计算机科学的重要领域,包括程序的实现、测试、维护和文档化等。程序不仅仅是数据结构和算法,还包括实际应用中的需求分析、设计、测试和维护。一个好的程序员不仅需要掌握数据结构和算法,还需要具备良好的编程习惯、团队协作和沟通能力。

软件工程涉及程序、数据、架构、测试等多个方面,需要保证软件质量、可用性和可靠性。从需求分析到发布,需要经过多个阶段,包括设计、实现、测试等。软件团队需要理解程序,保证软件质量,并及时解决问题和维护服务。

本节内容描述了软件开发的阶段,并与航空产业的发展阶段进行了比较。软件开发的不同阶段包括玩具阶段、业余爱好阶段等。在玩具阶段,软件可能技术含量不高,但也有很多窍门,需要掌握基本理论。在业余爱好阶段,有人通过实践实现梦想,实现从图纸到实物的转变。

1.2软件工程是什么

软件工程是将系统的、有序的、可量化的方法应用到软件开发、运营和维护上的过程。它涉及到多个领域,包括计算机科学、计算机工程、管理学等。软件工程的目标是提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和可维护性。为了实现这些目标,软件工程采用各种流程和工具,例如软件开发流程、编译工具、源代码管理工具等。 Microsoft Visual Studio x GitHub . Eclipse s ClearCase ClearQuest这些工具和流程可以帮助工程师更高效地开发软件,提高软件的质量和可靠性

 

1.2.1软件的特殊性

软件是一种可以在计算机或电子设备中运行的指令和数据的有序集合。与人类制造的其他产品相比,软件有其特殊性。随着技术的发展,许多需求变得容易满足,但软件开发流程并没有相应的提速,成本也没有下降。这是因为软件开发面临一些特别的难题:

1. 复杂性:大型软件系统非常复杂,源代码量巨大,模块间的依赖关系众多。而软件工程师的智力、记忆力有限,难以理解和运用这些复杂性。

2. 不可见性:软件以机器码的形式高速运行,难以直接观察其执行过程。当软件出现错误时,工程师只能看到错误代号和大致的目标代码位置,难以完整重现问题。

3. 易变性:软件看似容易修改,但实际上正确地修改软件非常困难。这需要工程师具备深厚的专业知识和丰富的经验。

因此,软件工程的目标是提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和可维护性。通过采用各种流程和工具,软件工程师可以更高效地开发软件,提高软件的质量和可靠性。


1.2.2软件工程与计算机科学的关系

软件工程与计算机科学关系密切,前者侧重于应用和实践,后者则涵盖了理论和实践两个领域。计算机科学分为偏理论和偏实践的领域,如计算理论、计算机体系结构等。软件工程涉及的领域包括系统软件、应用软件和恶意软件等。

 

1.2.3软件工程的知识领域

 

软件工程包含15个知识领域,

Software Requirements
2. Software Design
3. Software Construction
4. Software Testing
5. Software Maintenance
6. Software Configuration Management
7. Software Engineering Management
8. Software Engineering Process
9. Software Engineering Models and Methods
10. Software Quality
11. Software Engineering Professional Practice
12. Software Engineering Economics
13. Computing Foundations
14. Mathematical Foundations
15. Engineering Foundations

其中1-12描述软件工程学科本身的知识领域,13-15描述软件工程的基础知识领域。

 

1.2.4软件匚程的11 创造’‘足够好的软件

软件工程的目标是创造“足够好”的软件,消除Bug是其中的一个要素。Bug是指软件行为与用户期望不符,是否为Bug取决于用户和开发者的角度。软件工程需要解决软件开发效率、用户满意度、可靠性和可维护性问题。

posted @ 2024-01-14 22:48  艾鑫4646  阅读(5)  评论(0编辑  收藏  举报