0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

軟件工程方法有哪些

tLJX_gh_ad43aef ? 來源:汽車電子系統(tǒng)與軟件 ? 作者:c2c ? 2021-08-11 09:54 ? 次閱讀

軟件工程方法為目標(biāo)計(jì)算機(jī)的軟件開發(fā)提供了一種有組織和系統(tǒng)的方法。有許多方法可供選擇,對(duì)于軟件工程師來說,為手頭的軟件開發(fā)任務(wù)選擇一種或幾種合適的方法是很重要的;這種選擇會(huì)對(duì)軟件項(xiàng)目的成功產(chǎn)生巨大的影響。使用這些軟件工程方法,加上具有適當(dāng)技能集的人員和工具,使軟件工程師能夠可視化軟件的細(xì)節(jié),并最終將表示轉(zhuǎn)換為代碼和數(shù)據(jù)的工作集。

下面將討論選定的軟件工程方法。主題區(qū)域被組織成啟發(fā)式方法、正式方法、原型方法和敏捷方法的討論。4.1啟發(fā)式方法

啟發(fā)式方法是那些基于經(jīng)驗(yàn)的軟件工程方法,它們已經(jīng)在軟件行業(yè)中得到了相當(dāng)廣泛的實(shí)踐。本主題包含三個(gè)廣泛的討論類別:結(jié)構(gòu)化分析和設(shè)計(jì)方法、數(shù)據(jù)建模方法和面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法。

結(jié)構(gòu)化分析和設(shè)計(jì)方法:軟件模型主要從功能或行為的角度開發(fā),從軟件的高級(jí)視圖(包括數(shù)據(jù)和控制要素)開始,然后通過越來越詳細(xì)的設(shè)計(jì)逐步分解或細(xì)化模型組件。詳細(xì)的設(shè)計(jì)最終集中于必須編碼(手工、自動(dòng)生成或兩者同時(shí)生成)、構(gòu)建、測試和驗(yàn)證的軟件的非常具體的細(xì)節(jié)或規(guī)范。

數(shù)據(jù)建模方法:根據(jù)所使用的數(shù)據(jù)或信息的觀點(diǎn)構(gòu)建數(shù)據(jù)模型。數(shù)據(jù)表和關(guān)系定義了數(shù)據(jù)模型。這種數(shù)據(jù)建模方法主要用于定義和分析支持?jǐn)?shù)據(jù)庫設(shè)計(jì)或通常在業(yè)務(wù)軟件中發(fā)現(xiàn)的數(shù)據(jù)存儲(chǔ)庫的數(shù)據(jù)需求,在業(yè)務(wù)軟件中,數(shù)據(jù)作為業(yè)務(wù)系統(tǒng)資源或資產(chǎn)進(jìn)行主動(dòng)管理。

面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法:面向?qū)ο竽P捅硎緸榉庋b數(shù)據(jù)和關(guān)系的對(duì)象集合,并通過方法與其他對(duì)象交互。對(duì)象可以是真實(shí)世界的項(xiàng)目,也可以是虛擬的項(xiàng)目。軟件模型是使用圖來構(gòu)成軟件的選定視圖來構(gòu)建的。軟件模型的逐步細(xì)化導(dǎo)致了詳細(xì)的設(shè)計(jì)。然后,詳細(xì)的設(shè)計(jì)要么通過連續(xù)的迭代進(jìn)行演化,要么(使用某種機(jī)制)轉(zhuǎn)換為模型的實(shí)現(xiàn)視圖,其中表示最終軟件產(chǎn)品發(fā)布和部署的代碼和打包方法。

4.2正式的方法

形式方法是軟件工程方法,通過應(yīng)用嚴(yán)格的基于數(shù)學(xué)的符號(hào)和語言來指定、開發(fā)和驗(yàn)證軟件。通過使用規(guī)范語言,可以以系統(tǒng)的、自動(dòng)化的或半自動(dòng)化的方式檢查軟件模型的一致性(換句話說,缺少模糊性)、完整性和正確性。這個(gè)主題與軟件需求知識(shí)領(lǐng)域中的形式化分析部分有關(guān)。

