篇一 :软件工程读后感

读《软件工程》有感

软件工程学,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。下面是软件工程的现状:

在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,提高人们的工作效率,同时提升了生活质量。

软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析员,软件设计师,系统架构师,程序员,测试员等等。人们也常常用程序员来泛指各种软件工程师。

软件的开发到底是一门科学还是一门工程,这是一个被争论了很久的问题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以被互相混淆。

很多人认为软件工程基于计算机科学和信息科学就如传统意义上的工程学之于物理和化学一样。

在美国,大约40%的软件工程师具有计算机科学的学位。在世界其他地方,这个比例也差不多。他们并不一定会每天使用计算机科学方面的知识,但是他们每天都会使用软件工程方面的知识。

软件工程是在遇到软件危机的时候提出来的,其定义是将系统化的、严格约束的、可量化的方法应用到软件的开发、运行和维护,即将工程化应用软件。软件工程研究目标是提高软件的质量和开发效率。目前比较受关注的5种相对并列的软件质量属性分别为:正确性、健壮性、安全性、高效性、易维护性。近年来,随着计算机网络逐步成为主要的软件运行环境,人们在质量的基础上更多的关注可信性。在开发效率这方面,开发人员的素质对项目的成败很重要,若要对实际的开发过程进行量化的话,则比较困难。不同于传统的一些工程项目,软件工程中的部署环节所占的比重较小。在拿到一个软件项目之后,需要对该项目进行总体分析后,选择合适的开发过程模型、开发方法、质量度量方法和具体的开发环境。主要的开发模型包括:瀑布模型、迭代模型、螺旋模型以及第四代模型等。开发方法有:结构化方法、面向数据结构方法、面向对象方法和构件化方法。

…… …… 余下全文

篇二 :软件工程思想的重要性

软件工程思想的重要性

在谈软件工程的重要性前,我先说说软件工程的思想。软件工程主要讲述软件开发的道理,基本上是软件实践者的成功经验和失败教训的总结。软件工程的观念、方法、策略和规范都是朴实无华的,平凡之人皆可领会,关键在于运用。我们不可以把软件工程方法看成是诸葛亮的锦囊妙计─—在出了问题后才打开看看,而应该事先掌握,预料将要出现的问题,控制每个实践环节,并防患于未然。研究软件工程永远做不到理论家那么潇洒:定理证明了,就完事。

软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在根本的对立,好的软件工程方法可以同时提高质量与生产率。软件的质量因素很多,如正确性,性能、可靠性、容错性、易用性、灵活性、可扩充性、可理解性、可维护性等等。有些因素相互重叠,有些则相抵触,真要提高质量可不容易啊!软件工程的主要环节有:人员管理、项目管理、可行性与需求分析、系统设计、程序设计、测试、维护等。

最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯,已不再适合现代的软件开发模式,几乎被业界抛弃。偶而被人提起,都属于被贬对象,未被留一丝惋惜。但我们应该认识到,“线性”是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的“非线性”问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。

…… …… 余下全文

篇三 :软件工程思想—软件工程基本观念

   软件工程基本观念

本章讲述软件工程的基本观念,是关于软件工程宏观上的探讨。如果你是软件公司的老板,用不着在第一线工作,那么看这一章就够了。但你一定要让员工们相信不停地工作是人生最大的快乐,并且让他们把本书看完。

1.1节讲述软件工程的目标和常用的软件工程模型。1.2节讲述软件开发的基本策略:“复用”、“分而治之”、“优化——折衷”,有助于指导实践者选择方法和产生新方法。1.3节例举一些不正确的观念,取材于早期软件人员比较幼稚的想法,初学者可以引以为戒。1.4节探讨一些有争议的观念。

       看完本章,要树立这样的信念:软件开发过程中的坎坎坷坷,仿佛只是人脸的凹凸不平,用热水毛巾一把就可抹平。让我们高举程序主义、软件工程思想的伟大旗帜,紧密团结在以Microsoft为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地编程,把建设有中国特色的软件产业的伟大事业全面推向21世纪。

1.1 软件工程的目标与常用模型

软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在根本的对立,好的软件工程方法可以同时提高质量与生产率。

…… …… 余下全文

篇四 :软件工程进展的读后感

数据库新技术

学院名称: 信息科学与工程学院

专 业:

班 级:

学 号:

姓 名:

软件工程 信研12 12106409 沈田予

软件工程进展的读后感

