一梢莽、軟件的內(nèi)涵
什么是軟件?
著名的美國(guó)軟件工程教材作者R.S.Pressman的定義是:軟件是能夠完成預(yù)定功能和性能的可執(zhí)行的計(jì)算機(jī)程序奸披,包括使程序正常執(zhí)行所需要的數(shù)據(jù)昏名,以及有關(guān)描述程序操作的和使用文檔。簡(jiǎn)而言之阵面,可表述為:軟件 = 程序 + 文檔轻局。
1.1 軟件的定義
計(jì)算機(jī)系統(tǒng)中的程序及其文檔。
程序是計(jì)算任務(wù)的處理對(duì)象和處理規(guī)則的描述样刷;
文檔是為了便于了解程序所需的闡明性資料仑扑。
1.2 軟件的特點(diǎn)
軟件是無(wú)形的、不可見(jiàn)的邏輯實(shí)體
軟件是設(shè)計(jì)開(kāi)發(fā)的置鼻,而不是生產(chǎn)制造的
軟件在使用過(guò)程中沒(méi)有磨損镇饮、老化問(wèn)題
軟件是定制開(kāi)發(fā)的
軟件是復(fù)雜的
軟件開(kāi)發(fā)成本高
軟件易于復(fù)制
軟件質(zhì)量要求較高
軟件的開(kāi)發(fā)與運(yùn)行都離不開(kāi)相關(guān)的計(jì)算機(jī)系統(tǒng)環(huán)境
軟件開(kāi)發(fā)工作牽涉到很多社會(huì)因素
軟件開(kāi)發(fā)依賴于開(kāi)發(fā)人員的業(yè)務(wù)素質(zhì)、智力箕母,以及人員的組織储藐、合作和管理,而硬件設(shè)計(jì)與人的關(guān)系相對(duì)小嘶是。
軟件開(kāi)發(fā)的實(shí)際開(kāi)發(fā)成本只是整個(gè)工程成本的一小部分钙勃,而軟件測(cè)試、系統(tǒng)維護(hù)等任務(wù)將占據(jù)工程的很大一部分成本聂喇。
1.3 軟件的種類
按照軟件的功能劃分辖源,軟件一般可分為:
系統(tǒng)軟件、支撐軟件和應(yīng)用軟件。
二同木、操作系統(tǒng)
1.什么是操作系統(tǒng)
操作系統(tǒng)(Operating System浮梢,簡(jiǎn)稱OS)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,用戶和計(jì)算機(jī)的接口彤路,同時(shí)也是計(jì)算機(jī)硬件和其他軟件的接口秕硝。 其能管理計(jì)算機(jī)系統(tǒng)的硬件、軟件及數(shù)據(jù)資源洲尊,控制程序運(yùn)行远豺,改善人機(jī)界面,為其它應(yīng)用軟件提供支持坞嘀,并使計(jì)算機(jī)系統(tǒng)所有資源最大限度地發(fā)揮作用躯护。此外其還提供了各種形式的用戶界面,使用戶有一個(gè)好的工作環(huán)境丽涩,為其它軟件的開(kāi)發(fā)提供必要的服務(wù)和相應(yīng)的接口棺滞。
2.操作系統(tǒng)的功能
(1)服務(wù)
例如操作系統(tǒng)對(duì)用戶和應(yīng)用提供服務(wù)(I/O服務(wù)、聲卡矢渊、網(wǎng)卡的訪問(wèn)等等...)径筏。操作系統(tǒng)也使得我們使用計(jì)算機(jī)更加方便灵巧。
(2)控制
操作系統(tǒng)控制了計(jì)算機(jī)中軟件與硬件的運(yùn)行方式,它也限制了這些不同的應(yīng)用程序所占用的資源。
(3)管理
操作系統(tǒng)從對(duì)內(nèi)部對(duì)象管理的層面上說(shuō)勋磕,是一個(gè)資源分配器傻昙。為了使得不同的程序能夠盡可能的同時(shí)運(yùn)行刁标,操作系統(tǒng)需要在不同時(shí)刻對(duì) 不同程序適當(dāng)?shù)姆峙滟Y源達(dá)到程序協(xié)調(diào)運(yùn)行的目的博助。
以上幾點(diǎn)可由下面的幾個(gè)特性概括:
a.用戶角度上,操作系統(tǒng)是一個(gè)控制軟件? ? ?
b.管理應(yīng)用程序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
c.為應(yīng)用程序提供服務(wù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
d.殺死應(yīng)用程序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
e.資源管理? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
f.管理外設(shè)猪瞬,分配資源
3.操作系統(tǒng)的特點(diǎn)
(1)并發(fā)性
計(jì)算機(jī)系統(tǒng)中同時(shí)運(yùn)行著多個(gè)程序憎瘸。體現(xiàn)在:用戶程序和用戶程序之間兵法執(zhí)行,或者用戶程序和操作系統(tǒng)程序并發(fā)執(zhí)行
(2)共享性:操作系統(tǒng)的程序和多個(gè)用戶程序共用系統(tǒng)中的資源陈瘦。 共享的方式:互斥共享:一段時(shí)間內(nèi)只能執(zhí)行一個(gè)用戶程序幌甘,如打印機(jī)。 同時(shí)共享:在一段時(shí)間里可以被多個(gè)程序訪問(wèn)甘晤,如硬盤
(3)隨機(jī)性:對(duì)不可預(yù)測(cè)發(fā)生的事件做出響應(yīng)含潘,也無(wú)法預(yù)知每個(gè)進(jìn)程的快慢。
(4)不確定性:由共享和并發(fā)引起线婚,比如程序運(yùn)行的時(shí)間遏弱,資源是獨(dú)占還是共享的等
4.操作系統(tǒng)架層次結(jié)構(gòu):
操作系統(tǒng)起到承上(上承應(yīng)用程序)啟下(下接硬件)的作用,直接面向各種硬件塞弊。
5.操作系統(tǒng)在軟件中的位置:? ? ? ? ?
軟件分為應(yīng)用軟件和系統(tǒng)軟件漱逸,造作系統(tǒng)隸屬于系統(tǒng)軟件泪姨,它位于應(yīng)用軟件之下,為應(yīng)用軟件提供服務(wù)支撐饰抒。
三肮砾、軟件工程
什么是軟件工程?
從上世紀(jì)90年代初起袋坑,計(jì)算學(xué)科的發(fā)展遠(yuǎn)遠(yuǎn)超越了計(jì)算機(jī)科學(xué)的邊界仗处,形成了計(jì)算機(jī)科學(xué)、計(jì)算機(jī)工程枣宫、軟件工程婆誓、信息系統(tǒng)與信息技術(shù)等若干獨(dú)立學(xué)科。計(jì)算機(jī)工程從電子工程學(xué)科中分離出來(lái)也颤,旨在研究計(jì)算機(jī)硬件的相關(guān)工程問(wèn)題洋幻,而軟件工程從計(jì)算機(jī)科學(xué)中的一個(gè)學(xué)科方向發(fā)展成為與之并重的一門獨(dú)立學(xué)科,重點(diǎn)研究如何以系統(tǒng)的翅娶、可控的文留、高效的方式開(kāi)發(fā)和維護(hù)高質(zhì)量軟件的問(wèn)題。
1.軟件工程的定義
軟件工程學(xué)科誕生后竭沫,人們?yōu)檐浖こ探o出了不同的定義燥翅,例如最早的定義是由F.L. Bauer給出的,即“軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上高效運(yùn)行的输吏、可靠的軟件而建立和應(yīng)用一系列堅(jiān)實(shí)的軟件工程原則”权旷。而美國(guó)梅隆卡耐基大學(xué)軟件工程研究所(SEI)給出的定義則是軟件工程是以工程的形式應(yīng)用計(jì)算機(jī)科學(xué)和數(shù)學(xué)原理替蛉,從而經(jīng)濟(jì)有效地解決軟件問(wèn)題贯溅。但目前普遍使用的軟件工程定義是由IEEE給出的,即軟件工程是將系統(tǒng)性的躲查、規(guī)范化的它浅、可定量的方法應(yīng)用于軟件的開(kāi)發(fā)、運(yùn)行和維護(hù)镣煮。
軟件工程概念實(shí)際存在兩層含義姐霍,從狹義概念看,軟件工程著重體現(xiàn)在軟件過(guò)程中所采用的工程方法和管理體系典唇,例如镊折,引入成本核算、質(zhì)量管理和項(xiàng)目管理等介衔,即將軟件產(chǎn)品開(kāi)發(fā)看作是一項(xiàng)工程項(xiàng)目所需要的系統(tǒng)工程學(xué)和管理學(xué)恨胚。從廣義概念看,軟件工程涵蓋了軟件生命周期中所有的工程方法炎咖、技術(shù)和工具赃泡,包括需求工程寒波、設(shè)計(jì)、編程升熊、測(cè)試和維護(hù)的全部?jī)?nèi)容俄烁,即完成一個(gè)軟件產(chǎn)品所必備的思想、理論级野、方法页屠、技術(shù)和工具。
2.軟件工程的內(nèi)涵
軟件工程學(xué)科包含為完成軟件需求蓖柔、設(shè)計(jì)卷中、構(gòu)建、測(cè)試和維護(hù)所需的知識(shí)渊抽、方法和工具蟆豫。軟件工程不局限在理論之上,更重要在實(shí)踐上懒闷,能夠幫助軟件組織協(xié)調(diào)團(tuán)隊(duì)十减、運(yùn)用有限的資源,遵守已定義的軟件工程規(guī)范愤估,通過(guò)一系列可復(fù)用的帮辟、有效的方法,在規(guī)定的時(shí)間內(nèi)達(dá)到預(yù)先設(shè)定的目標(biāo)玩焰。針對(duì)軟件工程的實(shí)施由驹,無(wú)論是采用什么樣的方法和工具,先進(jìn)的軟件工程思想始終是最重要的昔园。只有在正確的工程思想指導(dǎo)下蔓榄,才能制定正確的技術(shù)路線,才能正確地運(yùn)用方法和工具達(dá)到軟件工程或項(xiàng)目管理的既定目標(biāo)默刚。
3.軟件工程是一門交叉性學(xué)科
軟件工程是一門交叉性的工程學(xué)科甥郑,它是將計(jì)算機(jī)科學(xué)、數(shù)學(xué)荤西、工程學(xué)和管理學(xué)等基本原理應(yīng)用于軟件的開(kāi)發(fā)與維護(hù)中澜搅,其重點(diǎn)在于大型軟件的分析與評(píng)價(jià)、規(guī)格說(shuō)明邪锌、設(shè)計(jì)和演化勉躺,同時(shí)涉及管理、質(zhì)量觅丰、創(chuàng)新饵溅、標(biāo)準(zhǔn)、個(gè)人技能舶胀、團(tuán)隊(duì)協(xié)作和專業(yè)實(shí)踐等概说。從這個(gè)意義上看碧注,軟件工程可以看作由下列3部分組成:
(1)計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造軟件的模型與算法;
(2)工程科學(xué)用于制定規(guī)范糖赔、設(shè)計(jì)范型萍丐、評(píng)估成本以及確定權(quán)衡等;
(3)管理科學(xué)用于計(jì)劃放典、資源逝变、質(zhì)量、成本等管理奋构。
例如壳影,計(jì)算機(jī)輔助軟件工程(Computer Aided Software Engineering,CASE)是一組工具和方法的集合弥臼,可以輔助軟件生命周期各階段進(jìn)行的軟件開(kāi)發(fā)活動(dòng)宴咧。CASE吸收了CAD(計(jì)算機(jī)輔助設(shè)計(jì))、軟件工程径缅、操作系統(tǒng)掺栅、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)和許多其他計(jì)算機(jī)領(lǐng)域的原理和技術(shù)纳猪。這個(gè)例子也體現(xiàn)了這一點(diǎn)——軟件工程是學(xué)科交叉的氧卧、集成和綜合的領(lǐng)域。
4.軟件工程學(xué)科范圍
如果從知識(shí)領(lǐng)域看氏堤,軟件工程學(xué)科是以軟件方法和技術(shù)為核心沙绝,涉及計(jì)算機(jī)的硬件體系、系統(tǒng)基礎(chǔ)平臺(tái)等相關(guān)領(lǐng)域鼠锈,同時(shí)還要涉及一些應(yīng)用領(lǐng)域和通用的管理學(xué)科闪檬、組織行為學(xué)科。例如脚祟,通過(guò)應(yīng)用領(lǐng)域的知識(shí)幫助我們理解用戶的需求谬以,從而可以根據(jù)需求來(lái)設(shè)計(jì)軟件的功能强饮。 在軟件工程中必然要涉及組織中應(yīng)用系統(tǒng)的部署和配置所面臨的實(shí)際問(wèn)題由桌,同時(shí)又必須不斷促進(jìn)知識(shí)的更新和理論的創(chuàng)新。為了真正解決實(shí)際問(wèn)題邮丰,需要在理論和應(yīng)用上獲得最佳平衡行您。
四、程序設(shè)計(jì)語(yǔ)言的發(fā)展
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,通常簡(jiǎn)稱為編程語(yǔ)言剪廉,是一組用來(lái)定義計(jì)算機(jī)程序的語(yǔ)法規(guī)則娃循。它是一種被標(biāo)準(zhǔn)化的交流技巧,用來(lái)向計(jì)算機(jī)發(fā)出指令斗蒋。一種計(jì)算機(jī)語(yǔ)言讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù)捌斧,并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)笛质。
在過(guò)去的幾十年間,大量的程序設(shè)計(jì)語(yǔ)言被發(fā)明捞蚂、被取代妇押、被修改或組合在一起。盡管人們多次試圖創(chuàng)造一種通用的程序設(shè)計(jì)語(yǔ)言姓迅,卻沒(méi)有一次嘗試是成功的敲霍。之所以有那么多種不同的編程語(yǔ)言存在的原因是,編寫程序的初衷其實(shí)也各不相同;新手與老手之間技術(shù)的差距非常大丁存,而有許多語(yǔ)言并對(duì)新手來(lái)說(shuō)太難學(xué);還有肩杈,不同程序之間的運(yùn)行成本(runtime cost)各不相同。
有許多用于特殊用途的語(yǔ)言解寝,只在特殊情況下使用扩然。例如,PHP專門用來(lái)顯示網(wǎng)頁(yè);Perl更適合文本處理;C語(yǔ)言被廣泛用于操作系統(tǒng)和編譯器的開(kāi)發(fā)(所謂的系統(tǒng)編程)聋伦。
高級(jí)程序設(shè)計(jì)語(yǔ)言(也稱高級(jí)語(yǔ)言)的出現(xiàn)使得計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言不再過(guò)度地倚賴某種特定的機(jī)器或環(huán)境与学。這是因?yàn)楦呒?jí)語(yǔ)言在不同的平臺(tái)上會(huì)被編譯成不同的機(jī)器語(yǔ)言,而不是直接被機(jī)器執(zhí)行嘉抓。最早出現(xiàn)的編程語(yǔ)言之一FORTRAN的一個(gè)主要目標(biāo)索守,就是實(shí)現(xiàn)平臺(tái)獨(dú)立。
軟件的產(chǎn)生始于早期的機(jī)械式計(jì)算機(jī)的開(kāi)發(fā)抑片。從19世紀(jì)起卵佛,隨著機(jī)械式計(jì)算機(jī)的更新,出現(xiàn)了穿孔卡片敞斋,這種卡片可以指導(dǎo)計(jì)算機(jī)進(jìn)行工作截汪。但是直到20世紀(jì)中期現(xiàn)代化的電子計(jì)算機(jī)出現(xiàn)之后,軟件才真正得以飛速發(fā)展植捎。在世界上第一臺(tái)計(jì)算機(jī)ENIAC上使用的也是穿孔卡片衙解,在卡片上使用的是專家們才能理解的語(yǔ)言,由于它與人類語(yǔ)言的差別極大焰枢,所以我們稱之為機(jī)器語(yǔ)言蚓峦。也就是第一代計(jì)算機(jī)語(yǔ)言。這種語(yǔ)言本質(zhì)上是計(jì)算機(jī)能識(shí)別的唯一語(yǔ)言济锄,但人類卻很難理解它暑椰,以后的計(jì)算機(jī)語(yǔ)言就是在這個(gè)基礎(chǔ)上,將機(jī)器語(yǔ)言越來(lái)越簡(jiǎn)化到人類能夠直接理解的荐绝、近似于人類語(yǔ)言的程度一汽,但最終送入計(jì)算機(jī)的工作語(yǔ)言,還是這種機(jī)器語(yǔ)言低滩。高級(jí)語(yǔ)言的任務(wù)就是將它翻譯成易懂的語(yǔ)言召夹,而這個(gè)翻譯工作可以由計(jì)算速度越來(lái)越高岩喷、工作越來(lái)越可靠的計(jì)算機(jī)自己來(lái)完成。
計(jì)算機(jī)語(yǔ)言發(fā)展到第二代监憎,出現(xiàn)了匯編語(yǔ)言均驶。比起機(jī)器語(yǔ)言,匯編語(yǔ)言大大前進(jìn)了一步枫虏,盡管它還是太復(fù)雜妇穴,人們?cè)谑褂脮r(shí)很容易出錯(cuò)誤,但畢竟許多數(shù)碼已經(jīng)開(kāi)始用字母來(lái)代替隶债。簡(jiǎn)單的“0腾它、1”數(shù)碼誰(shuí)也不會(huì)理解,但字母是人們能夠閱讀并拼寫的死讹。第二代計(jì)算機(jī)語(yǔ)言仍然是“面向機(jī)器”的語(yǔ)言瞒滴,但它已注定要成為機(jī)器語(yǔ)言向更高級(jí)語(yǔ)言進(jìn)化的橋梁。
當(dāng)計(jì)算機(jī)語(yǔ)言發(fā)展到第三代時(shí)赞警,就進(jìn)入了“面向人類”的語(yǔ)言階段妓忍。你可以閱讀、并直接用人類的語(yǔ)言來(lái)輸入愧旦。對(duì)我們漢語(yǔ)來(lái)說(shuō)世剖,目前還不能用中文漢字來(lái)輸入指令,這主要是因?yàn)橹形牡妮斎脒€沒(méi)有一個(gè)非常好的手段笤虫。第三代語(yǔ)言也被人們稱之為“高級(jí)語(yǔ)言”旁瘫。高級(jí)語(yǔ)言是一種接近于人們使用習(xí)慣的程序設(shè)計(jì)語(yǔ)言。它允許用英文寫解題的計(jì)算程序琼蚯,程序中所使用的運(yùn)算符號(hào)和運(yùn)算式子酬凳,都和我們?nèi)粘S玫臄?shù)學(xué)式子差不多。例如用BASIC高級(jí)語(yǔ)言遭庶,要想計(jì)算7×6的結(jié)果宁仔,只需寫出 PRINT7*6即可,送入計(jì)算機(jī)后將自動(dòng)進(jìn)行計(jì)算并打印出結(jié)果峦睡。一般人都能很快學(xué)會(huì)使用計(jì)算機(jī)翎苫,并且完全可以不了解機(jī)器指令,也可以不懂計(jì)算機(jī)的內(nèi)部結(jié)構(gòu)和工作原理赐俗,就能編寫出應(yīng)用計(jì)算機(jī)進(jìn)行科學(xué)計(jì)算和事務(wù)管理的程序拉队。
高級(jí)語(yǔ)言容易學(xué)習(xí),通用性強(qiáng)阻逮,書寫出的程序比較短,便于推廣和交流秩彤,是很理想的一種程序設(shè)計(jì)語(yǔ)言叔扼。
高級(jí)語(yǔ)言發(fā)展于50年代中葉到70年代事哭,有些流行的高級(jí)語(yǔ)言已經(jīng)被大多數(shù)計(jì)算機(jī)廠家采用,固化在計(jì)算機(jī)的內(nèi)存里瓜富。如 BASIC語(yǔ)言鳍咱,現(xiàn)在已有128種不同的 BASIC語(yǔ)言在流行,當(dāng)然其基本特征是相同的与柑。
除了BASIC語(yǔ)言外谤辜,還有FORTRAN(公式翻譯)語(yǔ)言、 COBOL(通用商業(yè)語(yǔ)言)价捧、 C語(yǔ)言丑念、 DL/I語(yǔ)言、 PASCAC語(yǔ)言结蟋、ADA語(yǔ)言等250多種高級(jí)語(yǔ)言脯倚。
高級(jí)語(yǔ)言是一種動(dòng)用語(yǔ)言,要完成某一個(gè)簡(jiǎn)單的計(jì)算步驟嵌屎,你必須詳細(xì)準(zhǔn)確地給出每一條指令推正。如解決經(jīng)營(yíng)管理活動(dòng)中天天都要碰到的財(cái)務(wù)清賬、庫(kù)存等問(wèn)題宝惰,就須編無(wú)數(shù)條程序植榕,而情況一經(jīng)變化,原有的設(shè)計(jì)程序則要修改尼夺,這樣就使錯(cuò)誤的可能性增大内贮,工作效率大大降低。為了解決這個(gè)問(wèn)題汞斧,第四代計(jì)算機(jī)語(yǔ)言夜郁,即“實(shí)用語(yǔ)言”出現(xiàn)了。
第四代語(yǔ)言是使用第二代第三代語(yǔ)言編制而成的粘勒,每一種語(yǔ)言都有其特定的應(yīng)用范圍竞端。實(shí)際上,實(shí)用語(yǔ)言發(fā)展到今天已出現(xiàn)了一些有運(yùn)用性質(zhì)的第四代語(yǔ)言庙睡,如“LO- TOS1—2—3”事富。第四代語(yǔ)言的特點(diǎn)就是它們只需要操作人員輸入原始數(shù)據(jù),并命令它們執(zhí)行乘陪。至于怎樣執(zhí)行則由它們本身來(lái)決定的统台,它已經(jīng)在相當(dāng)程度上替代了人腦的工作。