本節(jié)討論規(guī)范語言、程序細(xì)化和派生、形式驗(yàn)證和邏輯推理。

規(guī)范語言:規(guī)范語言為形式方法提供數(shù)學(xué)基礎(chǔ);規(guī)范語言是在軟件規(guī)范、需求分析和/或設(shè)計(jì)階段用于描述特定輸入/輸出行為的正式的、高級(jí)的計(jì)算機(jī)語言(換句話說,不是經(jīng)典的第三代語言(3GL)編程語言)。規(guī)范語言不是直接可執(zhí)行的語言;它們通常由表示法和語法、使用表示法的語義和一組允許的對(duì)象關(guān)系組成。

程序優(yōu)化和派生:程序優(yōu)化是使用一系列轉(zhuǎn)換創(chuàng)建較低層面(或更詳細(xì))規(guī)范的過程。軟件工程師是通過連續(xù)的轉(zhuǎn)換來獲得程序的可執(zhí)行表示的。可以細(xì)化規(guī)范,添加細(xì)節(jié),直到模型可以用3GL編程語言或所選規(guī)范語言的可執(zhí)行部分來表述。通過定義具有精確語義屬性的規(guī)范,可以實(shí)現(xiàn)規(guī)范的細(xì)化;規(guī)范不僅必須規(guī)定實(shí)體之間的關(guān)系,還必須規(guī)定這些關(guān)系和操作的確切運(yùn)行時(shí)含義。

形式驗(yàn)證:模型檢驗(yàn)是一種形式驗(yàn)證方法;它通常涉及執(zhí)行狀態(tài)空間探索或可達(dá)性分析,以證明所表示的軟件設(shè)計(jì)具有或保留了某些感興趣的模型屬性。模型檢查的一個(gè)例子是在所有可能的事件或消息到達(dá)交叉情況下驗(yàn)證正確的程序行為的分析。使用正式核證需要嚴(yán)格指定軟件模型及其運(yùn)作環(huán)境;這個(gè)模型通常采用有限狀態(tài)機(jī)或其他正式定義的自動(dòng)機(jī)的形式。

邏輯推理:邏輯推理是一種設(shè)計(jì)軟件的方法,它包括在設(shè)計(jì)的每個(gè)重要部分周圍指定前置條件和后置條件,并使用數(shù)學(xué)邏輯來證明這些前置條件和后置條件必須在所有輸入下都存在。這為軟件工程師在不執(zhí)行軟件的情況下預(yù)測軟件行為提供了一種方法。一些集成開發(fā)環(huán)境(ide)包括在設(shè)計(jì)或代碼的同時(shí)表示這些證明的方法。

4.3原型化方法

軟件原型是一個(gè)活動(dòng),通常創(chuàng)建不完整或最低限度功能版本的軟件應(yīng)用程序,通常為特定的新特性,征求反饋軟件需求或用戶接口,進(jìn)一步探索軟件需求,軟件設(shè)計(jì),或?qū)崿F(xiàn)選項(xiàng),和/或獲得其他一些有用的洞察軟件。軟件工程師首先選擇一種原型方法來理解軟件中最不被理解的方面或組件;這種方法與其他軟件工程方法形成對(duì)比,后者通常首先從最容易理解的部分開始開發(fā)。通常,如果不進(jìn)行大量的開發(fā)重做或重構(gòu),原型產(chǎn)品不會(huì)成為最終的軟件產(chǎn)品。

本節(jié)簡要討論原型風(fēng)格、目標(biāo)和評(píng)估技術(shù)。原型風(fēng)格:這解決了開發(fā)原型的各種方法。原型可以被開發(fā)為一次性代碼或紙制品,作為工作設(shè)計(jì)的演變,或作為可執(zhí)行的規(guī)范。每種風(fēng)格通常使用不同的原型生命周期過程。選擇的風(fēng)格基于項(xiàng)目需要的結(jié)果類型、需要的結(jié)果的質(zhì)量和結(jié)果的緊迫性。