软件工程是在遇到软件危机的时候提出来的,其定义是将系统化的、严格约束的、可量化的方法应用到软件的开发、运行和维护,即将工程化应用软件。软件工程研究目标是提高软件的质量和开发效率。目前比较受关注的5种相对并列的软件质量属性分别为:正确性、健壮性、安全性、高效性、易维护性。近年来,随着计算机网络逐步成为主要的软件运行环境,人们在质量的基础上更多的关注可信性。在开发效率这方面,开发人员的素质对项目的成败很重要,若要对实际的开发过程进行量化的话,则比较困难。不同于传统的一些工程项目,软件工程中的部署环节所占的比重较小。在拿到一个软件项目之后,需要对该项目进行总体分析后,选择合适的开发过程模型、开发方法、质量度量方法和具体的开发环境。主要的开发模型包括:瀑布模型、迭代模型、螺旋模型以及第四代模型等。开发方法有:结构化方法、面向数据结构方法、面向对象方法和构件化方法。构件是比对象更大的软件实体。软件度量的作用则是依靠对软件的分析,发现其中的缺陷,予以消除。一般有静态分析和动态分析,之间的区别为是否运行软件。软件工程的进步离不开计算机辅助工具和相应的环境。最近人们对基本的开发方法的关注度有所下降,更多的关注特定的软件开发方法。例如敏捷方法、模型驱动方法、面向服务的方法。敏捷方法顾名思义就是在几周或者几个月的时间内完成相对较小的功能。模型驱动则是在给定的平台上转换模型,尽可能的生成更多的代码。服务的方法强调的是软件实体的外在表现,现在这种方法还没完全成型。对应软件库的复用,需要的则是具体的API的使用规则。软件质量保障的主要方法包括静态缺陷查找、测试、修复、检测等。在动态测试方面,有两个较大影响力的基本动态符号执行的工具:针对基于.NET程序的通用测试工具Pex,以及针对二进制码形式的程序安全测试工具SAGE。20世纪90年代后,提出的一系列自动和半自动恢复软件特征和软件实现代码间的追踪关系的技术,降低了软件维护的负担,主要包含两种技术路线:①以可视化的方式展示实现代码中的多种依赖关系,让维护人员通过浏览这些依赖关系确定追踪关系。②通过实际执行和信息检索等技术获取软件特征和软件实现代码间的初步联系,进一步通过程序分析确定追踪关系。基于数据的软件工程旨在通过对过往软件开发过程各个阶段数据的分析和抽象,获得并积累软件开发知识和规律,为今后的软件开发提供及时有效的信息和辅助开发人员进行决策判断。大型软件公司在这方面有大量的私有数据,这些过往的数据对指导公司的决策具有重要意义,这也是产生基于数据软件工程的重要动力之一,另一方面,开源世界里存在大量的公共历史数据,也为基于数据的软件工程提供了数据基础,进一步的促进了基于数据的软件工程的发展。软件工程在中国的发展,比如南京大学徐家福在80年代到90年代的研究成果有:对需要分析的自动化支持、对系统分析与编程的自动化支持、对元层程序转换的自动化支持。19xx年开始,中科院的唐稚松领导的团队提出的全球第一个可执行的时序逻辑语言XYZ/E,可以直接书写其中自动机的状态转换过程。还有北京大学的杨芙清等致力开发大规模的软件工程环境,为中国软件企业提供了系列“青鸟”方法与产品。近几年来,国内对缺陷检测的研究颇为热门,这类工作的目标是自动分析出软件中存在的缺陷,以提高软件质量、降低软件维护的成本。北京大学的梅宏等重点研究了基于缺陷模式的缺陷检测。缺陷模式指明了缺陷代码片段的特征,缺陷检测工具通过将受检程序和缺陷模式进行匹配来发现程序中的缺陷。他们研究了如何自动地获取这些缺陷模式,并进一步研究了如何对缺陷检测工具报告出来的缺陷列表进行排序,以提高程序员排查缺陷的效率。随着软件周期的推移,软件会在不同层次上进行演化,在软件演化过程中,程序会随着其所使用的框架而发生演化。这一方面,北京大学的梅宏等提出了通过分析软件演化历史以抽取当框架发生演化时程序自动调

…… …… 余下全文

篇五 :软件工程的思想

在60年代计算机发展初期,程序设计是少数聪明人干的事。他们的智力与技能超群,编写的程序既能控制弱智的计算机,又能让别人看不懂、不会用。那个时期编程就跟捏泥巴一样随心所欲,于是他们很过分地把程序的集合称为软件,以便自己开心或伤心时再把程序捏个面目全非。人们就在这种美滋滋的感觉下热情地编程,结果产生了一堆问题:程序质量低下,错误频出,进度延误,费用剧增??。这些问题导致了“软件危机”。 在19xx年,一群程序员、计算机科学家与工业界人士聚集一起共商对策。通过借鉴传统工业的成功做法,他们主张通过工程化的方法开发软件来解决软件危机,并冠以“软件工程”这一术语。三十年余年来,尽管软件的一些毛病如人类的感冒一样无法根治,但软件的发展速度超过了任何传统工业,期间并未出现真真的软件危机。这的确是前人的先见之明。如今软件工程成了一门学科。

