软件工程专业应该学什么?

昨天,我朋友的孩子报考了软件工程专业,问我软件工程到底学啥?所以我给他开列了一个书单。

现在高校开了一堆花名头的专业:

偏技术类:云计算、大数据、人工智能、物联网

偏应用类:电子商务、信息管理

但我个人感觉,会编程语言、会使用开源框架的人一堆,但是中国太缺系统分析、系统设计、系统架构的人才了,而且这些课程我个人认为应该是软件工程的核心课程,但是好像我国高校的软件工程专业也不教这些东西。

(1)

软件工程也是工程。

一想到工程,我们就想到:

规划、勘察、设计、试验验证、评审

标准规范、注册认证

建造、预构件、大型施工工具

质量监理质量保证、生产安全监管

项目进度管理/成本管理/变更管理、工程文档管理

(2)系统分析

需求分析、系统分析这块我一直没学过什么好书,我自己上大学时考系统分析员也没考通过。

我在需求分析这方面看过的书,只有:《用户故事》。

我在系统分析这方面看过的书,我推荐:《分析模式:可复用对象模型》。其实这本书命名为《分析模式》可能会更好,不用带副标题。

如果说分析的方法论,我感觉推荐一本:《金字塔原理》。

(3)系统设计

系统设计,我特别注重层与层、块与块的关系。这个关系如何既解耦又关联,这是需要技巧的。所以我推荐两本书:《领域驱动设计:软件核心复杂性应对之道》、《设计模式》。

设计标准符号:《UML精粹》。还有一本国人写的《大象:Thinking in UML》也非常好。

(4)架构设计

关于架构,这两本挺好:《企业应用架构模式》《架构整洁之道》

软件架构风格,这些年从组件到SOA服务到微服务,所以我推荐:

面向对象时代:我没看见过好书。另外,大师Booch的《面向对象分析与设计》,我个人感觉,不是一本关于使用面向对象方法进行架构设计方面的好书。

组件时代:《COM本质论》《J2EE Development without EJB》

SOA时代:《SOA核心技术及应用》

微服务时代:《服务架构设计模式》

(5)软件开发

关于编程语言、编程框架的书汗牛充栋,但是站在软件工程角度看软件开发实现的书就很少了。

我推荐几本:

《测试驱动开发》

《重构》

《代码整洁之道》

《极限编程》

(6)质量保证

本来软件测试、质量保证,这是软件工程非常重要的组成部分。可惜,我一本好书也没见过。可见大家对软件质量的事实的不重视。

(7)工具

说起软件开发的各种工具,大家对开发IDE、框架、前端UI组件、运行中间件、数据库如数家珍。站在软件工程的角度,大家对各种CI持续集成、CD持续发布、DevOps工具也不太陌生。

也许是我孤陋寡闻,我个人在这方面看过的唯一一本感觉好的书就是:《持续交付:发布可靠软件的系统方法》。

(8)过程管理

软件工程管理,如果大家想从整体框架概要上学习,我首推《TOGAF标准手册》。不知道啥原因,好多人把TOGAF当做软件架构方法来看,我个人感觉不妥。如果大家真要做软件架构,建议还是看看我上述在系统架构设计一节中推荐的书,那些知识才能让你的软件真正具有架构性。你看完TOGAF你也不会让你的软件具有架构性。很多企业IT决策人特别喜欢引入TOGAF,以为TOGAF学习了使用了就能让软件有架构性,这真...。

综合类的我推荐《代码大全》,实践类的我推荐《微软的秘密》。

论项目管理图书,我推荐《PMBOK指南》。我是强烈推荐在软件研发过程中引入专职的项目经理的,不要让产品经理、开发部门经理或开发Leader担任项目管理的职责,这是大大的误区。

《人月神话》是软件工程类非常知名的书,不过我不推荐阅读。

