本篇文章給大家談?wù)勡浖_發(fā)方法有哪倆種,以及軟件開發(fā)方法有哪兩類對應(yīng)的知識點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、4種軟件開發(fā)方法有哪些
- 2、軟件開發(fā)方法總結(jié)
- 3、軟件開發(fā)方法?
- 4、軟件工程要用什么的方法建立軟件開發(fā)
- 5、信息系統(tǒng)開發(fā)常用的方法有
- 6、軟件開發(fā)中最常用方法有哪些?
4種軟件開發(fā)方法有哪些
1.結(jié)構(gòu)化方法:分析,設(shè)計(jì),程序設(shè)計(jì)構(gòu)成,面向數(shù)據(jù)流的開發(fā)方法,分解和抽象的原則,數(shù)據(jù)流圖建立功能模型,完成需求分析工作。
2.Jackson方法:面向數(shù)據(jù)結(jié)構(gòu)開發(fā)方法。數(shù)據(jù)結(jié)構(gòu)為驅(qū)動,適合小規(guī)模的項(xiàng)目,當(dāng)輸入數(shù)據(jù)結(jié)構(gòu)和輸出結(jié)構(gòu)之間沒有對應(yīng)關(guān)系,難用此方法,JSD(Jackson Structure Prograamming)是JSP(JacksonSystem Development)的擴(kuò)充
3.原型化方法:和演化模型相對應(yīng),需求不清,業(yè)務(wù)理論不確定,需求經(jīng)常變化,規(guī)模不大去不太復(fù)雜時采用。
4.面向?qū)ο箝_發(fā)方法:分析,設(shè)計(jì),實(shí)現(xiàn),Booch,Coad,OMT,為統(tǒng)一各種面向?qū)ο蠓椒ǖ男g(shù)語,概念和模型,推出UML (Unified Modeling Language)統(tǒng)一化建模語言,成為工業(yè)標(biāo)準(zhǔn)。
軟件開發(fā)方法總結(jié)
在軟件開發(fā)的過程中,軟件開發(fā)方法是關(guān)系到軟件開發(fā)成敗的重要因素。 軟件開發(fā)方法就是軟件開發(fā)所遵循的辦法和步驟,以保證所得到的運(yùn)行系統(tǒng)和支持的文檔滿足質(zhì)量要求,下面為大家分享了軟件開發(fā)方法,一起來看看吧!
1 結(jié)構(gòu)化開發(fā)方法
結(jié)構(gòu)指系統(tǒng)內(nèi)各組成要素之間的相互聯(lián)系、相互作用的框架。結(jié)構(gòu)化開發(fā)方法強(qiáng)調(diào)系統(tǒng)結(jié)構(gòu)的合理性以及所開發(fā)的軟件的結(jié)構(gòu)的合理性,主要是面向數(shù)據(jù)流的,因此也被稱為面向功能的軟件開發(fā)方法或面向數(shù)據(jù)流的軟件開發(fā)方法。結(jié)構(gòu)化技術(shù)包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三方面內(nèi)容。
1.1 結(jié)構(gòu)化分析的步驟
結(jié)構(gòu)化分析是一種模型的確立活動,就是使用獨(dú)有的符號,來確立描繪信息(數(shù)據(jù)和控制)流和內(nèi)容的模型,劃分系統(tǒng)的功能和行為,以及其他為確立模型不可缺少的描述。其基本步驟是:
(1)構(gòu)造數(shù)據(jù)流模型:根據(jù)用戶當(dāng)前需求,在創(chuàng)建實(shí)體—關(guān)系圖的基礎(chǔ)上,依據(jù)數(shù)據(jù)流圖構(gòu)造數(shù)據(jù)流模型。
(2)構(gòu)建控制流模型:一些應(yīng)用系統(tǒng)除了要求用數(shù)據(jù)流建模外,通過構(gòu)造控制流圖(CFD),構(gòu)建控制流模型。
(3)生成數(shù)據(jù)字典:對所有數(shù)據(jù)元素的輸入、輸出、存儲結(jié)構(gòu),甚至是中間計(jì)算結(jié)果進(jìn)行有組織的列表。目前一般采用CASE的“結(jié)構(gòu)化分析和設(shè)計(jì)工具”來完成。
(4)生成可選方案,建立需求規(guī)約:確定各種方案的成本和風(fēng)險等級,據(jù)此對各種方案進(jìn)行分析,然后從中選擇一種方案,建立完整的需求規(guī)約。
1.2 結(jié)構(gòu)化設(shè)計(jì)步驟
結(jié)構(gòu)化設(shè)計(jì)是采用最佳的可能方法設(shè)計(jì)系統(tǒng)的各個組成部分以及各成分之間的內(nèi)部聯(lián)系的技術(shù),目的在于提出滿足系統(tǒng)需求的最佳軟件的結(jié)構(gòu),完成軟件層次圖或軟件結(jié)構(gòu)圖。其基本步驟如下:
(1)研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程。
(2)然后根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題有兩種典型的類型:變換型和事務(wù)型。針對兩種不同的’類型分別進(jìn)行分析處理。(3)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。也就是把數(shù)據(jù)流圖映射到軟件模塊結(jié)構(gòu),設(shè)計(jì)出模塊結(jié)構(gòu)的上層。
(4)利用一些試探性原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。即在數(shù)據(jù)流圖的基礎(chǔ)上逐步分解高層模塊,設(shè)計(jì)中下層模塊,并對軟件模塊結(jié)構(gòu)進(jìn)行優(yōu)化,最終得到更為合理的軟件結(jié)構(gòu)。
(5)描述模塊接口。
(6)修改和補(bǔ)充數(shù)據(jù)詞典。
(6)制定測試計(jì)劃。
結(jié)構(gòu)化設(shè)計(jì)可以將用數(shù)據(jù)流圖表示的信息轉(zhuǎn)換成程序結(jié)構(gòu)的設(shè)計(jì)描述。
2 模塊化開發(fā)方法
模塊化程序設(shè)計(jì)方法就是把一個待開發(fā)的軟件系統(tǒng)分解成若干可單獨(dú)命名和編址的較為簡單的部分,這些可單獨(dú)命名和編址的部分稱為模塊。每個模塊分別獨(dú)立地開發(fā)、測試,最后再組裝出整個軟件系統(tǒng)。這種方法不僅可以將軟件系統(tǒng)開發(fā)的復(fù)雜性在分解過程中降低,便于修改、維護(hù),而且還容易實(shí)現(xiàn)同一個系統(tǒng)不同部分的并行開發(fā),從而提高了軟件的生產(chǎn)效率。
一般,將用一個名字就可調(diào)用的一段程序稱為“模塊”。在考慮模塊化時,將模塊定義為多大較合適,模塊設(shè)計(jì)規(guī)則應(yīng)如何制定成為關(guān)鍵,下面五條標(biāo)準(zhǔn)可供參考:
(1)模塊可分解性:如果一種設(shè)計(jì)方法提供了將問題分解成子問題的系統(tǒng)化機(jī)制,它就能降低整個系統(tǒng)的復(fù)雜性,從而實(shí)現(xiàn)一種有效的模塊化解決方案。
(2)模塊可組裝性:如果一種設(shè)計(jì)方法使現(xiàn)存的設(shè)計(jì)模塊能夠被組裝成新系統(tǒng),它就能提供一種不用一切從頭開始的模塊化解決方案。
(3)模塊可理解性:如果一個模塊可以作為一個獨(dú)立的單位被理解,那么它就易于構(gòu)造和修改。(4)模塊連續(xù)性:如果對系統(tǒng)需求的微小修改只導(dǎo)致對單個模塊而不是對整個系統(tǒng)的修改,則修改引起的副作用就會被最小化。
一般來說,對模塊采用耦合和內(nèi)聚兩個準(zhǔn)則進(jìn)行度量。如模塊內(nèi)部具有高內(nèi)聚和模塊間低耦合,那這樣的模塊就具有獨(dú)立性,模塊設(shè)計(jì)得比較好。
3 面向?qū)ο箝_發(fā)方法
面向?qū)ο箝_發(fā)方法是以面向?qū)ο蟪绦蛟O(shè)計(jì)語言作為基礎(chǔ)的,其核心思想是利用面向?qū)ο蟮母拍詈头椒檐浖枨蠼⒛P?進(jìn)行系統(tǒng)設(shè)計(jì),采用面向?qū)ο蟪绦蛟O(shè)計(jì)語言進(jìn)行系統(tǒng)實(shí)現(xiàn),對建成的系統(tǒng)進(jìn)行面向?qū)ο蟮臏y試和維護(hù)。
如果一個軟件系統(tǒng)是使用這樣4個概念設(shè)計(jì)和實(shí)現(xiàn)的,則可以認(rèn)為這個軟件系統(tǒng)是面向?qū)ο蟮摹F浠疽c(diǎn)可以概括為:
(1)數(shù)據(jù)的抽象,即類與子類的概念及相互關(guān)系。任何客觀的事物和實(shí)體都是對象,復(fù)雜對象可以由簡單對象組成
(2)數(shù)據(jù)及對它的操作的一體化,即封裝的概念和方法。具有相同數(shù)據(jù)和操作的對象可歸并為一個類,具有封裝性,形成一個包裝;對象是類的一個實(shí)例;一個類可以產(chǎn)生很多對象。
(3)屬性與操作由父類向子類傳遞,即繼承的概念與方法。類可以派生出子類,繼承能避免共同行為的重復(fù)。
(4)客觀事物之間的相互關(guān)系用統(tǒng)一的、消息傳遞的方法來描述。
目前廣泛使用的面向?qū)ο箝_發(fā)方法包括Booch方法、Rumbaugh方法、Coad和Yourdon方法、Jacobson方法、Wirfs-Brock方法和統(tǒng)一建模方法等。
軟件開發(fā)方法?
1:瀑布方法
所有軟件方法的祖先是瀑布方法(waterfall methodology)。它之所以被稱為瀑布方法是因?yàn)殚_發(fā)模塊相互之間的依次流動,瀑布方法通過控制閥門的一系列活動組成。這些控制閥門決定一個給定的活動是否已經(jīng)完成并且可以進(jìn)入下一個活動。需求階段處理決定了所有的軟件需求。設(shè)計(jì)階段決定整個系統(tǒng)的設(shè)計(jì)。代碼在代碼階段編寫。代碼然后被測試。最后產(chǎn)品被發(fā)布。
對瀑布方法模型最基本的批評就是瀑布方法對于反饋事物發(fā)展?fàn)顩r耗時太長。軟件的一些內(nèi)容那個很容易被理解,而另一些內(nèi)容則相反。因此,當(dāng)用戶對于手邊出現(xiàn)的問題都沒有很好理解的時候,開發(fā)人員試圖先完成所有的需求(也就是說,將需求量化到實(shí)際的規(guī)格說明當(dāng)中)是非常空難的。更進(jìn)一步來說,如果在需求中出現(xiàn)一個錯誤,它將傳播到設(shè)計(jì)階段,傳播到代碼中等。同時一般不存在過程中返回的真正能力。因此,如果進(jìn)入測試并且發(fā)現(xiàn)設(shè)計(jì)的一部分是無法工作的,那么就會進(jìn)行修改并修補(bǔ)問題而交差,但是這種方法將會失去設(shè)計(jì)活動的所有上下文環(huán)境——你只是有目的地對系統(tǒng)權(quán)宜行事!
認(rèn)識到這個問題后瀑布方法已經(jīng)被修改成幾種形式。例如螺旋式瀑布方法它繼承并使用了多個瀑布模型。這種方法縮短了生命周期向下的時間;也就是說,為解決為題提供了迭代方案。
最終,大家無法脫離瀑布方法是因?yàn)樗_實(shí)是合乎常規(guī)的方法。首先,這種方法可以決定將要構(gòu)建的內(nèi)容。接著,決定將要如何構(gòu)建這些,下一步,世界構(gòu)建這些內(nèi)容??梢源_保自己確實(shí)構(gòu)建自己所需的東西(并且可以成功運(yùn)行)。
2:統(tǒng)一過程
統(tǒng)一過程應(yīng)用了基于處理系統(tǒng)首先考慮的最重要方面而實(shí)施的短期迭代開發(fā)。
開發(fā)一個寡欲各種用列(use case)的調(diào)查文檔(也就是說,對用戶與系統(tǒng)交互的簡短描述),并且開始排除那些可能對整個系統(tǒng)成功造成風(fēng)險的用列。只要適合,就可以在開發(fā)過程中添加或者刪除用列。
統(tǒng)一過程的4個階段定義如下:
初始(inception):系統(tǒng)仍然處于決定系統(tǒng)內(nèi)容的階段——系統(tǒng)將要完成什么以及系統(tǒng)的邊界是什么。如果系統(tǒng)能夠很好的理解,那么這個階段就非常短。
細(xì)化(Elaboration):正在將體系結(jié)構(gòu)的風(fēng)險移至系統(tǒng)。一種表述該階段的說法是,“你是否已經(jīng)解決了所有難題?”或者“你知道如何完成你將要去完成的事情嗎?”
構(gòu)造(Construction)正在完成所有相關(guān)的用列來使系統(tǒng)為移交做好準(zhǔn)備,也就是說,進(jìn)入Beta版本。
移交(Transition)使系統(tǒng)通過它的最后發(fā)布階段以及Beta版本。它可能包括軟件的操作及維護(hù)。
這是一個關(guān)注于維護(hù)要素的敏捷過程,但是仍然采用了大量用例開發(fā),間模等方面的傳統(tǒng)實(shí)踐。
3:極限編程:
極限編程的開發(fā)過程就是以代碼為中心的方法。
讓用戶告知你一些有關(guān)系統(tǒng)是如何如用轉(zhuǎn)的故事描述,基于故事相互之間的重要性來定制這些系統(tǒng)這樣就可以為自己的團(tuán)隊(duì)提供一個故事集合,可以在一個給定的迭代中完成他們,大約兩周時間——每周工作40個小時,你將團(tuán)隊(duì)劃分,雙人應(yīng)付沒一個故事,在代碼被編寫時提供確定數(shù)量的內(nèi)建對等評審。你和你的同伴在編寫自己代碼的同時編寫單元測試。在完成自己負(fù)責(zé)的那段代碼后,將其拿到集成的機(jī)器上,放入代碼基線,運(yùn)行從所有人的代碼中積累而成的單元測試。在完成iji負(fù)責(zé)的那段代碼后,將會提供一個運(yùn)行系統(tǒng)使用戶可以評審來確保自己的工作滿足他們的需要。
注意極限編程并沒有將軟件的設(shè)計(jì)設(shè)置成一個高級階段。相反它認(rèn)為那些最前端的設(shè)計(jì)對于整個系統(tǒng)開發(fā)不是很有幫助,并且隨著實(shí)際開發(fā)的進(jìn)行它最終還是被修改。
極限編程對于需要持續(xù)提供運(yùn)行系統(tǒng)的軟件卡發(fā)來說非常適用。當(dāng)缺少用戶介入或者項(xiàng)目規(guī)模很大時極限編程方法將會不好用,因?yàn)檫@時協(xié)調(diào)和設(shè)計(jì)活動實(shí)際上變得更重要了。
極限編程合理地考慮開發(fā)團(tuán)體的能力,這樣可以有效計(jì)劃。
軟件工程要用什么的方法建立軟件開發(fā)
軟件工程要建立軟件開發(fā)的方法如下:
1、軟件開發(fā)方法其用到的方法依據(jù)時間的變化主要分為結(jié)構(gòu)化法、面向?qū)ο蠓?、面向服?wù)法以及原型法。也有些人把敏捷開發(fā)和統(tǒng)一過程(UP/RUP)也稱之為軟件開發(fā)方法。
2、結(jié)構(gòu)化法:即面向過程的開發(fā)方法。其基本思想是“自上而下,逐步求精”,把一個復(fù)雜的系統(tǒng)拆分,化繁為簡,形成一個個的構(gòu)件。其講究的是用戶至上,系統(tǒng)開發(fā)過程工程化、文檔化、以及標(biāo)準(zhǔn)化。嚴(yán)格的區(qū)分來工作階段,每個階段都有明確的任務(wù)和應(yīng)得額成果。
3、面向?qū)ο蠓椒ǎ好嫦驅(qū)ο蟮拈_發(fā)方法是自底而上的,主要表現(xiàn)為和現(xiàn)實(shí)事物結(jié)合起來,把世間萬物抽象出來,形成一個個的抽象對象。相比結(jié)構(gòu)化法有更好的復(fù)用性,分析、設(shè)計(jì)、實(shí)現(xiàn)三個階段界限不明確,其關(guān)鍵點(diǎn)在于建立一個全面的、合理的、統(tǒng)一的模型。
4、面向服務(wù)方法:面向服務(wù)方法是面向?qū)ο蠓ǚǖ难由?。其服?wù)建模又分為服務(wù)發(fā)現(xiàn)(分析)、服務(wù)規(guī)約(約定規(guī)范)、和服務(wù)實(shí)現(xiàn)(具體實(shí)現(xiàn))三個階段。
SO方法主要有三個級別(操作、服務(wù)、業(yè)務(wù)流程);SOAD分為三個層次:基礎(chǔ)設(shè)計(jì)層(底層的構(gòu)建)、應(yīng)用服務(wù)層(服務(wù)之間的接口和服務(wù)級的協(xié)調(diào))、業(yè)務(wù)組織層(業(yè)務(wù)流程的建模和服務(wù)流程的編排)。
5、原型法:其適用于需求不明確的場景,包括拋棄型原型和演變型原型。拋棄型原型:業(yè)務(wù)做完之后原型就已經(jīng)沒有用處了;演變型模型:在原來的模型基礎(chǔ)之上逐步修改并一直沿用。
信息系統(tǒng)開發(fā)常用的方法有
信息系統(tǒng)開發(fā)的四種方法分別是結(jié)構(gòu)化方法、原型化方法、面向?qū)ο蠓椒ā⒚嫦蚍?wù)方法。
1、結(jié)構(gòu)化方法
結(jié)構(gòu)化方法是一種傳統(tǒng)的軟件開發(fā)方法,它是由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三部分有機(jī)組合而成的。
結(jié)構(gòu)化設(shè)計(jì)方法是以自頂向下,逐步求精,模塊化為基點(diǎn),以模塊化,抽象,逐層分解求精,信息隱蔽化局部化和保持模塊獨(dú)立為準(zhǔn)則的設(shè)計(jì)軟件的數(shù)據(jù)架構(gòu)和模塊架構(gòu)的方法學(xué)。
2、原型化開發(fā)方法
原型法就是在開發(fā)時只是開發(fā)出一個樣品,而不是完整的軟件,界面什么的不是很完美。然后給客戶使用,然后再由客戶提出的需求再進(jìn)行修改,知道客戶滿意為止。然后剩下的就是依照這個樣品開發(fā)正式的軟件了,這屬于摸著石頭過河的一種辦法。
3、面向?qū)ο蠓椒?/p>
面向?qū)ο蠓椒▽W(xué)在開始,是編程語言而被引入的。而把對象作為編程的實(shí)體最早是上世紀(jì)六十年代由Simula 67語言引入思維。在結(jié)構(gòu)化方法學(xué)提出幾年之后,上世紀(jì)八十年代面向?qū)ο蠓椒▽W(xué)逐漸走上歷史的舞臺,并在之后乃至現(xiàn)在大放異彩。
面向?qū)ο蠓椒▽W(xué)的思想是面向?qū)ο螅詫ο鬄橹行模褦?shù)據(jù)封裝在對象內(nèi)部成為對象的屬性,把面向過程的函數(shù)轉(zhuǎn)為對象的行為方法,把對象抽象成為類,用以描述和設(shè)計(jì)、開發(fā)軟件系統(tǒng)。
軟件開發(fā)中最常用方法有哪些?
最常用的方法都有:
日期函數(shù),
字符串函數(shù),
文件函數(shù)等,
比如下面的函數(shù):
1.1.一個不透明的結(jié)構(gòu), 它指向一條線程并間接(通過該線程)引用了整個 Lu a 解釋器的狀態(tài)。 L ua 庫是完全可重入的: 它沒有任何全局變量。 狀態(tài)機(jī)所有的信息都可以通過這個結(jié)構(gòu)訪問到。
這個結(jié)構(gòu)的指針必須作為第一個參數(shù)傳遞給每一個庫函數(shù)。 l ua_newstate 是一個例外, 這個函數(shù)會從頭創(chuàng)建一個 L ua 狀態(tài)機(jī)。
l。a_status
1.2.返回線程 L 的狀態(tài)。
正常的線程狀態(tài)是 0 (LUA_OK)。 當(dāng)線程用 lua_resume 執(zhí)行完畢并拋出了一個錯誤時, 狀態(tài)值是錯誤碼。 如果線程被掛起,狀態(tài)為 LUA_YIELD 。
你只能在狀態(tài)為 LUA_OK 的線程中調(diào)用函數(shù)。 你可以延續(xù)一個狀態(tài)為 LUA_OK 的線程 (用于開始新協(xié)程)或是狀態(tài)為 LUA_YIELD 的線程 (用于延續(xù)協(xié)程)。
lu a_stringtonumber
size_t lu a_stringtonumber (l ua_State *L, const char *s);
將一個零結(jié)尾的字符串 s 轉(zhuǎn)換為一個數(shù)字, 將這個數(shù)字壓棧,并返回字符串的總長度(即長度加一)。 轉(zhuǎn)換的結(jié)果可能是整數(shù)也可能是浮點(diǎn)數(shù), 這取決于 Lua 的轉(zhuǎn)換語法(。 這個字符串可以有前置和后置的空格以及符號。 如果字符串并非一個有效的數(shù)字,返回 0 并不把任何東西壓棧。 (注意,這個結(jié)果可以當(dāng)成一個布爾量使用,為真即轉(zhuǎn)換成功。)
lu a_toboolean
int lu a_toboolean (lu a_State *L, int index);
把給定索引處的 Lu a 值轉(zhuǎn)換為一個 C 中的布爾量( 0 或是 1 )。 和 L ua 中做的所有測試一樣, lua_toboolean 會把任何不同于 false 和 nil 的值當(dāng)作真返回; 否則就返回假。 (如果你想只接受真正的 boolean 值, 就需要使用 lua_isboolean 來測試值的類型。)
lu a_tocfunction
lu a_CFunction lua_tocfunction (lu a_State *L, int index);
把給定索引處的 L ua 值轉(zhuǎn)換為一個 C 函數(shù)。 這個值必須是一個 C 函數(shù); 如果不是就返回 NULL 。
lu a_tointeger
lua_Integer l ua_tointeger (lu a_State *L, int index);
等價于調(diào)用 l ua_tointegerx, 其參數(shù) isnum 為 NULL。
lu a_tointegerx
l ua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);
將給定索引處的 L。a 值轉(zhuǎn)換為帶符號的整數(shù)類型 lu a_Integer。 這個 Lu a 值必須是一個整數(shù),或是一個可以被轉(zhuǎn)換為整數(shù) (3)的數(shù)字或字符串; 否則,lua_tointegerx 返回 0 。
如果 isnum 不是 NULL, *isnum 會被設(shè)為操作是否成功。
lu a_tolstring
const char *lu a_tolstring (lu a_State *L, int index, size_t *len);
把給定索引處的 Lua 值轉(zhuǎn)換為一個 C 字符串。 如果 len 不為 NULL , 它還把字符串長度設(shè)到 *len 中。 這個 L ua 值必須是一個字符串或是一個數(shù)字; 否則返回返回 NULL 。 如果值是一個數(shù)字, lua_tolstring 還會 把堆棧中的那個值的實(shí)際類型轉(zhuǎn)換為一個字符串。 (當(dāng)遍歷一張表的時候, 若把 lua_tolstring 作用在鍵上, 這個轉(zhuǎn)換有可能導(dǎo)致 lua_next 弄錯。)
lua_tolstring 返回一個已對齊指針 指向 Lua 狀態(tài)機(jī)中的字符串。 這個字符串總能保證 ( C 要求的)最后一個字符為零 (”) , 而且它允許在字符串內(nèi)包含多個這樣的零。
因?yàn)?Lua 中可能發(fā)生垃圾收集, 所以不保證 lua_tolstring 返回的指針, 在對應(yīng)的值從堆棧中移除后依然有效。
3.1.文件函數(shù)等,比如下面的函數(shù):
一個不透明的結(jié)構(gòu), 它指向一條線程并間接(通過該線程)引用了整個 Lu a 解釋器的狀態(tài)。 L ua 庫是完全可重入的: 它沒有任何全局變量。 狀態(tài)機(jī)所有的信息都可以通過這個結(jié)構(gòu)訪問到。
這個結(jié)構(gòu)的指針必須作為第一個參數(shù)傳遞給每一個庫函數(shù)。 l ua_newstate 是一個例外, 這個函數(shù)會從頭創(chuàng)建一個 L ua 狀態(tài)機(jī)。
l。a_status
返回線程 L 的狀態(tài)。
正常的線程狀態(tài)是 0 (LUA_OK)。 當(dāng)線程用 lua_resume 執(zhí)行完畢并拋出了一個錯誤時, 狀態(tài)值是錯誤碼。 如果線程被掛起,狀態(tài)為 LUA_YIELD 。
你只能在狀態(tài)為 LUA_OK 的線程中調(diào)用函數(shù)。 你可以延續(xù)一個狀態(tài)為 LUA_OK 的線程 (用于開始新協(xié)程)或是狀態(tài)為 LUA_YIELD 的線程 (用于延續(xù)協(xié)程)。
lu a_stringtonumber
size_t lu a_stringtonumber (l ua_State *L, const char *s);
將一個零結(jié)尾的字符串 s 轉(zhuǎn)換為一個數(shù)字, 將這個數(shù)字壓棧,并返回字符串的總長度(即長度加一)。 轉(zhuǎn)換的結(jié)果可能是整數(shù)也可能是浮點(diǎn)數(shù), 這取決于 Lua 的轉(zhuǎn)換語法(。 這個字符串可以有前置和后置的空格以及符號。 如果字符串并非一個有效的數(shù)字,返回 0 并不把任何東西壓棧。 (注意,這個結(jié)果可以當(dāng)成一個布爾量使用,為真即轉(zhuǎn)換成功。)
lu a_toboolean
int lu a_toboolean (lu a_State *L, int index);
把給定索引處的 Lu a 值轉(zhuǎn)換為一個 C 中的布爾量( 0 或是 1 )。 和 L ua 中做的所有測試一樣, lua_toboolean 會把任何不同于 false 和 nil 的值當(dāng)作真返回; 否則就返回假。 (如果你想只接受真正的 boolean 值, 就需要使用 lua_isboolean 來測試值的類型。)
lu a_tocfunction
lu a_CFunction lua_tocfunction (lu a_State *L, int index);
把給定索引處的 L ua 值轉(zhuǎn)換為一個 C 函數(shù)。 這個值必須是一個 C 函數(shù); 如果不是就返回 NULL 。
lu a_tointeger
lua_Integer l ua_tointeger (lu a_State *L, int index);
等價于調(diào)用 l ua_tointegerx, 其參數(shù) isnum 為 NULL。
lu a_tointegerx
l ua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);
將給定索引處的 L。a 值轉(zhuǎn)換為帶符號的整數(shù)類型 lu a_Integer。 這個 Lu a 值必須是一個整數(shù),或是一個可以被轉(zhuǎn)換為整數(shù) (3)的數(shù)字或字符串; 否則,lua_tointegerx 返回 0 。
如果 isnum 不是 NULL, *isnum 會被設(shè)為操作是否成功。
lu a_tolstring
const char *lu a_tolstring (lu a_State *L, int index, size_t *len);
把給定索引處的 Lua 值轉(zhuǎn)換為一個 C 字符串。 如果 len 不為 NULL , 它還把字符串長度設(shè)到 *len 中。 這個 L ua 值必須是一個字符串或是一個數(shù)字; 否則返回返回 NULL 。 如果值是一個數(shù)字, lua_tolstring 還會 把堆棧中的那個值的實(shí)際類型轉(zhuǎn)換為一個字符串。 (當(dāng)遍歷一張表的時候, 若把 lua_tolstring 作用在鍵上, 這個轉(zhuǎn)換有可能導(dǎo)致 lua_next 弄錯。)
lua_tolstring 返回一個已對齊指針 指向 Lua 狀態(tài)機(jī)中的字符串。 這個字符串總能保證 ( C 要求的)最后一個字符為零 (”) , 而且它允許在字符串內(nèi)包含多個這樣的零。
因?yàn)?Lua 中可能發(fā)生垃圾收集, 所以不保證 lua_tolstring 返回的指針, 在對應(yīng)的值從堆棧中移除后依然有效。
關(guān)于軟件開發(fā)方法有哪倆種和軟件開發(fā)方法有哪兩類的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。