高级软件工程总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


概述

学习这门课之前,觉得这门课可能都是一些基础理论,学起来也用不到,就那种食之无味、弃之可惜的感觉。实际学习过后,反而觉得内容很有用。第一章《工欲善其事必先利其器》里面的内容很具体,而且适用性很广泛。第二章《工程中的软件工程》从具体的menu代码讲解,将代码中的模块化设计以及重要的接口思想,讲解的很清楚,而且通过具体的例子让我深入的了解这些思想,让我通过代码了解这些思想如何实现。后面的内容也是重点描述工程化的思想,使提高开发的效率,降低开发的成本等。以前学习的编程思想还是局限于算法的复杂度,较少考虑代码结构、通用性、可复用性、可读性等。但是如果要作出一个大的软件工程,想要写出高质量的代码,软件工程思想必不可少。

一、工欲善其事必先利其器

1.Vistual Studio Code

包含了VScode的轻量级开发的思想,以及VScode的常用命令
常用命令如下:
在这里插入图片描述

2.git

git常用命令在这里插入图片描述

3.vim

vim三种模式:命令模式、输入模式、底线命令模式
常用命令如下:
在这里插入图片描述

4.正则表达式

主要方式如下:

贪婪匹配:找到符合正则表达式的字符串的最长可能部分。
懒惰匹配:找到符合正则表达式模式的字符串的最小可能部分。
比如使用.可以匹配任意字符,可以通过.?开启严格懒惰模式

二、工程中的软件工程

1.模块化软件设计

主要内容如下:

模块化:是在软件系统设计时保持系统内各部分相对独立,以便每一个部分可以被独立的进行设计和开发。这个做法背后的基本原理是关注点的分离。

耦合度:指软件模块之间的依赖程度,一般可以分为紧密耦合、松散耦合和无耦合

内聚度:是指一个软件模块内部各种元素之间互相依赖的紧密程度

2.软件设计中的一些基本方法

KISS(keep it simple&stupid)原则:

一行代码只做一件事

一个代码块只做一件事

一个函数只做一件事

一个软件模块制作一件事

3.接口的基本概念

接口规格包含的五个基本要素:

1.接口的目的

2.接口使用前所需要满足的条件,一般称为前置条件或假定条件

3.使用接口的双方遵守的协议规范

4.接口使用之后的效果,一般称为后置条件

5.接口所隐含的质量属性

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

1.用例

用例的核心概念中首先它是一个业务过程,经过逻辑整理抽象出来一个业务过程,这是用例的实质。

用例的三个基本要素:

1.一个用例应该由业务领域内的某个参与者所触发
2.用例必须能为特点的参与者完成一个特定的业务任务
3.一个用例必须终止于某个特定参与者,也就是特定参与者明确地或者隐含地得到了业务任务完成的结果

2.用例建模的基本步骤

1.从需求表述中找出用例,往往是动名词短语表示的抽象用例

2.描述用例开始和结束的状态,用TUCBW和TUCEW表示的高层用例

3.对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图。

4.进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例。

3.业务四个必要条件:

1.它是不是一个业务过程
2.它是不是由某个参与者触发开始
3.它是不是显式地或隐式地终止于某个参与者
4.它是不是为某个参与者完成了有用的业务工作

四、软件科学基础理论

1.软件的基本结构

顺序结构:最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

分支结构:是在顺序结构的基础上,利用影响标志寄存器上标志位的质量和跳转质量组合起来借助于标志寄存器或特定寄存器暂存条件状态实现分支结构。

循环结构:是顺序结构和分支结构的组合起来形成的更为复杂的程序结构,是指在程序中需要反复执行某个功能而设置的一种程序结构。

2.回调函数

回调函数是一个面向过程的概念,是代码执行过程的一种特殊流程。回调函数就是一个通过函数指针调用的函数。把函数的指针(地址)作为参数传递给另一个函数,当这个指针调用其所指向的函数时,就称这是回调函数。

3.设计模式

单例模式:某个类智能生产一个实例,该类提供了一个全局访问点供外部获取该实例,典型的应用如数据库实例。

原型模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新势力,原型模式的应用场景非常多,几乎所有通过复制的方式创建新实例的场景都有原型模式。

建造者模式:讲将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。主要应用于复杂对象中的各部分的建造顺序相对固定或者创建复杂对象的算法独立于各组成部分。

代理模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。

等等

五、软件危机和软件过程

1.银弹不存在

软件危机的根本问题:软件概念结构的复杂性,无法达成软件概念的完整性和一致性,自然无法从根本上解决软件危机带来的困境。

2.团队

团队的基本要素

团队规模

团队的凝聚力

团队协作的基本条件

3.敏捷宣言

个体和互动高于流程和工具

工作的软件高于详尽的文档

客户合作高于合同谈判

响应变化高于遵循计划

六、总结

首先,感谢孟老师的辛勤付出。在这个学期,我认真的跟着孟宁老师学习了《高级软件工程》这门课,受益匪浅。对我有很大的启发和帮助。孟老师的课程风格鲜明,幽默风趣。课堂上的各种理论以及哲学思想分享也拓宽了我的视野,加深了我对整个工程化思想的理解。不过软件工程是一门实践性很强的学科,大量的实践才能写出高质量的代码,所以后续的学习还要多多写代码,参与大项目的实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值