大家一想到软件工程就想到项目周期非常长、参与人数非常多、项目流程非常重。我个人在软件研发领域从业这么多年,给我一个感受就是:各专业部门各目标不一致、共享信息传递信息效率慢/信息失真变形。所以我一直推崇小团队、精益小团队、全职能团队、外科手术医生式团队。我推荐给大家一本书:《SCRUM敏捷软件开发》。

另外我个人不太喜欢敏捷Agile这个表达,我感觉这个词让大家产生了误解,我更喜欢用精益Lean这个词,就是现在经常讲到的市场-产品匹配、需求-实现匹配。这几年随着华为国产化崛起,大家一窝蜂学华为,所以IPD这个很古老的词汇和方法又在中国IT业界流行了。大家一想到IPD来自IBM就觉得这个方法很笨重。不过我倒推荐两本书:《IPD华为研发之道》《IPD重构产品研发》。这两本书都是离职的华为人写的,但是实际上写的也不是IPD更不是IBM的那套IPD,只不过打的是IPD的名头,不过内容蛮鲜活的,市场-产品匹配、需求-实现匹配、市场-需求-产品-实现各部门各岗位如何串联。

082b3cec3a0075f406dbc45f0b162568.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/77725.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL|查看事务加锁情况

文章目录 使用information_schema数据库中的表获取锁信息INNODB_TRXINNODB_LOCKSINNODB_LOCK_WAITS 使用SHOW ENGINE INNODB STATUS获取信息补充 使用information_schema数据库中的表获取锁信息 在information_schema数据库中,有几个与事务和锁紧密相关的表 INNOD…

3个命令定位CPU飙高

top 指令找出消耗CPU最厉害的那个进程的pid top -H -p 进程pid 找出耗用CPU资源最多的线程pid printf ‘0x%x\n’ 线程pid 将线程pid转换为16进制 结合jstack 找出哪个代码有问题 jstack 进程pid | grep 16进制的线程pid -A 多少行日志 jstack 进程pid | grep 16进制的线程…

Source Insight_突出显示对选定字符的引用

1、突出显示对选定字符的引用 在Source Insight中,当我们选中一个函数或者变量的时候,关于它的所有引用地方都高亮显示,想要实现效果如下。 2、配置方法 (1)点击"Options"→“File Type options...” (2)勾选“Highlight referenc…

Python - 【socket】 客户端client重连处理简单示例Demo(一)

一. 前言 在Python中,使用socket进行网络通信时,如果连接断开,可以通过以下步骤实现重连处理 二. 示例代码 1. 定义一个函数,用于建立socket连接 import socketdef connect_socket(host, port):while True:try:# 建立socket连…

CMake:检测python解释器和python库

CMake:检测python解释器和python库 导言检测python解释器CMakeLists.txt输出附录 检测python库项目结构CMakeLists.txt相关源码附录 导言 python是一种非常流行的语言。许多项目用python编写的工具,从而将主程序和库打包在一起,或者在配置或构建过程中使…

当服务器域名出现解析错误的问题该怎么办?

​  域名解析是互联网用户接收他们正在寻找的域的地址的过程。更准确地说,域名解析是人们在浏览器中输入时使用的域名与网站IP地址之间的转换过程。您需要站点的 IP 地址才能知道它所在的位置并加载它。但,在这个过程中,可能会出现多种因素…

小白解密ChatGPT大模型训练;Meta开源生成式AI工具AudioCraft

🦉 AI新闻 🚀 Meta开源生成式AI工具AudioCraft,帮助用户创作音乐和音频 摘要:美国公司Meta开源了一款名为AudioCraft的生成式AI工具,可以通过文本提示生成音乐和音频。该工具包含三个核心组件:MusicGen用…

Win32 EditControl多行文本框自动换行,并在添加新行时自动将光标移到末尾

【文本框属性设置】 设为多行文本框:MultilineTrue 允许按回车键换行:Want ReturnTrue 自动换行:Auto HScrollFalse 在最后一行按回车键,自动向上滚动:Auto VScrollTrue 显示垂直滚动条:Vertical ScrollTru…

maven的下载与安装

