软件术语为什么不重要
1. 计算机专业,关于软件产品术语,基础知识的求解
操作系统用于管理计算机的资源和控制程序的运行。语言处理系统是用于处理软件语言等的软件,如编译程序等。数据库系统是用于支持数据管理和存取的软件,它包括数据库、数据库管理系统等。数据库是常驻在计算机系统内的一组数据,它们之间的关系用数据模式来定义,并用数据定义语言来描述;数据库管理系统是使用户可以把数据作为轴象项进行存取、使用和修改的软件。分布式软件系统包括分布式操作系统、分布式程序设计系统、分布式文件系统、分布式数据库系统等。人机交互系统是提供用户与计算机系统之间按照一定的约定进行信息交互的软件系统,可为用户提供一个友善的人机界面。操作系统的功能包括处理器管理、存储管理、文件管理、设备管理和作业管理。其主要研究内容包括:操作系统的结构、进程(任务)调度、同步机制、死锁防止、内存分配、设备分配、并行机制、容错和恢复机制等。
2. 为什么需要软件工程理论
�匦路⑾秩砑�こ痰谋局省�acobson等撰写了三篇文章详细阐述Semat思想,本刊将陆续刊载,本文是其中第二篇。
这种行为可以从很多地方看出来,很多团队草率地丢弃昂贵的过程和工具的投资,甚至在尝试它们之前。每个项目都采用新方法。每次工作发生变化,在手头真正的工作取得进展前,他们必须学习新方法。这是没有效率的,人们不能从经验中学习,因为他们永远从头开始。底线是,没有什么新事物能够被适当地固定下来即使经过几种现代软件开发趋势,最流行的软件开发方法仍然是规范型的瀑布开发或自由hacking。作为一个行业,我们没有什么真正可以坚守的东西,而且一切似乎没有什么变化。
最新横扫行业的趋势是敏捷。现在,我们可以很明确地说,敏捷运动对软件产业做出了非常积极的 [1] 贡献。它提醒我们,软件开发中,人是第一位的,也是最重要的。事实上,这不是什么新观念,但这是重要的,而且这一点似乎被以前更加技术导向的趋势所忽视,比如说面向对象和Java编程。通过展现一系列优点,敏捷宣言创造了某种强健和适应力强的东西,可以抵挡下一次趋势带来的变革风浪。[2]许多声称支持敏捷哲学的敏捷方法,却没能做到这一点,这是非常让人遗憾的。对一项将人的价值放在过程和工具之上的运动来说,这确实带给了我们很多新的过程和工具。其中的大部分已经显示出效率,通过将团队带回到之前完成的开发软件工作。但在重新聚焦到这上面之前,许多人已经迷失或迷茫,因为将新术语引入旧事物后,让人觉得这一切似乎是全新的。这个对旧思想的不断重新包装和品牌重树让软件开发团队的工作方式剧烈摇摆。对他们的工作和产品任意命名,而不是让人们远离浪费时间的工作,将精力重新聚焦在对高质量软件的开发上。
即使有些方法能够像敏捷哲学一样正确、有益,但相关的信息可能会在摇摆和炒作中丢失。我们已经开始看到对敏捷的反弹,我们担心的是利益将会丢失,当早期使用者投入下一个趋势,而晚期大众则重新主张自己的权利,拒绝采纳这些显然不再流行的东西。
有可能会发生的事情是,我们增加更多时髦的词汇和相互冲突的名词,最终为这一切喧嚣所累!
很显然,我们需要停止对流行和永远令人失望的简单答案的追逐,同时不能阻碍创新和新想法。为了做到这一点,人们需要停止对旧思想不断重新包装和品牌重树。相反,他们应侧重于帮助人们了解如何建立优秀的软件。但我们如何才能重点推动这一变化?我们认为,这个理论就在眼前我们要做的只是抓住它。首先,我们应该从所有流行的方法、过程和实践开始,并从中提炼出软件工程的真理。然后,我们可以描述和捕捉一个最小集合的基本概念,以最小独立过程的形式我们将这个本质物的最小集合称之为内核。
然后以这个内核为出发点,我们可以分析现有的过程和方法,并确定它们所包含的实践。从内核开始,我们可以找到一种描述实践的方式,使它们能够进行比较和结合。
现在所说的这种创造理论的方法本身并不是理论。这是我们已经做过的事情。通过研究一些方法,包括XP、Scrum和统一过程,我们的团队已经确定了20多个内核元素,我们总是做的事情或产生的东西。从表面上看,在这些被研究的方法和我们的工作方式中,有可能会出现很大差异;但在实质上,它们有相同的DNA。举例来说,你可以捕捉功能或用例或用户故事的条件,你可以在没有生命周期与统一过程的生命周期,甚至瀑布生命周期(就像有些人仍然在坚持的那样)的情况下使用这些条件。这些方法肯定有一个共同基础,能够以小的简单的内核要素集的形式被捕获。
现在,还不能冒失地声称,我们的内核提供了必要的理论。需要有比我们更多、更大的头脑来做到这一点。但是,我们会将它作为一项证据,证明它的能力和我们需要的理论就近在眼前。
许多大公司都有自己的方法或过程,也就是一系列标准方法,搭配自己对更具体业务的想法。这些过程通常要用一本厚书或网站来介绍,大量资金被投入到归档工作中。有时,人们被训练使用这些过程,有时只是被简单告知它们在哪儿。在现实中,过程常常被忽视;仅有的被实际使用的部分是,组织中形成了口头传统的那些。这被解释成重新发现的自然法则:人们不看过程的书籍。新的思路引入到组织中,旧过程退出流行,而有关它们的书成为摆设。
在某些大公司甚至会出现多个过程。例如,大型系统集成商可能有十个或二十个不同的过程。有时它们很相似,但相似性背后隐藏着差异。
如果贵公司采用这种实践观,你就不需要因为一些新的性感的东西正成为流行,而抛弃整个工作方式。相反,你只需要对现有的工作方式进行改进,一次改进一个实践。你甚至可以采取那些被其他公司使用的实践,而不用丢掉似乎运作良好的现有实践。作为开始,你需要将现在的工作方式看作一个实践集合。然后寻找你的痛点,然后修补目前的工作方式,通过删除没用的实践,代之以解决这些薄弱环节的实践。一旦你理解了内核和它的使用,就很容易做到这一点。在具有多种不同工作方式的大型组织,你可以使用此方法先后改进每个工作方式,而不必强迫大家使用相同的方法或过程。
这种做法将使新实践更容易被采纳,而无须改变其他实践。想象一下,几年前,你已经引入了内核,并描述你的实践。然后,你将能够轻松引入Scrum,通过用Scrum取代项目管理中现有的实践,而无须对其他实践进行任何重大修改。展望未来,Scrum将很有可能被新的实践代替,你将能够很容易地做到这一点了。
如果我们的技术学院或大学教授学生软件工程基础知识,然后训练学生在一系列良好的实践中使用该基础,那将是非常棒的。教育将会更合乎逻辑,因为它着重以独特的想法,而不是特定的思想,来形成每个方法、过程或方法论。我相信学生们会喜欢的。这里也为相关研究留下了很多空间。记住Kurt Lewin的话:没有什么比一个好的理论更实用了。一个好的理论使得学习和开发你的知识更容易,而不会带来过分的崇拜。这将是聪明的。大多数大学教授们在学术生涯中,从来没有真正的机会来实践大规模的软件开发。但是他们仍然不得不教授软件工程,这当然是不容易或者只是依葫芦画瓢。他们只能这样做,因为这门课在课程表上,而不是因为他们确实有什么可教的。他们没有传授理论,只是一套想法或一个特定的方法。当被问及此事时,一名成功的计算机科学家、教授软件工程课程的教授说:令人惊讶的是,学生们喜欢沐浴在我们交给他们的烂泥塘里。我知道这么说并不严肃,但是可以肯定这位老师并不为他做的事情而感到自豪。
一个理论,将从根本上改变这种局面。学生将学习软件的基础知识。他们将得到一种语言,来沟通软件过程、实践、模式,等等。可以想象,他们将会得到一种以内核为语法的语言和描述过程构成成分的时间的语言结构。这样的语言需要是可执行的,这样实践才会变得生动。我说这些是为了表明这些实践不仅是规范,而且也可执行。当一个项目进行时,这些实践将开始运行,而且活动实例、工作产物,实例、技能角色将被真实物创造和填充。这些方面似乎能与实践模式很好地吻合,有非常有趣的语义规则需要确定和定义。向学生打开了一个全新的世界,可以帮助他们了解软件工程的基本原理。更不用说,为对实践和理论感兴趣的研究人员打开了一个全新的世界。
回顾自己1987年后的职业生涯,许多人建议我写一本有关方法论的书。当时Objectory有一些新的想法,比如说用例、用例驱动的开发(这是一个测试驱动设计、合作、序列图、组件和基于组件的开发)。其余的大部分内容都没什么特别的。实施、单元测试、系统测试、性能测试、配置、规划都是相当传统的。当然,我有整个生命周期的经验,但我不是所有事情的世界级专家。然而,为了写书,我不得不包含整个生命周期的内容,即使其中很多不是我的专长。随着我们寻找的新理论,没有任何必要再说明不包含创新的内容。你不需要写一本书来发布新想法,然后把软件开发团队需要做的一切都放进去,而只需要描述你的新实践或新模式,也许第二天你就能向全世界发布了。全世界的任何好点子都可以贡献出来并获得成功。
终于,软件团队将能够摆脱亦步亦趋地追随潮流所造成的无休止的摇摆,成为严格意义上的软件工程团队。团队在坚实的基础上通过优秀的软件开发实践建设和扩展知识。这个基础不会频繁变化,不会强迫你一遍又一遍学习同样的事情。它可以让你通过自己的总结,而不是出席的课程来展示专业。它可以让你轻松和无缝地引进新思路和新队友,而不会造成性能骤降或精力浪费。团队最终能够不断改进和适应他们的工作方式,迎接他们每天面对的挑战。他们将能够开发自己的知识和技能,以一种能够让他们顺利地和来自不同背景、团队和组织的其他人合作的方式,而不必一遍又一遍地重复学习同样的事情了。
最后的话我们对软件工程的了解缺乏一个基本理论。因此,我们不断用略有不同的词再造旧方法,掩盖了真正的创新,同时让抛弃旧的不好的部分,利用新的好的部分变得困难。该理论将帮助我们大大改进软件工程教育。这将帮助我们在面对身边涌现的新想法时的反应不那么天真。最后,它也将帮助我们更快地接受新的思想。这一理论的真正受益者将是软件行业,这一点已经在许多公司得到证明。我们将能够方便地教育我们的人员,让他们加快速度;改进我们生产产品的方式;系统地重新设计(比重构程度更强)我们的产品;不断改进我们的工作方式。其结果将是更好的软件、更快的速度和大幅降低的成本。正如上面提到的,我们需要齐心协力才能做到这一点。从Scott Ambler最近的一篇文章理论需要战略中可以看到这种势头已经开始,但仍有许多工作要做。
我们已经证明它的有效性,但我们仍然要做许多工作才能建立一个公认的标准,必须在一组专家和权威之间建立共识才能完成这点。我们期待着与这些专家的合作。
3. 软件的重要性
软件的重要性:
1)驱动软件支持硬件在系统下使用。
2)系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
3)支撑软件是支撑各种软件的开发与维护的软件,又称为软件开发环境(SDE)。它主要包括环境数据库、各种接口软件和工具组。
4)应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
5)软件(中国大陆及香港用语,台湾称作软体,英文:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。
4. 软件破解最基本的6个术语
1. 断点:
所谓断点就是程序被中断的地方,这个词对于解密者来说是再熟悉不过了。那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。我们解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程序,找到正确的注册码。所以我们需要为被解密的程序设置断点,在适当的时候切入程序内部,追踪到程序的注册码,从而达到crack的目的。
2. 领空:
这是个非常重要的概念,但是也初学者是常常不明白的地方。我们在各种各样的破解文章里都能看到领空这个词,如果你搞不清楚到底程序的领空在哪里,那么你就不可能进入破解的大门。或许你也曾破解过某些软件,但那只是瞎猫碰到死老鼠而已(以前我就是这样的^_^,现在说起来都不好意思喔!)。所谓程序的领空,说白了就是程序自己的地方,也就是我们要破解的程序自己程序码所处的位置。也许你马上会问:我是在程序运行的时候设置的断点,为什么中断后不是在程序自己的空间呢?因为每个程序的编写都没有固定的模式,所以我们要在想要切入程序的时候中断程序,就必须不依赖具体的程序设置断点,也就是我们设置的断点应该是每个程序都会用到的东西。在DOS时代,基本上所有的程序都是工作在中断程序之上的,即几乎所有的DOS程序都会去调用各种中断来完成任务。但是到了WINDOWS时代,程序没有权力直接调用中断,WINDOWS系统提供了一个系统功能调用平台(API),就向DOS程序以中断程序为基础一样,WINDOWS程序以API为基础来实现和系统打交道,从而各种功能,所以WINDWOS下的软件破解其断点设置是以API函数为基础的,即当程序调用某个API函数时中断其正常运行,然后进行解密。例如在SOFTICE中设置下面的断点:bpx GetDlgItemText(获取对话框文本),当我们要破解的程序要读取输入的数据而调用GetDlgItemText时,立即被SOFTICE拦截到,从而被破解的程序停留在GetDlgItemText的程序区,而GetDlgItemText是处于WINDWOS自己管理的系统区域,如果我们擅自改掉这部分的程序代码,那就大祸临头了^_^!所以我们要从系统区域返回到被破解程序自己的地方(即程序的领空),才能对程序进行破解,至于怎样看程序的领空请看前面的SOFTICE图解。试想一下:对于每个程序都会调用的程序段,我们可能从那里找到什么有用的东西吗?(怎么样去加密是程序自己决定的,而不是调用系统功能实现的!)
3. API:
即Application Programming Interface的简写,中文叫应用程序编程接口,是一个系统定义函数的大集合,它提供了访问操作系统特征的方法。 API包含了几百个应用程序调用的函数,这些函数执行所有必须的与操作系统相关的操作,如内存分配、向屏幕输出和创建窗口等,用户的程序通过调用API接口同WINDOWS打交道,无论什么样的应用程序,其底层最终都是通过调用各种API函数来实现各种功能的。通常API有两中基本形式:Win16和Win32。 Win16是原来的、API的16位版本,用于Windows 3.1;Win32是现在的、API的32位版本,用于Windows 95/98/NT/ME/2000。Win32包括了Win16,是Win16的超集,大多数函数的名字、用法都是相同的。16位的API函数和32位的API函数的区别在于最后的一个字母,例如我们设置这样的断点:bpx GetDlgItemText、bpx GetDlgItemTextA和bpx GetDlgItemTextW,其中 GetDlgItemText是16位API函数,GetDlgItemTextA和GetDlgItemTextW是32位API函数,而GetDlgItemTextA表示函数使用单字节,GetDlgItemTextW表示函数使用双字节。现在我们破解中常用到的是Win32单字节API函数,就是和GetDlgItemTextA类似的函数,其它的两种(Win16 API和Win32双字节API函数)则比较少见。 Win32 API函数包含在动态链接库(Dynamic Link Libraries,简称DLLs)中,即包含在kernel32.dll、user32.dll、gdi32.dll和comctl32.dll中,这就是为什么我们要在softice中用exp=C:\windows\system\kernel32.dll等命令行将这些动态链接库导入softice中的原因。因为不这样做的话,我们就无法拦截到系统Win32 API函数调用了。
4. 关于程序中注册码的存在方式:
破解过程中我们都会去找程序中将输入的注册码和正确的注册码相比较的地方,然后通过对程序的跟踪、分析找到正确的注册码。但是正确的注册码通常在程序中以两种形态存在:显式的和隐式的,对于显式存在的注册码,我们可以直接在程序所处的内存中看到它,例如你可以直接在SOFTICE的数据窗口中看到类似"297500523"这样存在的注册码(这里是随意写的),对于注册码显式存在的软件破解起来比较容易;但是有些软件的程序中并不会直接将我们输入的注册码和正确的注册码进行比较,比如有可能将注册码换算成整数、或是将注册码拆开,然后将每一位注册码分开在不同的地方逐一进行比较,或者是将我们输入的注册码进行某种变换,再用某个特殊的程序进行验证等等。总之,应用程序会采取各种不同的复杂运算方式来回避直接的注册码比较,对于这类程序,我们通常要下功夫去仔细跟踪、分析每个程序功能,找到加密算法,然后才能破解它,当然这需要一定的8086汇编编程功底和很大的耐心与精力。
5. 关于软件的破解方式:
本人将破解方式分为两大类,即完全破解和暴力破解。所谓完全破解主要是针对那些需要输入注册码或密码等软件来说的,如果我们能通过对程序的跟踪找到正确的注册码,通过软件本身的注册功能正常注册了软件,这样的破解称之为完全破解;但如果有些软件本身没有提供注册功能,只是提供试用(DEMO),或是注册不能通过软件本身进行(例如需要获取另外一个专用的注册程序,通过INTERNET的注册等等),或者是软件本身的加密技术比较复杂,软件破解者的能力、精力、时间有限,不能直接得到正确的注册码,此时我们需要去修改软件本身的程序码。
6. 关于破解教程中程序代码地址问题:
破解教程中都会放上一部分程序代码以帮助讲解程序的分析方法
5. 《大学计算机基础》 什么是软件,为什么软件是重要的
办公软件,文档,表格,幻灯片,OFFICE一套,以及最简单常规的一些操作。
6. 软件编程常用术语
1. XML 首先,你要了解XML。我不是说仅仅是XML规格本身,还包括一系列相关的基于XML的语言:最重要的是XHTML、XSLT、XSL、DTDs、XML Schema (XSD)、XPath、XQuery和SOAP。那些在过去5年内从未碰过键盘的人,可能不知道XML为何物。XML是一种文本文件,使用与HTML类似的标记。XML能定义一个树状结构,并能描述所含的数据。 XML最好的一点是既能存结构化数据也能存非结构化数据。它既能存贮和描述“规格的”(regular)表格数据,也能容纳和描述“粗糙的”(ragged)文件数据。 XHTML是现今写HTML的首选方法。因为它是形式完好(well formed)的XML,比起古老的、通常是畸形(malformed)的HTML文件,XHTML格式的文件更容易处理。 XSLT和XSL是用于把XML文件转成其它格式的语言。可转换的格式包括:文本文件、PDF文件、HTML、以逗号为分隔符的文件,或其它XML文件。 DTD和XML Schema描述XML文件所能包含的内容的类型,并让你“验证”XML文件内容的合理性,而不用写特殊代码以确保内容符合规则要求。 XPath和XQuery是用于从XML文件中抽取单个项目或一组项目的查询语言。XQuery扩展了XPath,因而更重要。XQuery与XML的关系正像SQL与关系数据库的关系。 SOAP是Web服务之间的一个标准通讯协议。尽管你不需要对SOAP标准一清二楚,你应该熟悉一般的schema和它的工作原理,以便能应用这门技术。 2. Web服务 Web服务是XML流行后的一个直接产物。因为你能用XML描述数据和物件,因为你能用schema确保XML文件内容的合理性,因为XML是基于文本的规范,XML为跨平台通讯标准提供了一个极其方便的基本格式。如果你还从来没碰到Web服务,你可能很快就会碰到,在未来5年内,你几乎肯定会碰到。熟悉Web服务十分重要,因为它是目前所有跨不同机器、不同语言、不同平台和不同地点的通讯协议中最简单的一个。不管你需要与否,Web服务是迈向互用性的重要一步。 XML工作组主席John Bosak曾说XML“给Java一些事做”。实际上,Web服务让所有语言都有了一些事做。Web服务让在大型机上运行的COBOL应用软件能调用在手持设备上运行的Java应用程序、能让Java applet与.NET服务器交谈、能让微机软件与Web服务器无缝连接,并提供了一个相对容易的方法,让企业不光能向外界提供数据,还能提供功能,而且是一种与语言、平台和位置都独立的方法。 3. 面向对象的编程 很多程序员仍认为OOP是象牙塔里的技术。但如果你想一下是什么语言在过去的10年里占主导地位,你就会理解OOP不是象牙塔里的技术。OOP从Smalltalk开始,传到C++和Pascal (Delphi)。Java使OOP大踏步地迈向主流,几年后的VB.NET和C#则完全确立了OOP的优势地位。尽管这些语言中的多数并不要求你必须会OOP,但我觉得如果你不了解OOP的基本概念也不知道如何应用这些概念,你能找到的编程工作将越来越少。 4. Java、C++、C#和VB.NET 我把这些语言列在一起,并不是建议你成为每一种语言的专家。我的理由是:学习编程最有效的方法之一是看代码,而你能看到的大量的代码很可能不是用你所喜爱的语言编写的。 在过去几年,各语言的能力越来越接近。现在,你可以用VB.NET写Windows服务、Web应用程序或命令行程序。即使你只使用一种语言,你也应该学一些其它语言,以便能看懂那些样例,并将其翻译到你所用的语言。这4种语言是基本核心,还有其它一些满足不同需要、颇具用途的语言,如FORTRAN、COBOL、APL、ADA、Perl和Lisp。 5. javascript 尽管名字有些相像,但Java与javascript并无关联。为什么一个脚本语言会如此重要呢?因为所有主流浏览器都用javascript。如果你需要写Web应用程序,你就有足够的理由学javascript。javascript可以用作ASP或ASP.NET的服务器语言,也可以当做用于扩展XSLT的功能语言(functional language)。javascript是Mozilla/Netscape中用于激活基于XUL的程序接口的首选语言。javascript的一个变种ActionScript是Flash MX的编程语言。将来,javascript很可能成为新设备的编程语言,以及大型应用软件中的宏语言。 与javascript相对照的是VBScript。尽管Microsoft的软件对VBScript有良好的支持,但VBScript在未来的开发工作中很可能是一个糟糕的选择。就是Microsoft也倾向于用javascript(或Microsoft自己的变种:JScript)写客户端程序。在选择脚本语言时,请选择javascript。 6. 正则表达式(Regular Expressions) 查寻关系数据库可以用SQL,查询XML可以用XPath和XQuery,查询纯文本文件则可以用正则表达式。例如,你可以用一个命令从一个HTML文件中查找并删除所有的注释。各种开发语言内置的一些简单的文本查询功能,如"IndexOf"函数或VB中经典的"InStr"函数或"Like"操作符,根本不能与正则表达式相提并论。现在,各种主要的开发语言都提供使用正则表达式的途径。尽管正则表达式本身既难懂更难读(是回到早期计算机时代的一种倒退),但它却是一个功能强大而且未被充分利用的工具。 7. 设计模式 正像OOP通过把对象分类以简化编程一样,设计模式对一些普遍的对象之间的交互进行分类,并赋予一个恰当的名称。OOP用得越多,设计模式就越有用。一些最常用的模式的名称已经变成了软件开发领域共同使用的术语,所以要跟上信息的主流,你就要对设计模式有相当的理解。 8. Flash MX 如果你需要在客户端得到比HTML和CSS更多的图形和更强的编程功能,Flash是你的答案。用Flash编程比开发Java applets或写.NET代码要快得多,也容易得多。 在最新版本 (MX) 中,Flash不仅仅是画图和制造动画的工具,它已经成为一个编程功能强大的开发环境:能调用SOAP Web服务,也能调用远端服务器上的ColdFusion、Java或.NET程序。Flash无处不在。它的引擎存在于世界上大多数客户端计算机,包括手持设备、置顶盒、甚至是新的书写板电脑。所以使用Flash能大大扩展你的程序的应用范围。 9. Linux/Windows 熟悉Linux。在一台旧机器或新机器上安装Linux。下载图形用户界面,在其基础上写一些程序。安装Apache,写一个Web应用程序。这个世界不再仅仅是属于Windows,这种趋势可能还会持续下去。如果你是一名中坚的Linux开发人员,那就抛弃你对Windows的憎恶,看看你能否做一些Windows编程。Windows能继续在台式电脑上称王是有其原因的,这不仅仅是因为Microsoft控制了这个市场。 没人知道你们公司会在什么时候决定从Linux转向Windows(或从Windows转向Linux),或者你想跳到一家用另一种平台的公司,或者你想出了开发一个杀手软件的好主意,所以你要争取拥有在不同操作系统上的编程经验。 10. SQL 尽管SQL不像本文讨论的其它技术那样新,而且SQL的重要性在未来10年内很可能降低,但它仍然是一项基本技能。很多开发人员还没有掌握这门技术,或掌握得不够,不足以有效率地使用它。不要依赖具有图形用户界面的SQL生成器替你做事情,你要自己手工地写查询命令,直到你熟悉基本的SQL语法为止。了解SQL不仅能帮助你日后学习XQuery,你还有可能马上发现能简化或改进目前项目的方法。 培养好奇心 最后,(对,我意识到这是第11门技术),好奇心是你最重要的技能。要去尝试各种东西。新语言或新技术对你当前或将来的工作可能有用,也可能没用,但并不是你所学的每一件事都是为了工作。不要害怕失败,万事开头难,学新技术也是如此。大多数失败是因为人们希望太快地学到太多的东西。要对每一点进步感到满意,不要让时间(或缺乏时间)妨碍你。相反,你要安排时间留心、研究、试验新的开发技术和工具。 你可能永远也没有必要成为这些技术的专家,而且我的选择可能根本不适合你的特殊情况,但通过培养好奇心,你将会发现你应该了解的东西。
7. 1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网
你说的前半句我没异议, 后半句可以讨论一下.
根据软件工程的思想, 软件测试是检测软件功能和性能的一个流程, 如果没有软件测试, 那么软件的正常使用将得不到保障. 软件的风险将会很大.
软件测试在实际执行过程中不能100%的找出软件的所有问题, 如果软件产品中有潜在的大问题没有被发现, 同样会有隐患.
但是经过严格流程测试过的软件, 一般不会出现致命的问题, 当然, 小问题应该会有. 所以说软件测试是软件质量的保障. 至于说是安全网, 这个词个人觉得用的很模糊.
还有什么问题我们可以讨论, 相互学习..
8. 软件公司术语
就是客户的售后服务。不是软件公司的核心部门。想成长的不要去。