软件工程主要讲述软件开发的道理,基本上是软件实践者的成功经验和失败教训的总结。软件工程的观念、方法、策略和规范都是朴实无华的,平凡之人皆可领会,关键在于运用。我们不可以把软件工程方法看成是诸葛亮的锦囊妙计─—在出了问题后才打开看看,而应该事先掌握,预料将要出现的问题,控制每个实践环节,并防患于未然。研究软件工程永远做不到理论家那么潇洒:定理证明了,就完事。

我在读大学的十年里有八年从事软件开发,尽管编写了几十万行C++/C程序,也经历了若干次小不点儿大的成功和失败,可老感觉只学了些皮毛,心里慌兮兮的。在博士研究生毕业前的半年里,我告戒自己不应该再稀里糊涂地在程序堆里滚爬下去了,于是就面壁反省,做了一阵子木讷的和尚。在“打坐”时,每有心得体会便记录下来,不知不觉凑成了八章经,我就给此经书起名为《软件工程思想》。

经典的软件工程书籍厚得象砖头,或让人望而却步,或让人看了心事重重。请宽恕我的幼稚,我试图用三个问题:是什么、为什么、怎么办,来解释软件工程的道理。所以本书薄得象饺子皮─—用来包“思想”这种有味道的“馅”。

…… …… 余下全文

篇六 :读后感心得体会

爱与责任

《最高职责》向我们描述了一位英雄机长的成长过程——从一个热爱飞行的孩子到一个拥有高超飞行技巧和强烈责任心的机长的成长过程。产生这一质变的原因不仅仅源于其对飞行的热爱,更重要的一点是他对飞行技能的磨练和经验的积累以及那份责任感的日趋坚定,正是因为这日积月累的量变,最终才使其发生了质的变化。 萨利不是天才,但是对于飞行事业的爱和对旅客负责的工作态度造就了这位出色的机长。书中萨利谈到自己时也说过,他在身体和智力方面都没有什么过人的地方,在军校中只处于中游水平,但是唯一胜过他人的就是他对飞行的热爱。正是由于这份对飞行的热爱,他忍人所不忍,在严酷的军校生活中坚持了下来,并在军校中培养出了严明的纪律感和强烈的责任心,并将这些优秀品质延续至其一身的飞行生涯中。

由于对于飞行的热爱,他积极学习各类飞行技术,强烈关注一切与飞行有关的信息,对每一次的工作充满了激情;由于对旅客和工作强烈的责任心,他认真吸取前人的经验,并将前人的错误进行分析,对各种突发事件进行假想,认真完成每次飞行。在飞行中,任何微小的失误或几秒钟的反应不及都将可能造成严重的后果,这严重的后果往往就是机毁人亡。在哈得孙河上,正是因为萨利过硬的飞行技术,老道的工作经验,以及对前人错误的钻研,才使其完成了那次奇迹。 - 1 -

不仅仅对于民航,想要做好任何工作都需要对工作的热爱和对他人的责任感。但是爱和责任对于民航来说尤为的重要。众所周知,民航事业的重中之重就是安全两个字,要做到安全就需要认真的工作态度,这就需要我们对工作抱有强烈的责任感,我们的工作时刻都与天上正在飞行的飞机挂钩,保证他们的安全,我们责无旁贷。除责任感外,我们也需要对我们的工作,或者说对我们的行业保持热情。再有趣事情做得久了都会感到厌倦,对工作厌倦了将会是一件可怕的事情,因此我们要杜绝这一现象的发生。我们可以通过改善人际关系,活跃工作场所氛围等等来保持我们对工作的热情。亦或者是加强与飞行员的关系网络,毕竟为认识的人服务时,人往往会更加的尽职尽责,同时如果工作是与熟识的人打交道,工作也会变得有趣起来。

…… …… 余下全文

篇七 :《深入了解计算机系统》读后感

《深入了解计算机系统》读后感

13级电商1班 梁小嵘