文章目录 1 官网下载地址2 设置环境变量3 设置仓库地址4 添加阿里云的中央镜像 1 官网下载地址 https://maven.apache.org/ 下载 2 设置环境变量 MAVEN_HOME PATH mvn -v验证 3 设置仓库地址 仓库地址 4 添加阿里云的中央镜像 阿里云中央镜像

【探索Linux】—— 步步学习强大的命令行工具 P.1(Linux简介)

目录 前言 一、Linux简介 二、linux的不同发行版本 三、Linux的开源性质 四、Linux的特点 五、Linux代码演示(仅供参考) 总结 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C的一些知识&#xff…

Redis

Redis进阶 讨论问题: 数据存放的位置有哪些(磁盘,内存,数据库) 为什么做缓存? 速度:内存 >10 倍固态硬盘 > 10 倍机械硬盘 一、SpringBoot操作Redis 1、 添加redis依赖 spring Boo…

Java源码规则引擎:jvs-rules 8月新增功能介绍

JVS-rules是JAVA语言下开发的规则引擎,是jvs企业级数字化解决方案中的重要配置化工具,核心解决业务判断的配置化,常见的使用场景:金融信贷风控判断、商品优惠折扣计算、对员工考核评分等各种变化的规则判断情景。 8月是收获的季节…

JVM入门到精通

一、JVM概念 1.1、什么是JVM Java Virtual Machine:Java虚拟机,用来保证Java语言跨平台 Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域 Java虚拟机与Java语言并没有必然…

Pytorch入门学习——快速搭建神经网络、优化器、梯度计算

我的代码可以在我的Github找到 GIthub地址 https://github.com/QinghongShao-sqh/Pytorch_Study 因为最近有同学问我如何Nerf入门,这里就简单给出一些我的建议: (1)基本的pytorch,机器学习,深度学习知识&a…

ChatGPT“侵入”校园,教学评价体制受冲击,需作出调整

北密歇根大学的教授奥曼在学生作业中发现了一篇关于世界宗教的“完美论文”。“这篇文章写得比大多数学生都要好......好到不符合我对学生的预期!”他去问ChatGPT:“这是你写的吗?”ChatGPT回答:“99.9%的概率是的。” ChatGPT“侵…

HTTP——八、确认访问用户身份的认证

HTTP 一、何为认证二、BASIC认证BASIC认证的认证步骤 三、DIGEST认证DIGEST认证的认证步骤 四、SSL客户端认证1、SSL 客户端认证的认证步骤2、SSL 客户端认证采用双因素认证3、SSL 客户端认证必要的费用 五、基于表单认证1、认证多半为基于表单认证2、Session 管理及 Cookie 应…

ORB算法在opencv中实现方法

在OPenCV中实现ORB算法,使用的是: 1.实例化ORB orb cv.xfeatures2d.orb_create(nfeatures)参数: nfeatures: 特征点的最大数量 2.利用orb.detectAndCompute()检测关键点并计算 kp,des orb.detectAndCompute(gray,None)参数&#xff1a…

数据结构---B树

目录标题 B-树的由来B-树的规则和原理B-树的插入分析B-树的插入实现准备工作find函数insert中序遍历 B-树的性能测试B-树的删除B树B树的元素插入B*树的介绍 B-树的由来 在前面的学习过程中,我们见过很多搜索结构比比如说顺序查找,二分查找,搜…

一文学透设计模式——抽象工厂模式

创建者模式 抽象工厂模式 概念 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这是很多地方对于抽象工厂模式的描述,说实话感觉不是特别好懂。…

阿里云二级域名配置

阿里云二级域名配置 首先需要进入阿里云控制台的域名管理 1.选择域名点击解析 2.添加记录 3.选择A类型 4.主机记录设置【可以aa.bb或者aa.bb.cc】 到时候会变成:aa.bb.***.com 5.解析请求来源设置为默认 6.记录值 设置为要解析的服务器的ip地址 7.TTL 默认即…