我学软件工程

这个月,我花了一些时间学习了软件工程。很多人,对软件工程有意见,认为软件工程不可取,更不可用。我的想法有点不同,我还是认为有其价值,但是完全按照其方法与过程,就有点重,或者说过程有点繁复了,对于一些事关重大的项目可能需要,或者一旦失败就损失惨重的项目有其用武之地。对于我来说,我就是想要了解何为软件工程,它包括哪些东西,这些东西的使用场景,还有就是我能不能应用到工作当中去,能够让我更加高效的完成工作。

一,软件开发领域的一些概念,我也了更加清晰的认识,这样使我能够更好的理解某些行为,比如软件开发,何为软件开发呢,书面的解释就是问题空间到解空间的概念,处理逻辑的映射。通俗的讲就是现实世界的概念,处理逻辑映射到软件领域,期望通过软件方法解决现实世界的问题。这让我意识到了掌握业务领域知识是作为程序员的责任,而不仅仅掌握实现技术。比如耦合,虽然我们一直谈论高内聚,低耦合,但是一直没有研究何为低耦合,哪些才是高耦合。难道两个相互独立的模块才是低耦合吗?当然不是,那叫没有关系。至于针对于接口编程,实现与调用都依赖于接口,这是实现低耦合的一种手段。模块之间耦合程度最低为数据耦合,也就是说模块之间的交互的只是纯粹的数据,同样的数据传入应该能够获取同样的结果。此外还有聚合,组合等概念。

二,了解并熟悉软件工程领域的一些方法,过程等。比如数据流程图,用况图,各种过程模型的优势及适用场景,设计测试用例的方法等。了解并且能够应用这些方法与过程,对开发的工作还是有帮助。比如数据流程图,我可以利用它更好分析并理解的一些复杂的业务流程,不仅个人可以使用,在团队讨论也可以使用。比如测试用例的设计方法,作为开发者,也需要提交代码之前确保个人的工作质量,所以也需要测试自己的代码,有了这些方法,就可以更加高效发现代码中的问题。至于用况图,这个图比较简单,可以作为与需求提出方进行讨论的媒介,这比单纯的文字描叙好得多。

三,具备了一些实践经验,比如数据流程图,用况图,设计测试用例等,我会在阅读的软件工程书籍和资料的过程当中,我也会去做题,去应用。在这个过程当中,我才发现所掌握的知识并不完整,或者理解有偏差,有得甚至完全错误,而这些问题,只有在做题和应用的过程当中,才得以纠正,我认为这是学习任何知识必不可少的一个过程。有时候觉得做题有些学生气,好像那只是学生应该做的,其实成年人也可以从中学到知识。

以上我是从个人的角度看,学习软件工程带给我的东西,但是软件工程中提供的概念,方法,过程,模型等远不止这些。每个人的经验和知识结构千差万别,看完一本书,学习某一主题的知识,或许感到有价值的点完全不一样。在此我只提供了一个引子,你的寻找价值需要自己去发现。

全文完。