原型目標(biāo):原型活動(dòng)的目標(biāo)是原型工作所服務(wù)的特定產(chǎn)品。原型化目標(biāo)的例子包括需求規(guī)范、架構(gòu)設(shè)計(jì)要素或組件、算法或人機(jī)用戶接口。

原型評(píng)估技術(shù):一個(gè)原型可以由軟件工程師或其他項(xiàng)目利益攸關(guān)方以多種方式使用或評(píng)估,主要是由最初導(dǎo)致原型開發(fā)的潛在原因驅(qū)動(dòng)的。原型可以根據(jù)實(shí)際實(shí)現(xiàn)的軟件或一組目標(biāo)需求(例如,一個(gè)需求原型)來評(píng)估或測試;原型還可以作為未來軟件開發(fā)工作的模型(例如,在用戶接口規(guī)范中)。

4.4敏捷方法

敏捷方法誕生于20世紀(jì)90年代,當(dāng)時(shí)人們需要減少大型軟件開發(fā)項(xiàng)目中使用的重量級(jí)的、基于計(jì)劃的方法所帶來的巨大開銷。敏捷方法被認(rèn)為是輕量級(jí)的方法,因?yàn)樗鼈兊奶攸c(diǎn)是短的、迭代的開發(fā)周期、自組織的團(tuán)隊(duì)、更簡單的設(shè)計(jì)、代碼重構(gòu)、測試驅(qū)動(dòng)開發(fā)、頻繁的客戶參與,以及強(qiáng)調(diào)在每個(gè)開發(fā)周期中創(chuàng)建可演示的工作產(chǎn)品。

文獻(xiàn)中有許多敏捷方法;這里簡要討論一些比較流行的方法,包括快速應(yīng)用程序開發(fā)(RAD)、極限編程(XP)、SCRum和功能驅(qū)動(dòng)開發(fā)(FDD)。

RAD:快速軟件開發(fā)方法主要用于數(shù)據(jù)密集型的業(yè)務(wù)系統(tǒng)應(yīng)用程序開發(fā)。RAD方法通過軟件工程師使用的專用數(shù)據(jù)庫開發(fā)工具來實(shí)現(xiàn),這些工具用于快速開發(fā)、測試和部署新的或修改過的業(yè)務(wù)應(yīng)用程序。

XP:這種方法使用需求的事例或場景,首先開發(fā)測試,讓客戶直接參與到團(tuán)隊(duì)中(通常定義驗(yàn)收測試),使用成對(duì)編程,并提供持續(xù)的代碼重構(gòu)和集成。故事被分解為任務(wù)、劃分優(yōu)先級(jí)、評(píng)估、開發(fā)和測試。軟件的每一個(gè)增量都通過自動(dòng)化和手工測試進(jìn)行測試;一個(gè)增量可能會(huì)被頻繁地釋放,比如每隔幾周左右。

SCRum:這種敏捷方法比其他方法對(duì)項(xiàng)目管理更友好。SCRum管理員管理項(xiàng)目增量中的活動(dòng);每個(gè)增量稱為沖刺,持續(xù)時(shí)間不超過30天。產(chǎn)品待辦事項(xiàng)列表(PBI)是根據(jù)任務(wù)來確定、定義、排序和評(píng)估的。在每個(gè)增量中測試并發(fā)布軟件的工作版本。每日SCRum會(huì)議確保工作按照計(jì)劃進(jìn)行。

FDD:這是一種模型驅(qū)動(dòng)的、短的、迭代的軟件開發(fā)方法,使用一個(gè)五階段過程:

(1) 開發(fā)一個(gè)產(chǎn)品模型來擴(kuò)大領(lǐng)域的范圍,

(2) 創(chuàng)建需求或功能列表,

(3) 構(gòu)建功能開發(fā)計(jì)劃,

(4)開發(fā)針對(duì)特定于迭代的功能的設(shè)計(jì),以及

(5)代碼、測試、功能集成。

