软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6741 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

学习攻略 | 怎样学好软件工程?

宝玉 2019-02-21
你好,我是宝玉。
关于什么是软件工程和为什么要学软件工程,我在开篇词中已经简单介绍过了。总结来说:软件工程是软件行业知识体系的内核。无论你想走技术路线,还是转向做管理,想要走的更快更稳,那就绕不开软件工程。
在正式开始学习前,我们先来聊聊应该如何学习软件工程。你要先知道,软件工程学科的“知识树”结构是什么样的,才能更好地理解每个知识点和彼此间的联系。

软件工程知识架构全景图

首先你要明确,当我们谈软件工程学时,究竟在讲些什么呢?
在《软件工程——实践者的研究方法》这本经典软件工程教材中,作者 Roger S.Pressman 画了一张图,高度概括了整个软件工程的核心知识。
由图可见,“质量焦点”在最底层,这不难理解软件工程是为了应对软件危机诞生的学科,其目标就是为了要聚焦于质量,构建和维护高质量的软件。可以说,聚焦于质量就是软件工程的基石。
那“过程”指的是什么呢?
要构建高质量软件,则要解决软件过程中的混乱,将软件开发过程中的沟通、计划、建模、构建和部署等活动有效地组织起来。而软件过程,就是在软件项目的生命周期内,也就是软件从诞生到结束这期间,在开发与构建系统时要遵循的步骤。
有两种过程框架你一定经常听到,那就是瀑布模型和敏捷开发。这是在软件工程多年的发展中,逐步形成的两种主流的软件过程指导框架。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(19)

  • David Mao
    老师总结的器、术、道、传道四重境界很棒,结合自己的工作实践深有感悟。我是做软件测试的,最近在自学python开发,希望老师给一些建议,感谢。

    作者回复: 看到你在学Python,不知道你所在团队自动化测试方面做的如何,我觉得这方面其实大有可为,可以极大的提高测试效率。

    另外多学习一些软件工程知识,将来如果要兼顾或转型项目管理,也是不错的发展方向。

    2019-02-21
    11
  • alva_xu
    还有一本机械工业出版社出的《软件工程》,作者是Ian Sommerville,也特别好。已经出了十多版了吧。

    作者回复: 软件工程的书确实还有很多不错的,很遗憾没能一一例举,感谢推荐👍

    2019-02-21
    6
  • 彭燕林
    原版是英文参考书籍能不能介绍一下英文信息,方便查找。

    作者回复: 你是说《软件工程——实践者的研究方法》吗?
    Software Engineering – A Practitioner’s Approach
    作者是 Roger S. Pressman

    如果专栏内容涉及英文专业术语的,一般会注明英文。如果对具体某个术语的英语有疑问的,可以留言,我会补充说明。

    2019-02-21
    5
  • 一路向北
    老师说的学中教,教中学的4重境界,非常形象,容易让人领会。
    实践的过程中,最难的应该是悟道了,期望在后面的学习中能够多悟道。这方面也是需要自己独立的深入思考才能产生的结果。

    作者回复: 是的,这是个漫长的过程。

    “悟道”最重要的不是结果,而是这个实践和思考的过程。多实践多思考,长期看自然就会有很多收获的。

    尤其是当你尝试去“传道”的时候,你可能会发现你突然“悟道”了。

    2019-02-21
    2
  • cxy
    老师,那思维导图中的工具分类,不知道是否可以把常用的工作具软件名加进去,那样可以我们让有目的地去细化学习。

    作者回复: 我在后面的文章中会有各个阶段常用工具的介绍,因为还在整理中,等到结束后会考虑重新编辑加上名字。

    2019-02-21
    2
  • javaadu
    听老师的话,已经整理一篇学习笔记。也分享下自己关于学习的心得:
    1. 知行合一:理论与实践相结合,在软件开发中使用工具的时候,要及时总结使用工具的技巧;在经历过一个项目后,要总结这个过程中对的得失经验。然后将这些经验和技巧应用到下一个项目中。
    2. 持之以恒:想要做到卓越,不可能一蹴而就,因此要持之以恒得践行知行合一。
    3. 乐于分享:将自己的心得体会讲给别人,可以用博客、短视频、内部培训的方式,在讲给别人的过程中,也是对知识的重新梳理和查缺补漏。

    作者回复: 赞👍
    改变,从改变习惯开始

    2019-02-21
    2
  • 幻想
    关于软件工程的书籍,我推荐一本 周爱民先生的〖大道至简〗,讲的也很不错,作者思考的比较深,可以作为学习软件工程的参考书籍之一。

    作者回复: 是的,写得很好,🙏感谢推荐

    2019-10-06
    1
  • 打工皇帝
    聚焦质量 清楚过程 知道方法 会用工具
    2019-09-17
    1
  • 廖师虎
    CRUD是择指增删改查,基于此模式很难做到可审计,可溯源,只有临时的状态,不可重放恢复

    作者回复: 如果要做到可信,其实和CRUD不矛盾,如果你想可审计、可溯源、可重访,可以在架构层面解决。

    比如说基于分层架构,你添加一条记录,并不是直接写一条SQL,而是调用数据访问层的方法,这个方法会帮助你增加相应的日志、审计记录。这样从编程角度看,还是CRUD,但是从结果上来说,已经具备你的要求。包括以后如果要增加更多审计逻辑,只要修改你响应的架构,对于你业务层的代码几乎没什么影响。

    2019-04-14
    1
  • rocedu
    过程分为瀑布模型和敏捷开发两类,合适吗?

    作者回复: 从大类上来看,我觉得没什么问题。当然也想听听老师的意见。

    2019-03-27
    1
  • E
    请问老师,软件开发的过程和方法之间的关系是什么?

    作者回复: 软件开发过程就是指你开发软件时的整个过程的开发模式,比如说瀑布模型还是敏捷开发。

    选择了开发过程,你就需要有具体方法来执行。

    比如你选择了瀑布模型,整个软件开发过程就是按照瀑布模型的分阶段来进行,对应的方法就是瀑布模型中的方法,例如需求分析、架构设计;如果你选择了敏捷开发,则整个开发过程就是一种敏捷迭代方式,后面的方法对应的就是敏捷开发的一套方法体系,例如Scrum、用户故事、持续集成等。

    2019-03-23
    1
  • 梁中华
    不知道怎么搞得,现在都不提RUP 了,当年可是很火的,以用例和架构驱动的软件开发过程,大型软件开发中还是比较适合的。

    作者回复: RUP是很好的模式,但大型软件开发项目毕竟相对少,而且RUP的实施也需要专业的支持。不像瀑布模型那样简单易行,也不像敏捷那样适用面广,遍地开花。

    2019-03-17
    1
  • gfkdcadet
    买了课程相关的全部6本参考书籍,也算是全身心投入了!

    作者回复: 赞,有疑惑的地方也欢迎留言提问:)

    2019-03-02
    1
  • Lonely绿豆蛙
    瓜大软微学弟前来报道~

    作者回复: 学弟好!我们那会还叫软件学院呢

    2019-02-22
    1
  • 日拱一卒
    1. 做中学和学中做,用器->学术->悟道->传道,提炼得挺好的。
    2. 主动分享,教学相长。
    3. 推荐的书目,看上去大部分都是比较老的,算是经典了。例如《走出软件作坊》,我记得是2010年左右买的,《构建之法》大概是4、5年前买的。
    2019-12-01
  • smlt
    清华出版社,张海藩,《软件工程导论》是不是太理论了?

    作者回复: 感谢推荐!
    有时候一些理论性强的书,有过一些经验后,对照着看看也挺好的。

    2019-10-26
  • Mr.Chen
    道是本质,好比学习的有效动力来自兴趣,这是被人总结出也是被认可的道,根据此道形成一套方法论,将学习过程按此道执行下去,就有了学习工程。😂

    作者回复: 赞!有意思的推论👍

    2019-07-10
  • Owen
    对软件工程的思维导图里面的工具感兴趣,平时不知道用哪个好,后续都会按导图一一介绍吗?

    作者回复: 有一部分有介绍,有些因为篇幅限制所以没有介绍,如果你有特别想了解的软件,也欢迎直接留言。

    2019-05-05
  • 梁中华
    有本老书叫统一软件开发过程,当年也是很经典的

    作者回复: 谢谢推荐🙏

    2019-03-16
收起评论
19
返回
顶部