高级软件工程学习总结

您所在的位置:网站首页 mask软件有什么用 高级软件工程学习总结

高级软件工程学习总结

2023-07-09 23:07| 来源: 网络整理| 查看: 265

高级软件工程学习总结 一、工欲善其事必先利其器

前几次课介绍了几个程序员的必备工具和技能:VS Code、Git、Vim以及正则表达式。

VS Code是我最喜欢的代码编辑器,它有许多优点,如安装想要的插件便能丰富功能或更改样式、相比VS Studio等IDE占用小等。为了方便出门在外在手机或平板上编程,我以前还搭建过远程开发环境code server,使用起来非常流畅。学习这门课程后,我对其操作更加熟练,对其核心的设计思想(LSP和DAP)也有了深入了解。

Git作为最热门的分布式版本控制系统,我之前只有简单的使用过,通过这门课我学到了团队开发中Git的常见使用流程:

获取最新的代码到本地代码库 git clone 远程仓库或git pull

为自己的工作创建分支,该分支只负责单一功能模块或代码模块git checkout -b mybranch

在该分支上完成开发工作 git add FILES git commit -m "commit log"

切换到主分支并合并 git checkout master git pull git merge --no-ff mybranch

推送到远程分支git push

几乎所有的Unix-Like系统都会预装Vi/Vim文本编辑器,在实际开发中我常常会用Vi/Vim来修改部署在服务器上的项目配置文件。Vi/Vim有一定的学习成本,但熟练快捷键后代码编辑效率能提高许多。

正则表达式是对字符串操作的一种逻辑公式,在多种编程语言中都有应用。学习这门课程后,我能编写出常见的正则表达式来搜索/修改文本。在空闲时间我还回顾了自动机的相关知识,来方便自己理解比较复杂的正则表达式。

二、工程化编程实战——代码中的软件工程

这一部分老师通过一个实际的menu项目,向我们展示了优秀的代码风格、注释风格是怎样的。我之前也有了解过大公司的编码规范(如阿里、谷歌),通过这门课程我深深体会到了优秀的代码规范在大型项目中的必要性。在VS Code中我也安装了一些相关插件,在日常开发中去适应学习优秀的编码规范。

同时我们还在作业中亲自完成了menu项目的一步步迭代,掌握了编写高质量代码的常用方法:

通过控制结构简化代码

通过数据结构简化代码

一定要有错误处理

注意性能优先的代价

拒绝修修补补,要不断重构代码

还学到了软件设计中的常见思想,如模块化、可重用、接口,回调函数等。

三、从需求分析到软件设计

在课上,老师以数据库MongoDB为例,向我们讲解了从需求分析到软件设计中的常见概念和方法:

需求的类型

功能需求:根据所需的活动描述所需的行为

质量需求或非功能需求:描述软件必须具备的一些质量特性

设计约束:设计决策,如选择平台或接口组件

过程类型:对可用于构建系统的技术或资源的限制

需求分析的两类基本方法

原型化方法整理出用户接口方式

建模的方法给出有关事件发生顺序或活动同步约束的问题,在逻辑上形成模型来整顿繁杂的需求细节

用例的四个必要条件

是一个业务过程

由参与者触发(参与者可以是用户或模块)

为特定的参与者完成一个特定的业务

终止于某个特定参与者

用例建模的步骤

抽象用例

高层用例

对用例进行分类,描述用例与用例、用例与参与者之间的上下文关系

拓展用例

过程模型

瀑布模型

瀑布模型是最基本的过程模型,它把整个软件过程按顺序划分成了需求、设计、编码、测试和部署五个阶段。瀑布模型的根本特点是按顺序划分阶段。

统一过程

统一过程(Unified Process)的核心要义是用例驱动、以架构为中心、增量且迭代的过程

敏捷统一过程(Agile Unified Process)进一步将软件过程中每一次迭代过程划分为计划阶段和增量阶段。

四、软件科学基础概论

这部分主要包含软件的定义和结构、设计模式以及常见软件架构

软件是什么

基本构成元素:对象、函数和变量/常量、指令和操作数

基本结构:顺序结构、分支结构、循环结构、函数调用、继承和对象组合

特殊机制:回调函数、多态、异步调用、匿名函数

设计模式

设计模式的本质是面向对象设计原则的实际运用总结出的经验模型。彰显对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。

常见设计模式:

创建型模式:单例模式、原型模式、建造者模式等

结构型模式:代理模式、适配器模式、桥接模式、装饰模式、外观模式等

行为型模式:模板方法模式、策略模式、责任链模式、观察者模式

课上老师通过讲解Vue中动态绑定的原理——观察者模式,来说明在特定场景下采用设计模式的优势。

设计原则

开闭原则

Liskov替换原则

依赖倒置原则

单一职责原则

迪米特原则

合成复用原则

常见软件架构

MVC架构

MVVM架构

五、软件危机和软件过程

在这一部分,老师先是介绍了软件危机的由来和银弹问题:

在10年内无法找到解决软件危机的杀手锏(银弹)。 软件中的根本困难,即软件概念结构(conceptual structure)的复杂性,无法达成软件概念的完整性 和一致性,自然无法从根本上解决软件危机带来的困境。

而后介绍了为了解决软件危机,人们不断提出新的软件工程方法,使得软件组件简单易用并组合成大型软件。

软件生命周期

分析阶段 需求分析和定义,形成业务概念原型

设计阶段 软件架构设计和软件详细设计,又称“分析与设计”和“设计与实现”。

实现阶段 编码和测试,测试又涉及到单元测试、集成测试、系统测试等。

交付阶段 部署、交付测试和用户培训等。

维护阶段 软件生命周期中最长的阶段

常见过程模型

瀑布模型

V模型

螺旋模型

敏捷方法宣言

个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 高于 合同谈判 响应变化 高于 遵循计划 尽管右项有其价值,我们更重视左项的价值

DevOps

开发、技术运营和质量保障三者的交集,可看成是敏捷方法从技术开发领域扩展到业务运维领域实现业务上全周期的敏捷性。重构作为编程的一种基本方法得到业界的普遍认同和采纳;微服务结构则有利于在更高的设计抽象层级上对软件进行重构;敏捷方法则进一步有利于在软件开发过程层面进行迭代和重构;DevOps则终极性地在业务、运维和效益层面进行快速迭代重构。

现在敏捷方法和DevOps在企业中越来越流行,我在找实习的过程中也发现许多企业有专门的DevOps平台开发职位,通过这门课的学习我也得到了许多相关实习岗位的面试机会。

参考资料 《代码中的软件工程》

学号 316



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3