`
美丽的小岛
  • 浏览: 308267 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

软件工程的思考

阅读更多

软件工程的思考

 ----读《大道至简:软件工程实践者的思想(典藏版)》有感

 

从就读软件工程专业以来,我一直都在思考着一些问题,我的专业主要是学习什么?以后究竟能做些什么?我们能做仅仅是coding吗?

 

后来我姨问我,你的专业将来做什么呀?(我姨学历为小学,对建筑中的装修比较了解)我想了一会,说,我们是做软件的,做的方法与建一座大厦一样,是一个很大的工程,所以就叫做软件工程了。建大厦过程中有很多部门,做软件过程中也会有这些;建大厦时用到的框架,软件也会有相对应的框架等。有些混乱的对比与理解,感觉一直以来都理解得不透,到今天看到了《大道至简:软件工程实践者的思想(典藏版)》得到一个清晰而形象的理解。其实,比较喜欢书本清晰由浅及深的思路;喜欢字里行间跳动通俗易懂的文字;喜欢由整体及部分而又部分及整体的思维方式及方法论。对于软件工程体系,一图瞬间点破。

 

想到我们中国高等教育的软件工程专业的培养计划,不外乎也是上面那个图,只是那时候我们实现太年轻而一头埋在其中,只见到一棵一棵树木而不知这是一片森林。大一时学习C,大二学习java,数据结构与算法设计,面向对象编程设计思想。接着大三就开始学习需求工程,信息建模与软件开发,还有各种软件工程理论。大四,则学习项目管理;就这样从上面由里向外面扩展着。

 

受作者风趣故事,发散与逆向思维深深感染。让我想到了数学建模,因为从小喜欢数学,对程序设计的兴趣大部分原因是来自于它,数学建模过程是通过对客观世界进行抽象建立数学模型,然后对数学问题的求解,再由数学的解答回归到现实的世界,就是这一串的思维与方法过程。而在数学问题分解与解决的过程中用到了各种算法,重点就在于算法,算法是面向逻辑的,与用什么语言去实现没有太大关系,如果真的要实现可以用Cjava等。其实说到底算法也是数学来的,慢慢我们会明白,我们为什么要学习高等数学,线性代数,概率与统计等等。对于数据结构,其实与语言也没有大太的关系的,可是不知道为什么很多同学与我讨论数据结构的时候,都会说C的结构体就是数据结构。我猜他没把严蔚敏的《数据结构》完全弄懂,里面写的都是类C语言,可以看成是一个伪代码来的。数据结构是讨论逻辑与物理的数据的表示、存储和处理的,对于逻辑就得有数学基础,例如离散数学,组合数学等。对于物理方面,得了解计算结构体系,组成原理,操作系统。其实,这些只是作者说的第一个椭圆部分。这部分是最核心的,同时也是最本质的。所以,面试的时候面试官很喜欢从一层去出题检验你的基本功是否扎实。

 

对于行为与思维的积累,我们有了作者的第二个大椭圆----方法。经过积累,我们留下很多对某些方面的设计方法与设计模式,而在面向对象中以UML为载体描述出来并被总结出来,这些都属于实现部分。实现包括两个内部椭圆,总的来说是侧重于个人的,也就是作为一个程序员应该掌握与学会的内容。

 

但是个人的力量是有限,那就把很多个个人聚集一起,从而就形成了团队。个体是团队的个体,团队是个体的团队。也就是说,个体现在不能各自行动了,必需由团队去支配,而团队的构成必须要有个体去组成,形了一个组的概念,我们用一个组长去负责。一个团队形成后,做什么事情呢?可以做一个操作系统也可以做一个杀毒软件等等。这个就是工程或项目,给之一个角色叫项目经理。项目经理负责项目的管理等等的技术与非技术内容。说到管理,它包含四个职能:计划,组织,控制,领导。下图就是一个管理过程。 

其实管理是分层的,分为战略管理层,战术管理层,作业管理层,管理对象层。Boss们是战略管理层,关心的是整个企业的方向问题,与技术没什么直接关系,关心的是大的方向,用来统领全局。回到软件工程的管理,它会有一个计划,计划就会涉及到目标是什么,人力资源是怎样分配,进度是怎样等等。项目的计划形成后就把个体组成为一个团队,团队有一个领头的角色来带着,这个就是领导。它得每天根据计划来检查着团队的每个人是否把当天的工作是否完成了,这个是控制。整个过程就是形成管理过程。

 

从另一个方面看看,软件工程开始于需求,对客观世界的分析,得到客观世界的需求。形成文档作为沟通与交流的媒介;需求分析完成,进行制定计划,对软件开发过程的管理。切分各个阶段与划分各个角色的职责,形成各种设计文档,例如UML图,最后由程序员实现。

 

《大道至简:软件工程实践者的思想(典藏版)》使我对软件工程一个全新的认识、思维受到了冲击、和对交叉学科相关的综合认识,受益不浅。

 

 

 

  • 大小: 24.5 KB
  • 大小: 5.2 KB
1
0
分享到:
评论

相关推荐

    软件工程思考与练习

    《软件工程思考与练习》是关于软件工程领域的深入学习与实践。软件工程是解决软件危机的关键途径,它采用工程化、科学化和数学化的原则与方法来开发、维护和管理软件。尽管软件工程的出现极大地减少了软件开发的问题...

    软件工程思考题答案.doc

    《软件工程思考题答案》这份文档涉及了软件工程的基础概念、分类、危机表现、原因以及软件工程的核心要素、目标、原则和原理。以下是对这些知识点的详细解释: 1. **软件的特点**: - 软件是逻辑实体,抽象性强,...

    软件工程思考题.doc

    软件工程思考题.doc

    软件工程思考分析题答案文档+流程图文件(visio).zip

    五道思考题答案集绵 1、某医院打算开发计算机患者监护系统 问题定义: 开发这个系统的可行性分析: 系统分析图 可行性分析逻辑图 2、某航空公司拟开发一个机票预定系统。 问题定义: 开发这个系统的...

    软件工程思想 一个人的思考

    ### 软件工程思想概览 #### 一、引言 《软件工程思想》这本书由林锐撰写,董军作序。该书基于作者个人的软件开发经历,深入浅出地介绍了软件工程领域的核心理念与实践技巧。本书不同于传统的教科书,它通过作者自身...

    软件工程导论思考题答案

    共有四个思考题,主要是分析问题,画数据流图和流程图。

    软件工程试题及答案_教学辅导_软件工程___电大在线.files

    其次,“软件工程思考题答案.doc”可能包含了对课程中的关键概念和案例的深入探讨,例如,可能会讨论面向对象设计、软件测试策略、风险管理和软件维护的重要性。通过分析这些答案,学生可以提升自己的批判性思维和...

    软件工程中的教学思考

    ### 软件工程教学的关键思考与改进策略 软件工程作为计算机科学的重要组成部分,不仅是理论知识的传授,更是实践经验的积累。《软件工程》一文深入探讨了教学现状与改进策略,聚焦于如何提高学生对软件工程的理解和...

    软件工程学科建设的思考(齐治昌).

    齐治昌教授,作为国防科技大学的专家,在第三届全国软件工程会议上发表的报告,无疑是对当前我国软件工程学科发展现状的深刻洞察和未来发展的前瞻性思考。报告可能涵盖了以下几个关键点: 1. **学科定位与目标**:...

    [软件工程]软件工程思想.chm

    《软件工程思想》讲述“软件开发”和“做程序员”的道理,视野独特,构思新颖,内容风趣,...简言之,林锐对软件工程实践的积极思考、轻快而不失深邃的文笔及其言行,都是出色之处。 希望这个文档对大家有所帮助!

    软件工程思想 程序员软件工程思想

    作者强调,软件工程并非仅仅是一种技术实践,更是一种思考方式和人生观的体现。他提倡程序员应具备积极的人生观,以贡献社会为己任,这种理念贯穿于全书之中。例如,作者在困难时期仍资助贫困学生,通过实际行动展现...

    软件工程模拟题

    【软件工程模拟题】 在软件工程的学习过程中,模拟题是一种非常有效的复习工具,它可以帮助学生理解和掌握课程中的关键概念、方法和技术。这份“软件工程概论期末考试”的模拟题集全面覆盖了软件工程的主要知识点,...

    大数据时代软件工程专业建设的思考.docx

    大数据时代软件工程专业建设的思考 大数据时代SOFTWARE ENGINEERING专业建设的思考是当前信息时代软件工程教学的主要挑战之一。在大数据时代,软件开发对社会发展的影响变得越来越大,企业对大数据人才的需求也在...

    软件工程孙家广习题答案.

    《软件工程孙家广习题答案》是一份针对软件工程学科的重要参考资料,它包含了孙家广教授编著的软件工程教材中的习题解答,对于学习和理解软件工程的知识点具有极大的帮助。孙家广教授是中国计算机科学领域的权威,他...

    软件工程:01 软件工程概述.ppt

    学习软件工程需要注重对基本概念、原理和方法的理解,通过不断的实践,提高应用知识解决实际问题的能力,注重提高沟通能力和文档写作能力,学会从专业的角度思考问题,学习别人的经验。 软件工程的主要内容包括软件...

    软件工程 软件工程 软件工程

    ### 软件工程:第四代的成熟与挑战 #### 软件工程的演进与现状 软件工程,作为一门研究如何系统性地、高效地、高质量地开发和维护软件的学科,自诞生以来已经历了显著的发展,如今进入到了第四代。这标志着软件...

    软件工程与教育软件开发的思考.doc

    软件工程与教育软件开发的思考 作者:王丽莎 来源:《中国教育信息化·高教职教》2008年第03期 摘 要:如今,教育软件的开发不但要讲求教学质量,而且应该如工程软件一样在开发前做 必要的需求分析和成本估算。...

Global site tag (gtag.js) - Google Analytics