高级软件工程学习总结

本文探讨了软件工程中的敏捷方法,强调其在应对快速变化的需求和小型团队开发中的优势。作者指出,敏捷方法注重个体和互动、工作的软件、客户合作和响应变化,但可能在处理复杂代码和大型项目时面临挑战。尽管如此,敏捷方法在特定场景下仍具有价值,不应一概而论。文章还提到了软件工程的其他方面,如需求分析、软件设计和软件危机,强调了选择合适开发方法的重要性。
摘要由CSDN通过智能技术生成

        因为大学读的是软件工程专业,本科的时候就接触了软件工程这门课,而且复试的时候老师问的问题绝大部分都是关于软件工程的。当时学软件工程,只觉得这门课就是纯背的课,感觉没什么用,也不写代码,也不提高我的编程水平,然后复试就被毒打了一顿。因此上学期就想选这门课了,结果运气不好被选课系统踢了。这学期终于如愿以偿选到了。孟老师上课幽默风趣,比较亲和,就像是一个朋友在和你说故事。用生动的例子由浅入深的给我们讲解软件工程学科中的各种概念、遇到的问题及解决方案。课程贴近实战,有编写代码的实验,不再只是纸上的那一个个概念。

课程主要有以下几部分内容:

  1. 工欲善其事必先利其器:这部分的内容非常实用,涉及到Typing,VS Code,Git,Vim,正则表达式。
  2. 代码中的软件工程:在这一部分,需要上手写代码了。用Go或者Rust语言来实现。编写menu代码,了解了怎么编写出高质量的代码,模块化的代码怎么编写,软件设计中的一些基本方法和概念。
  3. 从需求分析到软件设计:这部分从需求分析开始,介绍相关概念,怎么去分析,用什么工具。以面向对象的分析和设计为例,提供了一种从需求分析到软件设计的基本建模方法。在平时代码编写的实践中,我们很少涉及到这方面的内容,这是我们比较欠缺的。
  4. 软件科学基础概论:这部分涉及到一些基础概念,比如软件的基本构成,基本结构以及软件质量的定义等。还有设计模式的相关知识,详细的介绍了常用的设计模式。很多设计模式及原则之前只是听过,现在有了进一步的了解。
  5. 软件危机和软件过程:这部分主要讲述了软件危机,软件过程,以及团队的重要性等。介绍了一些经典的软件开发过程模型。      

        这里我想谈一谈敏捷方法。之前在网上冲浪的时候,碰到了一个问题:为什么谷歌之类大厂程序员认为敏捷开发是瞎扯淡?
        互联网使得知识的获取变得更加容易,很多软件可以由一个小团队来实现。同时,技术更新的速度在加快,用户需求的变化也在加快,开发流程必须跟上这些快速变化的节奏。于是敏捷方法就产生了。
敏捷方法的宣言是:

  • 个体和互动 高于 流程和工具
  • 工作的软件 高于 详尽的文档
  • 客户合作 高于 合同谈判
  • 响应变化 高于 遵循计划

        最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
        从敏捷方法的宣言和目标就可以看出来,它适用于组比较小,业务相对比较简单,敏捷开发可以很好的执行。但是当代码的复杂程度高的时候,可能会出现无视任务复杂度,强行压缩时间,很难在一个较短周期内做出可以量化的进度。而且随意修改定好的计划,可能会牵扯甚多。
        敏捷方法原来设想的主场景便是为客户开发定制软件,只不过在某些领域,工作方式不同,不太适用,但是不能说明它没有用。这就好像大家时常调侃的程序员圣战:XX是最好的语言。在不同的领域,不同的语言有自己的优势和劣势,比如C/C++在嵌入式领域备受追捧,而Java/Go在互联网领域大放异彩。每一种方法都有自己的特定应用场景。
        信息化时代,软件开发已经覆盖很广了。不同的行业情况千差万别,想要用一套理论去指导所有开发领域是不现实的。因此才会有那么多软件工程专家提出那么多的方法。因此,在做项目之前,要先考虑好,再下手。别想着会有银弹。

参考资料:
《代码中的软件工程》 软件工程: 《代码中的软件工程》一书的配套ppt和源代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值