【观点】培养软件工程思想

简介: 导读:原文作者changeword在博客园中写了一篇文章《培养软件工程思想》,在他看来,软件工程是一门学问,如何才能培养软件工程思想需要一步一步的去实践出来,以下是作者总结出来的心得。软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。

导读:原文作者changeword在博客园中写了一篇文章《培养软件工程思想》,在他看来,软件工程是一门学问,如何才能培养软件工程思想需要一步一步的去实践出来,以下是作者总结出来的心得。

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。而工程化的最主要的特点是系统化、规范化、可量化并且严格控制流程得完成开发或生产任务,在此严格的条件下优质、高效的进行生产活动。工程化思想的这种优秀品质,决定了她在生产活动中不可替代的地位。比如各大品牌的手机(如Nokia、Apple)都严格的控制其生产流程,所以品牌手机比山寨机质量要好很多,售后维护也比山寨机做到系统、规范。

在软件开发过程中,我们也运用工程化思想指导开发。软件工程是前人总结的心得经验,前车之鉴、后事之师啊。就像武林之中的泛泛之辈意外的得到一本终极武功秘籍,武林至尊指日可待岂不快哉!遥想当年,诸葛孔明不就是凭借着对《孙子兵法》以及其他兵书的透彻理解,灵活运用成就千古奇谈的吗?

软件工程提供了很多模型,其中非常经典的瀑布模型,她是一种理想化模型,为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段的工作。评审过程发现错误和疏漏后,应该及时反馈到前面的有关阶段修正错误或弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段。

瀑布模型有许多优点,如可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证等。

但瀑布模型也存在缺点,其主要表现在:①在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。而瀑布模型在需求分析阶段要求客户和系统分析员必须做到这一点才能开展后续阶段的工作。②确定需求后,用户和软件项目负责人要等相当长的时间才能得到一份软件的最初版本。如果用户对这个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、财力和时间方面的损失。所以说她是理想化的模型,但她的清晰明朗,规范紧凑 为其他模型提供了参考。故将其作为教材典范。

记得有一次面试,面试题目就是:如果让你开发一个图书馆管理系统,请你简单描述一下你会怎么去实现以及你的想法。想必大家在求学时期就做过图书管理系统,大概都了解怎么做,也不用工程化思想就能做到,但用语言又不知道该怎么描述。如果你用软件工程思想将步骤用你自己的话简单叙述一遍,相信你的面试分一定不会低。

作为程序员,虽然不用做软件工程类的工作,也应该培养软件工程思想。正所谓不想当将军士兵不是好士兵。在工作中面对自己的代码,多以软件工程化思想推敲考究一下,看是否能够将代码写的更漂亮、更优秀。闲的时候可以设想一下如果自己是软件架构师或者项目经理,该如何设计整个软件开发周期,预测在开发过程中可能遇到的问题及相应的解决方案。只有时刻准备着那个职位,才会有机会获得那个职位,机会是留给有准备的人的,不是吗?

原文链接:http://www.cnblogs.com/my_blog/archive/2011/05/09/2041700.html

目录
相关文章
|
数据可视化 前端开发 数据管理
LayUI之树形权限菜单
LayUI之树形权限菜单
258 0
html页面点击按钮实现页面跳转功能
html页面点击按钮实现页面跳转
1288 11
|
关系型数据库 MySQL API
我用 go-zero 一周实现了一个中台系统
我用 go-zero 一周实现了一个中台系统
|
自然语言处理 搜索推荐 BI
有哪些好用的待办事项提醒软件?主流7款大对比
随着生活和工作节奏的加快,待办事项提醒软件成为了我们的“救命神器”。本文评测了7款主流的待办事项软件:板栗看板、Todoist、Microsoft To Do、TickTick、Google Keep、Any.do 和滴答清单,从功能、适用场景和优缺点等方面进行对比,帮助你找到最适合自己的那一款。无论是团队协作、个人时间管理还是生活与工作的平衡,总有一款能满足你的需求。
6117 1
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
333 2
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
1358 6
|
缓存 监控 Java
在使用 Glide 加载 Gif 动画时避免内存泄漏的方法
【10月更文挑战第20天】在使用 Glide 加载 Gif 动画时,避免内存泄漏是非常重要的。通过及时取消加载请求、正确处理生命周期、使用弱引用、清理缓存和避免重复加载等方法,可以有效地避免内存泄漏问题。同时,定期进行监控和检测,确保应用的性能和稳定性。需要在实际开发中不断积累经验,根据具体情况灵活运用这些方法,以保障应用的良好运行。
ThreeJs制作管道水流效果
这篇文章详细说明了如何在Three.js中创建具有流动水效果的管道模型,通过使用纹理贴图的动态偏移来模拟水流的视觉效果。
809 3
|
缓存 前端开发 UED
前端 8 种图片加载优化方案梳理
本文首发于微信公众号“前端徐徐”,详细探讨了现代网页设计中图片加载速度优化的重要性及方法。内容涵盖图片格式选择(如JPEG、PNG、WebP等)、图片压缩技术、响应式图片、延迟加载、CDN使用、缓存控制、图像裁剪与缩放、Base64编码等前端图片优化策略,旨在帮助开发者提升网页性能和用户体验。
3044 0
|
Java
notify () 和 notifyAll () 的区别
notify () 和 notifyAll () 的区别
366 0