FDD類似于增量式軟件開發(fā)方法;它也類似于XP,除了代碼所有權(quán)被分配給個(gè)人而不是團(tuán)隊(duì)。FDD強(qiáng)調(diào)軟件的整體架構(gòu)方法,它促進(jìn)在第一次就正確地構(gòu)建特性,而不是強(qiáng)調(diào)持續(xù)的重構(gòu)。

在文獻(xiàn)和實(shí)踐中還有許多敏捷方法的變體。請(qǐng)注意,重量級(jí)的、基于計(jì)劃的軟件工程方法和敏捷方法一樣都有一席之地。有一些新方法是從敏捷方法和基于計(jì)劃的方法的組合中產(chǎn)生的,從業(yè)者正在定義新的方法,這些方法主要基于當(dāng)前的組織業(yè)務(wù)需求來平衡重量級(jí)和輕量級(jí)方法所需的特性。這些業(yè)務(wù)需求,通常由一些項(xiàng)目利益攸關(guān)方所代表,應(yīng)該并且確實(shí)推動(dòng)選擇使用一種軟件工程方法而不是另一種,或者從軟件工程方法組合的最佳特性中構(gòu)建一種新方法。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7295

    瀏覽量

    87537
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4621

    瀏覽量

    87000

原文標(biāo)題:軟件工程方法

