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

news2024/9/25 9:32:19

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

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

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

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

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

(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.coloradmin.cn/o/838908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flink1.17 eventWindow不要配置processTrigger

理论上可以eventtime processtime混用,但是下面代码测试发现bug,输入一条数据会一直输出. flink github无法提bug/问题. apache jira账户新建后竟然flink又需要一个账户,放弃 bug复现操作 idea运行代码后 往source kafka发送一条数据 a,1,1690304400000 可以看到无限输出…

.net 6 efcore一个model映射到多张表(非使用IEntityTypeConfiguration)

现在有两张表,结构一模一样,我又不想创建两个一模一样的model,就想一个model映射到两张表 废话不多说直接上代码 安装依赖包 创建model namespace oneModelMultiTable.Model {public class Test{public int id { get; set; }public string…

【C语言进阶】数据的存储----浮点型篇

🍁 博客主页:江池俊的博客 💫收录专栏:C语言—探索高效编程的基石 💻 其他专栏:数据结构探索 ​💡代码仓库:江池俊的代码仓库 🎪 社区:GeekHub 🍁 如果觉得博…

部分常用CSS样式

目录 1.字体样式 2.文本样式 3.鼠标样式 cursor 4.背景样式 5.列表样式 6.CSS伪类 7.盒子模型 1.字体样式 font-family 字体类型:隶书” “楷体” font-size 字体大小:像素px font-weight 字体粗细:bold 定义粗体字…

8月5日上课内容 nginx的优化和防盗链

全部都是面试题 nginx的优化和防盗链 重点就是优化: 每一个点都是面试题,非常重要,都是面试题 1、隐藏版本号(重点,一定要会) 备份 cp nginx.conf nginx.conf.bak.2023.0805 方法一:修改配…

拦截器在SpringBoot中使用,HandlerInterceptor,WebMvcConfigurer

拦截器在Controller之前执行。 用于权限校验,日志记录,性能监控 在SpringBoot中使用 创建拦截器类:首先,创建一个Java类来实现拦截器逻辑。拦截器类应该实现Spring提供的HandlerInterceptor接口。实现拦截器方法:拦…

探索PostgreSQL的新功能:最新版本更新解析

PostgreSQL作为一种强大而开源的关系型数据库管理系统,不断在不断进化和改进。每一次的版本更新都带来了更多功能和改进,让用户在处理大规模数据和复杂查询时体验更好的性能和功能。在本文中,我们将深入探索PostgreSQL的最新版本更新&#xf…

进程上下文切换以及应用场景

各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。 在详细说进程上下文切换前,我们先来看看 CPU 上下文切换 大…

VX-API-Gateway开源网关技术的使用记录

VX-API-Gateway开源网关技术的使用记录 官网地址 https://mirren.gitee.io/vx-api-gateway-doc/ VX-API-Gateway(以下称为VX-API)是基于Vert.x (java)开发的 API网关, 是一个分布式、全异步、高性能、可扩展、轻量级的可视化配置的API网关服务官网下载程序zip包 访问 https:/…

深入浅出 Typescript

TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript …

AtcoderABC226场

A - Round decimalsA - Round decimals 题目大意 给定一个实数X,它最多可以使用三位小数表示,而且X的小数点后有三位小数。将X四舍五入到最接近的整数并打印结果。 思路分析 可以使用round函数进行四舍五入 知识点 round(x) 是一个用来对数字进行四…

SpringIoc-个人学习笔记

Spring的Ioc、DI、AOP思想 Ioc Ioc思想:Inversion of Control,控制反转,在创建Bean的权利反转给第三方 DI DI思想:Dependency Injection,依赖注入,强调Bean之间的关系,这种关系由第三方负责去设…

Redis 报错 RedisConnectionException: Unable to connect to x.x.x.x:6379

文章目录 Redis报错类型可能解决方案 Redis报错类型 org.springframework.data.redis.connection. spingboot调用redis出错 PoolException: Could not get a resource from the pool; 连接池异常:无法从池中获取资源; nested exception is io.lettuce.core. 嵌套异常 RedisConn…

针对高可靠性和高性能优化的1200V碳化硅沟道MOSFET

目录 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…

FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法

1、之前写过一篇关于ZYNQ系列通用的PS侧与PL侧通过AXI-HP通道的文档,下面是链接。 FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)_zcu106调试_发光的沙子的博客-CSDN博客大家好,今天给大家带来的内容是&#xff0…

获取k8s scale资源对象的命令

kubectl get --raw /apis/<apiGroup>/<apiVersion>/namespaces/<namespaceName>/<resourceKind>/<resourceName>/scale 说明&#xff1a;scale资源对象用来水平扩展k8s资源对象的副本数&#xff0c;它是作为一种k8s资源对象的子资源存在&#xf…

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in...错误解决

在创建函数的时候报错如下&#xff1a; 解决&#xff1a; 设置如下参数即可 SET GLOBAL log_bin_trust_function_creatorsTRUE;

[CKA]考试之PersistentVolumeClaims

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 创建一个名字为pv-volume的pvc&#xff0c;指定storageClass为csi-hostpath-…

面试热题(打家窃舍)

一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的非负…

宋浩概率论笔记(三)随机向量/二维随机变量

第三更&#xff1a;本章的内容最重要的在于概念的理解与抽象&#xff0c;二重积分通常情况下不会考得很难。此外&#xff0c;本次暂且忽略【二维连续型随机变量函数的分布】这一章节&#xff0c;非常抽象且难度较高&#xff0c;之后有时间再更新。