《深入理解计算机系统》一书是由美国卡耐基—梅隆大学(CMU)的两位教授Randal E. Bryant和 David R. O’ Hallaron所共同编写的。本书通过一个程序员的视角来介绍计算机系统,讲述应用程序员如何能够利用系统知识来编写出更好的程序。该书从一个程序员的角度而不是从一般书籍所描述的从构建者的角度来观察和理解计算机系统的目的是解释所有计算机系统的本质概念,并展示这些概念是如何实实在在地影响应用程序的正确性、性能和实用性的。当然,他们也提及到阅读本书需要一定的计算机和编程基础,否则,阅读起来会有一定的困难。按照道理来讲,我们这些大一新生,刚刚接触程序设计,刚刚接触C语言,本来是不应该这么快就接触这么深层次的技术型书籍,但是,我还是怀着极大的兴趣和勇气把这本书的第一章书看完了。

第一章书是《计算机系统漫游》。初看这个题目,我觉得没什么难度,估计就讲一下硬软件吧,然后略微讲一下操作系统。但是,我发现,我错了。先看一下原文:“计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。虽然系统的具体实现方式随着时间不断变化,但是系统内在的概念却没有改变。所有计算机系统都有相似的硬件和软件组件,它们执行着相似的功能。一些程序员希望深入了解这些组件是如何工作的,以及这些组件是如何影响程序

的正确性和性能的,以此来提高自身的技能。本书便是为这些读者而写的。”

“你将会学习一些实践技巧,比如如何避免由计算机表示数字的方式导致奇怪的数字错误。你将学会怎样通过一些聪明的小窍门来优化你的C代码,以充分利用现代处理器和存储器系统的设计。你将了解到编译器是如何实现过程调用的,以及如何利用这些知识避免缓冲区溢出错误带来的安全漏洞,这些弱点会给网络和英特网软件带来了巨大的麻烦。你将学会如何识别和避免链接时那些令人讨厌的错误,它们困扰着普通程序员。你将学会如何编写自己的Unix外壳、自己的动态储存分配包,甚至是自己的Web服务器。你会认识到并发带来的希望和陷阱,当单个芯片上继集成了多个处理器核时,这个主题变得越来越重要。”

…… …… 余下全文

篇八 :软件Agent技术读后感

软件Agent技术读后感

伴随着网络技术和信息技术的发展,软件Agent技术引起了人们的热切关注,有着广泛的应用前景。Agent这个词就是“代理”的意思。比如,我们想到某地旅游,最简单快捷的办法就是找一个旅游代理。为什么呢?因为旅游社掌握着大量关于旅游的知识和执行的能力。这些事如果要我们自己办,会费时费力。视点再高一点看这个问题,那就是社会化问题。随着人类社会的文明进步,社会分工越来越细。同样,计算机应用系统也面临着这样的问题。众所周知,计算机网络起源于20世纪70年代,经过30年的进步,网络技术以惊人的速度在进步和发展,今天的计算机系统已不是单击系统了,而是跨州连郡。那么这样的系统给我们带来什么负担呢?信息量巨大,系统复杂,异构平台,地理分布,多组织协作等。这样大系统的开发和维护绝对是对人智慧的挑战,这意味着我们不能用原始的技术来解决这个问题,必须寻找新的方法。软件技术也提出一些新的方法,如分布对象和接口技术,典型的如CORBA和COM/DCOM,这些技术解决了分布处理的一些问题,但我们面临的更大困难是网络在动态变化,不论是是从它的规程、拓扑,还是资源,谁也不能说出Internet上有些什么?动态变化带来大量的不确定问题。CORBA和DCOM技术是基于静态的接口知识,很难解决这个问题。这个问题需要一个具有智能的灵活的可以移动的软件实

体来解决,这就是软件Agent,简称SA,这就是SA在今天兴起和发展的原因。

SA的发展来源于两个分支技术,一个是70-80年代的人工智能技术,另一个是后来的移动代码技术。正是由于这两种技术,才使SA得出现成为可能。

对于SA的定义,众说纷纭。但基本上认为SA是一种具有自治性,社会性,反应性和目标驱动的软件实体。自治性是Agent最基本的特性,指行动上的独立性。Agent鸭蛋被初始化后,独立执行,无需用户直接干预。Agent控制着自己的外部行为和内部状态,它可以被授权去做某种决定,完成一些重要的事情。社会性是指Agent不是孤立的,而是存在于一个群体中,可以与其他Agent通讯交流合作。反应性是指Agent清醒地对待所处的环境,感知和作用其所处的环境(环境可能是物理的世界,使用图形接口的客户,其他Agent集合或者所有这些的集合),能对环境变化发生的改变及时做出响应。当Agent遇到例外情况时,可以及时采取措施。目标驱动之Agent具有自己的目标,而且事先有计划。Agent能探测到适合客户目标的有利场景,通知客户这个场景出现的时机。也就是说,Agent不仅能对所处环境做出响应,也能主动地展现面向目标的行为。

…… …… 余下全文