文章出處:【微信號(hào):gh_ad43aef0e0b3,微信公眾號(hào):樹根互聯(lián)VS物聯(lián)網(wǎng)VS數(shù)據(jù)應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于FPA的軟件工作量綜合評(píng)估研究與實(shí)踐

    軟件工程監(jiān)理項(xiàng)目中如何對(duì)軟件開發(fā)系統(tǒng)進(jìn)行工作量評(píng)估,如何在實(shí)施過程中對(duì)承建單位已完成的工作量進(jìn)行審核是實(shí)施信息化項(xiàng)目的難題。本文在分析專家經(jīng)驗(yàn)評(píng)估法、FPA功能點(diǎn)分析法等方法的基礎(chǔ)上,給出了一種
    發(fā)表于 10-15 10:45 ?0次下載

    電磁仿真軟件哪些常用的方法

    電磁仿真軟件是一種用于模擬和分析電磁場行為的計(jì)算工具,廣泛應(yīng)用于電子、通信、電力、航空航天等領(lǐng)域。本文將介紹電磁仿真軟件的常用方法。 有限元法(Finite Element Method, FEM
    的頭像 發(fā)表于 07-12 10:02 ?594次閱讀

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個(gè)充滿機(jī)遇和挑戰(zhàn)的領(lǐng)域里,如何提升自己顯得非常重要,它決定了你未來的發(fā)展方向和成就。接下來,我們一起探討一下。 1.奠定扎實(shí)
    發(fā)表于 06-12 11:20

    扎心靈魂小拷問:了AI編寫代碼之后,軟件工程師會(huì)被AI取代嗎?

    軟件開發(fā)者們很多讓他們焦慮的事情。他們最擔(dān)心的不再是如何用他們最喜歡的編程語言(C、C++、Erlang、Java等)表達(dá)最新的算法。相反,這種擔(dān)憂正逐漸被人工智能(AI)所取代。 在這里,我們將探討AI編寫代碼的過程,并回答這個(gè)問題:AI會(huì)取代程序員嗎?
    的頭像 發(fā)表于 05-24 19:17 ?562次閱讀
    扎心靈魂小拷問:<b class='flag-5'>有</b>了AI編寫代碼之后,<b class='flag-5'>軟件工程</b>師會(huì)被AI取代嗎?

    索尼誠邀軟件工程師參與PS免費(fèi)手游平臺(tái)設(shè)計(jì)

    據(jù)悉,近日,澳大利亞知名媒體TweakTown發(fā)現(xiàn),索尼互動(dòng)娛樂正在為其旗下的PlayStation Studios Mobile招募一名資深的軟件工程師,負(fù)責(zé)設(shè)計(jì)PlayStation的免費(fèi)手機(jī)游戲平臺(tái)。
    的頭像 發(fā)表于 05-23 17:08 ?650次閱讀

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    嵌入式軟件工程師和硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件工程師是軟件開發(fā)領(lǐng)域中的一種專業(yè)工程
    發(fā)表于 05-16 11:00

    Cognition發(fā)布首款A(yù)I軟件工程師Devin

    據(jù)報(bào)道,Cognition公司今日公布了其首款人工智能軟件工程師——Devin,掀起了打造軟件模式變革的序幕。該產(chǎn)品在SWE-bench代碼測驗(yàn)中展現(xiàn)出卓越表現(xiàn),甚至超過了部分頂級(jí)人類工程師的水準(zhǔn)。
    的頭像 發(fā)表于 03-13 10:57 ?563次閱讀

    ABB收購Meshmind增強(qiáng)人工智能及軟件驅(qū)動(dòng)自動(dòng)化

    ABB的最新投資將加速提升軟件工程和基于人工智能的應(yīng)用程序(包括機(jī)器學(xué)習(xí)和視覺)的研發(fā)能力。
    的頭像 發(fā)表于 01-19 14:24 ?960次閱讀

    如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序

    前文介紹了如何使用官方提供的鏡像文件啟動(dòng)開發(fā)板,本文將說明如何構(gòu)建linux開發(fā)環(huán)境和編譯軟件工程、應(yīng)用程序。
    的頭像 發(fā)表于 01-03 12:31 ?1784次閱讀
    如何構(gòu)建linux開發(fā)環(huán)境和編譯<b class='flag-5'>軟件工程</b>、應(yīng)用程序

    ADPD105是否軟件方法去環(huán)境光?

    請(qǐng)幫忙確認(rèn)一下,ADPD105是否軟件方法去環(huán)境光?
    發(fā)表于 12-28 08:21

    嵌入式軟件工程師常用的

    最近我換工作了,看見不同嵌入式軟件工程師用的平臺(tái)都不一樣,所以我整理了一下。PlatformIO:多平臺(tái)支持:PlatformIO支持多種嵌入式平臺(tái),包括Arduino、ESP8266、ESP32
    的頭像 發(fā)表于 12-24 08:00 ?594次閱讀
    嵌入式<b class='flag-5'>軟件工程</b>師常用的

    嵌入式硬件和軟件哪個(gè)好?

    方案,要求理解嵌入式系統(tǒng)架構(gòu),一定的C語言基礎(chǔ),熟悉ARM、protel設(shè)計(jì)軟件,四層板開發(fā)經(jīng)驗(yàn)。 成為優(yōu)秀的嵌入式硬件開發(fā)工程師需具備以下技能:由需求分析至總體方案、詳細(xì)設(shè)計(jì)的規(guī)
    發(fā)表于 12-05 15:17

    奮楫?dāng)?shù)智藍(lán)海 &quot;信華信軟件工程領(lǐng)域大模型&quot;正式發(fā)布

    大連2023年11月2日?/美通社/ --?10月31日,由信華信技術(shù)股份有限公司(以下簡稱信華信)主辦的"聚勢謀遠(yuǎn) 智勝未來"人工智能領(lǐng)域應(yīng)用高端論壇暨信華信軟件工程領(lǐng)域大模型發(fā)布會(huì)成功舉辦
    的頭像 發(fā)表于 11-02 15:45 ?473次閱讀
    奮楫?dāng)?shù)智藍(lán)海 &quot;信華信<b class='flag-5'>軟件工程</b>領(lǐng)域大模型&quot;正式發(fā)布

    基于模型的方法在民機(jī)機(jī)載軟件中的應(yīng)用

    機(jī)載軟件適航標(biāo)準(zhǔn)對(duì)軟件研制過程、生命周期數(shù)據(jù)以及符合性證據(jù)等都提出了明確的要求。然而,這些過程要求都是建立在歐美80~90年代軟件工程實(shí)踐的基礎(chǔ)上,以文本需求+代碼為主要的開發(fā)方式。隨著近些年模型技術(shù)的進(jìn)步,很多研制
    的頭像 發(fā)表于 10-27 15:30 ?511次閱讀
    基于模型的<b class='flag-5'>方法</b>在民機(jī)機(jī)載<b class='flag-5'>軟件</b>中的應(yīng)用