浙江建设职业技术学院门户网站,网站建设在哪些,国内哪里在搞建设,淮安做网站公司《代码中的软件工程》阅读总结回顾
参考资料《代码中的软件工程》https://gitee.com/mengning997/se
终于系统性的阅读完了这本《代码中的软件工程》#xff0c;受益匪浅。我本科时也上过软件工程这门课程#xff0c;但是学到的东西诚然是没有在这本书中学到的多的#xf…《代码中的软件工程》阅读总结回顾
参考资料《代码中的软件工程》https://gitee.com/mengning997/se
终于系统性的阅读完了这本《代码中的软件工程》受益匪浅。我本科时也上过软件工程这门课程但是学到的东西诚然是没有在这本书中学到的多的这本书的结构非常清晰读起来只感觉逻辑上很顺畅下面我将总结一些我觉得记忆比较深刻的东西。
VSCODE中的快捷键
在本节中我接触到了很多之前并不熟悉的快捷键有了快捷键的帮助在写代码的时候能大大提升自己的效率。 打开文件夹 Ctrl/⌘O和关闭文件夹工作区 Ctrl/⌘K F 新建文件Ctrl/⌘N、关闭文件Ctrl/⌘W、编辑文件和保存文件Ctrl/⌘S 文件内搜索Ctrl/⌘F 关闭所有文件Ctrl/⌘K W 关闭已保存的文件Ctrl/⌘K U Ctrl/用于单行代码注释和取消注释AltShiftA用于代码块注释和取消注释。 Ctrl/⌘ShiftE 文件资源管理器 CtrlShiftG 源代码管理 Ctrl/⌘ShiftF 跨文件搜索 Ctrl/⌘ShiftD 启动和调试 Ctrl/⌘ShiftP查找并运行所有命令 Ctrl/⌘ShiftM查看错误和警告 Ctrl/⌘ShiftX 管理扩展插件 Ctrl切换集成终端 Git的学习
git init git clone git status git add git reset HEAD FILE git commit git reset --hard id git merge git rebase origin/master git rebase -I HEAD~xx git merge --no-ff xxx git checkout -b xxx git checkout xxx git branch git log gir reflog git pull git push 在其中我记忆非常深刻的是git merge和git merge --no-ff的区别。
正则表达式和vim
vim中/表示搜索 正则表达式中我加深了对四大通配符的理解以及更深入的学习了捕获组的用法通过正则表达式我们可以更方便强大地在文本中检索和替换。 同时在编写处理代码的脚本时正则表达式也有着很深的应用。例如python中的re模块。
^表示字符串的开头。
$表示字符串的结尾。
?表示懒惰匹配这些是我之前学习但是忘了的地方通过本书中的例子我有了更深刻的印象。
代码规范与代码风格
编写高质量代码的方法有
通过控制结构简化代码。 通过数据结构简化代码。 一定要有错误处理在代码可能遇到错误情况的时候要考虑到并且及时assert或者抛出。 性能优先的策略背后有着隐藏的代价。 拒绝修修补补及时重构代码。
其中需要注意的是性能优先的策略背后有着隐藏的代价 1开发时间上的代价性能优先的策略会让开发人员使用更多的时间进行开发运用在代码上的人力成本可能远远超过对资源的节约。 2性能测试上的代价性能优先的代码可能会更加难以测试会投入大量的人力和精力去测试和提供质量保障。 3理解代码的代价代码的可读性可能会变差。 4修改代码的代价性能优先的代码可能难以修改。
模块化代码设计
模块化的基本原理
模块化是非常重要的一种设计思想其原理是SOC原理即关注点分离原则。我们可以将一个软件中不同的功能分散成一个个模块去实现然后在模块间加上接口让它们又能联合起来完成完整的软件功能。模块化可以让我们更专注于一个模块内的实现于功能也能让我们更容易在出现错误的时候定位到bug同时软件开发也使得每个软件模块更容易理解。模块化程度已经成为了软件质量衡量的重要指标。
耦合度和内聚度
松散耦合功能内聚。
注意公共耦合数据耦合标记耦合的区别于联系。 耦合度数据耦合小于标记耦合小于公共耦合。
模块化的基本方法
KISS原则。 一行代码只做一件事 一个块代码只做一件事 一个函数只做一件事 一个软件模块只做一件事 使用本地化外部接口本质上是一种设计模式代理模式。
接口
接口的基本要素
接口的目的。 接口的前置条件。 接口的使用者之间的规范。 接口的后置条件。 接口的质量属性。
通用接口的定义方法
参数化上下文 消除前置条件 简化后置条件
RESTful API
GET POST PUT DELETE
可重入函数
一个可重入函数可以被多个线程调用并且线程安全。并且可以随时被中断稍后继续运行不必担心数据错误。 不可重入函数不可以被多个线程调用否则一定线程不安全换而言之不可重入函数智能被一个线程持有。 不同的可重入函数在多个线程中并发使用时可能会有线程不安全问题。
需求
需求的类型
功能性需求。 非功能性需求。 设计约束。 过程约束。
确定需求的方法
原型化方法 原型化方法可以很好地整理出用户接口方式UIUser Interface比如界面布局和交互操作 过程。建模的方法 建模的方法可以快速给出有关事件发生顺序或活动同步约束的问题能够在逻辑上形成模型来 整顿繁杂的需求细节。
高质量需求的特点
需求清晰可实现的唯一的无二义性的全面的可行的不与主要目标无关的。 需求可测试的。 需求无冲突的。
用例
用例的定义
1首先是个业务流程 2某个参与者开始它 3隐形地或者显性地被某个参与者结束 4对某个参与者产生有用的业务工作。
用例的三个层级
1抽象用例 2高级用例 3扩展用例
统一过程
用例驱动架构为中心增量且迭代。
团队
基本要素
团队的规模团队的凝聚力团队协作的基本条件
评价团队的方法
CMM/CMMI用于评价软件生产能力并帮助其改善软件质量的方法成为了评估软件能力与成熟度的 一 套标准它侧重于软件开发过程的管理及工程能力的提高与评估是国际软件业的质量管理标 准。 CMMI共有5个级别代表软件团队能力成熟度的5个等级数字越大成熟度越高高成熟度等级 表示有比较强的软件综合开发能力。 一 级,初始级,软件组织对项目的目标与要做的努力很清晰项目的目标可以实现。但主要取决 于实施人员。 二级,管理级,软件组织在项目实施上能够遵守既定的计划与流程有资源准备权责到人对 项目相关的实施人员进行了相应的培训对整个流程进行监测与控制并联合上级单位对项目 与流程进行审查。这级能保证项目的成功率。 三级,已定义级,软件组织能够根据自身的特殊情况及自己的标准流程将这套管理体系与流程 予以制度化。科学管理成为软件组织的文化与财富。 四级,量化管理级,软件组织的项目管理实现了数字化降低了项目实施在质量上的波动。 五级,持续优化级软件组织能够充分利用信息资料对软件组织在项目实施的过程中可能出现 的问题予以预防。能够主动地改善流程运用新技术实现流程的优化。
在这门高级软件工程课程中孟宁老师的教学方式让大家深受启发。孟宁老师的知识广博且在课堂上清晰地传授了许多重要的软件工程概念和技能。孟宁老师的耐心和敬业精神让大家感受到了孟宁老师对大家学习的关心和支持。 在这门课程中孟宁老师通过丰富的案例和实例深入浅出地讲解了软件工程中的关键概念和技能如需求分析、设计模式、测试方法等。孟宁老师的教学方法注重实践让大家在实际操作中更加深入地理解这些概念。在孟宁老师的指导下大家不仅学到了理论知识还学会了如何将这些知识应用到实际项目中。 除此之外孟宁老师还鼓励大家与同学们进行交流和合作这不仅使大家更好地理解课程内容还培养了大家团队协作的能力。孟宁老师的积极引导和支持让大家在这门课程中不断进步和提高。 因此大家再次向孟宁老师表达大家的感激之情。孟宁老师的教学和指导对大家的学习和职业生涯将产生深远的影响。孟宁老师的贡献将永远铭刻在大家的心中。 再次感谢孟宁老师