软件工程学习笔记(一)

这是什么?

清华大学学堂在线《软件工程》网课学习笔记。


1.1软件工程无处不在

“软件工程”这个词由两部分组成:软件 + 工程。

软件是研究对象和最终成果,也就是程序、文档、数据等产品。
工程是一种方法论,强调把理论应用到实践中,讲究系统性、规范性和可度量性。
“软件工程”的本质,就是把工程化的思想用到软件开发中,让开发过程更科学、更可控,最终能更高质量、更高效率地交付软件。

简单来说,软件工程研究的是:怎样用工程的方法去开发软件。


1.2软件的本质特性

软件具有复杂性、一致性、可变性、不可见性等固有的内在特性,这是造成软件开发困难的根本原因

  1. 复杂性
    软件往往比人们想象的复杂得多。系统越大、功能越多,模块之间的关系就越复杂,一处改动可能会引发连锁反应。

  2. 一致性
    软件内部的结构必须保持一致。你不能随便改一个地方,否则其他部分可能都要跟着改。

  3. 可变性
    需求在变、环境在变、用户在变,所以软件也得不断变,这意味着软件要有良好的扩展性和可维护性。

  4. 不可见性
    软件不像建筑那样能“看见结构”,它的逻辑是抽象的,没办法直观看到问题在哪,只能靠分析和调试去理解。

正是因为这些特性的存在,软件工程这门学科才有研究的必要。


1.3软件工程的产生与发展

“软件工程”这个词最早是在 1968 年 NATO(北约)软件工程会议上提出的。
当时人们发现,硬件的发展速度远远快于软件,结果软件成了整个系统的瓶颈。
很多大型项目因为软件问题拖延、崩溃、甚至失败,这种现象后来被称为“软件危机”。

于是,学术界和工业界开始反思:
是不是该用像建筑、机械那样的工程化思维来管理软件开发?
这就是软件工程产生的背景。

它的目标很直接:以合理的成本、可控的时间,开发出质量可靠的软件系统。


1.4 软件工程的基本概念

工程是一门将理论和知识应用到实际问题中的科学,其目标是以经济有效的方式解决问题

软件工程可以理解为两个层面:

  1. 方法应用层:将系统化、规范化、可度量的方法应用于软件的开发、运行和维护,也就是把工程化思想应用到软件上。

  2. 方法研究层:对上述方法本身进行研究和改进,以不断提升软件开发的效率和质量。

软件工程的最终目标是开发出“足够好”的软件,即既能满足需求,又具备可维护性和高质量特性。

软件工程不仅是方法的应用,还包括一整套系统化的过程,从需求分析、设计、实现、测试到维护,形成完整的软件生命周期。

软件工程的方法

  • 面向服务(Service-Oriented):在应用层将软件拆分为可复用的服务,每个服务由多个构件组合而成。常用工具和方法包括 OOD、OMT、UML、SASD。

  • 面向过程(Procedural):以算法为基本构造单元,强调自顶向下的功能分解,并在一定程度上将功能与数据分离。

  • 面向对象(Object-Oriented):以类为基本单元,对象是类的实例化,系统通过对象之间的消息传递进行交互。

  • 面向构件(Component-Oriented):关注比类更大粒度、易于复用的构件,以实现软件的再工程和模块化复用。

软件开发的基本策略

  1. 软件复用:在构建新系统时,不必从零开始,可以直接复用已有构件,包括库函数、类库、模板、设计模式、组件和框架。这些构件经过多次使用验证,能够提升新系统的质量。

  2. 分而治之:将复杂问题分解为若干简单问题,逐一解决。这一策略来源于生活与工作经验,尤其适合技术领域。

  3. 逐步演进:软件像一个生长的植物,需要迭代式、增量开发。开发过程应遵循软件自身的规律,不断完善功能,最终交付满足客户价值的产品。

  4. 优化折中:软件工程师应将优化视为责任,不断提升软件各项质量特性,如性能、资源利用、用户体验等。但由于目标多且可能冲突,无法全方位优化,因此需要在各项质量之间进行折中,确保整体最优。


1.6 业界人士谈软件工程

在实际软件开发中,最大的挑战往往是如何让多人并行协作,共同完成项目。这涉及到项目管理和团队协作的核心概念。
软件工程不是一个人的工作,而是将多个人的智慧和代码整合起来的过程。通过规范、规则和流程,每个人的代码风格趋向统一,形成统一思维和逻辑,最终系统看起来像一个人写出来一样。设计模式就是这种思想的体现。

一个优秀程序员需要具备以下四项核心素质:

  1. 强大的代码阅读与理解能力,以及高水平的代码书写能力。

  2. 高度的责任心,对整个软件产业、前人的劳动成果和用户体验心怀敬畏,同时不断自我反省与提升。

  3. 职业道德,能够保证代码质量,并保护公司的机密信息。

  4. 协同能力,能够与其他程序员高效合作,分享代码、心得和经验,确保团队整体产出质量。

这些素质不仅是技术要求,也是团队协作和项目成功的重要保障。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值