软件工程的思考
----读《大道至简:软件工程实践者的思想(典藏版)》有感
从就读软件工程专业以来,我一直都在思考着一些问题,我的专业主要是学习什么?以后究竟能做些什么?我们能做仅仅是coding吗?
后来我姨问我,你的专业将来做什么呀?(我姨学历为小学,对建筑中的装修比较了解)我想了一会,说,我们是做软件的,做的方法与建一座大厦一样,是一个很大的工程,所以就叫做软件工程了。建大厦过程中有很多部门,做软件过程中也会有这些;建大厦时用到的框架,软件也会有相对应的框架等。有些混乱的对比与理解,感觉一直以来都理解得不透,到今天看到了《大道至简:软件工程实践者的思想(典藏版)》得到一个清晰而形象的理解。其实,比较喜欢书本清晰由浅及深的思路;喜欢字里行间跳动通俗易懂的文字;喜欢由整体及部分而又部分及整体的思维方式及方法论。对于软件工程体系,一图瞬间点破。
想到我们中国高等教育的软件工程专业的培养计划,不外乎也是上面那个图,只是那时候我们实现太年轻而一头埋在其中,只见到一棵一棵树木而不知这是一片森林。大一时学习C,大二学习java,数据结构与算法设计,面向对象编程设计思想。接着大三就开始学习需求工程,信息建模与软件开发,还有各种软件工程理论。大四,则学习项目管理;就这样从上面由里向外面扩展着。
受作者风趣故事,发散与逆向思维深深感染。让我想到了数学建模,因为从小喜欢数学,对程序设计的兴趣大部分原因是来自于它,数学建模过程是通过对客观世界进行抽象建立数学模型,然后对数学问题的求解,再由数学的解答回归到现实的世界,就是这一串的思维与方法过程。而在数学问题分解与解决的过程中用到了各种算法,重点就在于算法,算法是面向逻辑的,与用什么语言去实现没有太大关系,如果真的要实现可以用C、java等。其实说到底算法也是数学来的,慢慢我们会明白,我们为什么要学习高等数学,线性代数,概率与统计等等。对于数据结构,其实与语言也没有大太的关系的,可是不知道为什么很多同学与我讨论数据结构的时候,都会说C的结构体就是数据结构。我猜他没把严蔚敏的《数据结构》完全弄懂,里面写的都是类C语言,可以看成是一个伪代码来的。数据结构是讨论逻辑与物理的数据的表示、存储和处理的,对于逻辑就得有数学基础,例如离散数学,组合数学等。对于物理方面,得了解计算结构体系,组成原理,操作系统。其实,这些只是作者说的第一个椭圆部分。这部分是最核心的,同时也是最本质的。所以,面试的时候面试官很喜欢从一层去出题检验你的基本功是否扎实。
对于行为与思维的积累,我们有了作者的第二个大椭圆----方法。经过积累,我们留下很多对某些方面的设计方法与设计模式,而在面向对象中以UML为载体描述出来并被总结出来,这些都属于实现部分。实现包括两个内部椭圆,总的来说是侧重于个人的,也就是作为一个程序员应该掌握与学会的内容。
但是个人的力量是有限,那就把很多个个人聚集一起,从而就形成了团队。个体是团队的个体,团队是个体的团队。也就是说,个体现在不能各自行动了,必需由团队去支配,而团队的构成必须要有个体去组成,形了一个组的概念,我们用一个组长去负责。一个团队形成后,做什么事情呢?可以做一个操作系统也可以做一个杀毒软件等等。这个就是工程或项目,给之一个角色叫项目经理。项目经理负责项目的管理等等的技术与非技术内容。说到管理,它包含四个职能:计划,组织,控制,领导。下图就是一个管理过程。
其实管理是分层的,分为战略管理层,战术管理层,作业管理层,管理对象层。Boss们是战略管理层,关心的是整个企业的方向问题,与技术没什么直接关系,关心的是大的方向,用来统领全局。回到软件工程的管理,它会有一个计划,计划就会涉及到目标是什么,人力资源是怎样分配,进度是怎样等等。项目的计划形成后就把个体组成为一个团队,团队有一个领头的角色来带着,这个就是领导。它得每天根据计划来检查着团队的每个人是否把当天的工作是否完成了,这个是控制。整个过程就是形成管理过程。
从另一个方面看看,软件工程开始于需求,对客观世界的分析,得到客观世界的需求。形成文档作为沟通与交流的媒介;需求分析完成,进行制定计划,对软件开发过程的管理。切分各个阶段与划分各个角色的职责,形成各种设计文档,例如UML图,最后由程序员实现。
《大道至简:软件工程实践者的思想(典藏版)》使我对软件工程一个全新的认识、思维受到了冲击、和对交叉学科相关的综合认识,受益不浅。
- 大小: 24.5 KB
- 大小: 5.2 KB
分享到:
相关推荐
《软件工程思考与练习》一书,正是通过对软件工程全方位的深入探讨,以及提供大量的练习与实践,帮助读者更好地理解软件工程的复杂性和系统性。 首先,软件工程是为了解决软件危机而产生的。所谓软件危机,是指在...
《软件工程思考题答案》这份文档涉及了软件工程的基础概念、分类、危机表现、原因以及软件工程的核心要素、目标、原则和原理。以下是对这些知识点的详细解释: 1. **软件的特点**: - 软件是逻辑实体,抽象性强,...
软件工程思考题.doc
五道思考题答案集绵 1、某医院打算开发计算机患者监护系统 问题定义: 开发这个系统的可行性分析: 系统分析图 可行性分析逻辑图 2、某航空公司拟开发一个机票预定系统。 问题定义: 开发这个系统的...
### 软件工程思想概览 #### 一、引言 《软件工程思想》这本书由林锐撰写,董军作序。该书基于作者个人的软件开发经历,深入浅出地介绍了软件工程领域的核心理念与实践技巧。本书不同于传统的教科书,它通过作者自身...
共有四个思考题,主要是分析问题,画数据流图和流程图。
其次,“软件工程思考题答案.doc”可能包含了对课程中的关键概念和案例的深入探讨,例如,可能会讨论面向对象设计、软件测试策略、风险管理和软件维护的重要性。通过分析这些答案,学生可以提升自己的批判性思维和...
### 软件工程教学的关键思考与改进策略 软件工程作为计算机科学的重要组成部分,不仅是理论知识的传授,更是实践经验的积累。《软件工程》一文深入探讨了教学现状与改进策略,聚焦于如何提高学生对软件工程的理解和...
齐治昌教授,作为国防科技大学的专家,在第三届全国软件工程会议上发表的报告,无疑是对当前我国软件工程学科发展现状的深刻洞察和未来发展的前瞻性思考。报告可能涵盖了以下几个关键点: 1. **学科定位与目标**:...
《软件工程思想》讲述“软件开发”和“做程序员”的道理,视野独特,构思新颖,内容风趣,...简言之,林锐对软件工程实践的积极思考、轻快而不失深邃的文笔及其言行,都是出色之处。 希望这个文档对大家有所帮助!
作者强调,软件工程并非仅仅是一种技术实践,更是一种思考方式和人生观的体现。他提倡程序员应具备积极的人生观,以贡献社会为己任,这种理念贯穿于全书之中。例如,作者在困难时期仍资助贫困学生,通过实际行动展现...
【软件工程模拟题】 在软件工程的学习过程中,模拟题是一种非常有效的复习工具,它可以帮助学生理解和掌握课程中的关键概念、方法和技术。这份“软件工程概论期末考试”的模拟题集全面覆盖了软件工程的主要知识点,...
大数据时代软件工程专业建设的思考 大数据时代SOFTWARE ENGINEERING专业建设的思考是当前信息时代软件工程教学的主要挑战之一。在大数据时代,软件开发对社会发展的影响变得越来越大,企业对大数据人才的需求也在...
软件工程学从硬件工程和其他工程学科中汲取了诸多成功经验,确立了软件生命周期的概念,发展了多阶段的软件开发技术和方法,如需求分析、设计、编码、测试等。 在软件工程理论的指导下,发达国家逐渐建立了完善的...
在现代软件开发领域,软件工程作为一门学科,不仅仅关注编程技能,更强调项目的整体规划、分析、设计、实施、测试和维护等阶段的工程化方法。《软件工程实验指导书》的出版,正是为了帮助学习者们深入理解和实践软件...
随着科技的迅速发展,软件工程领域的研究与实践变得日益重要。为了让学生们能够将所学理论知识与实际工作紧密结合,并具备解决实际问题的能力,许多高校的软件工程专业为本科毕业生设计了一系列贴近实际需求的毕业...
《软件工程孙家广习题答案》是一份针对软件工程学科的重要参考资料,它包含了孙家广教授编著的软件工程教材中的习题解答,对于学习和理解软件工程的知识点具有极大的帮助。孙家广教授是中国计算机科学领域的权威,他...
学习软件工程需要注重对基本概念、原理和方法的理解,通过不断的实践,提高应用知识解决实际问题的能力,注重提高沟通能力和文档写作能力,学会从专业的角度思考问题,学习别人的经验。 软件工程的主要内容包括软件...