Laatu requirementsEdit
Mitä ikinä lähestymistapa kehitykseen voi olla, lopullinen ohjelma on täytettävä joitakin perustavanlaatuisia ominaisuuksia. Seuraavat ominaisuudet ovat tärkeimpiä:
- Luotettavuus: kuinka usein tulokset ohjelma on oikea. Tämä riippuu käsitteellinen oikeellisuus algoritmeja, ja minimointi ohjelmointi virheitä, kuten virheitä resource management (esim., puskurin ylivuotoja ja kilpailutilanteita) ja logiikka virheitä (kuten nollalla tai off-by-one virheitä).,
- varmuus: kuinka hyvin ohjelma ennakoi virheistä (ei virheistä) johtuvia ongelmia. Tällaisia ovat esimerkiksi virheelliset, epäasianmukaiset tai korruptoituneet tiedot, tarvittavien resurssien, kuten muistin, käyttöjärjestelmäpalvelujen ja verkkoyhteyksien, käyttäjävirheen ja odottamattomien sähkökatkojen, puuttuminen.
- Käytettävyys: ergonomia program: helppous, jolla henkilö voi käyttää ohjelmaa aiotun tarkoituksen tai joissakin tapauksissa jopa ennakoimattomiin tarkoituksiin. Tällaiset kysymykset voivat tehdä tai rikkoa sen menestystä vaikka muita kysymyksiä., Tämä liittyy monenlaisia teksti, graafinen, ja joskus laitteisto-osat, jotka parantavat selkeyttä, intuitiivisuus, johdonmukaisuuden ja täydellisyyden ohjelman käyttöliittymä.
- Siirrettävyys: välillä tietokoneen laitteiston ja käyttöjärjestelmän alustoilla, joihin lähdekoodin ohjelma voidaan kääntää/tulkata ja ajaa., Tämä riippuu eroja ohjelmointi tarjoamat eri alustoille, mukaan lukien laitteiston ja käyttöjärjestelmän resursseja, odotetaan käyttäytymistä laitteiston ja käyttöjärjestelmän, ja saatavuus platform-specific kääntäjät (ja joskus kirjastot) kielen lähdekoodi.
- Ylläpidettävyys: helppous, jolla ohjelma voidaan muuttaa sen nykyisiä tai tulevia kehittäjiä, jotta voidaan tehdä parannuksia tai muokkaukset, korjaa bugeja ja tietoturva-aukkoja, tai mukauttaa se uusiin ympäristöihin., Hyvät käytänteet alkuvaiheessa vaikuttavat asiaan. Tämä laatu ei välttämättä näy suoraan loppukäyttäjälle, mutta se voi vaikuttaa merkittävästi ohjelman kohtaloon pitkällä aikavälillä.
- Tehokkuus/suorituskyky: Mittaa järjestelmän resursseja ohjelma kuluttaa (prosessori aikaa, muistia, hidastaa laitteita, kuten levyt, verkon kaistanleveyttä ja jossain määrin jopa käyttäjän toimia): mitä vähemmän, sen parempi. Tähän kuuluu myös resurssien huolellinen hallinta, esimerkiksi väliaikaistiedostojen puhdistaminen ja muistivuotojen poistaminen., Tätä käsitellään usein valitun ohjelmointikielen varjossa. Vaikka kieli toki vaikuttaa suorituskykyyn, hitaammatkin kielet, kuten Python, voivat toteuttaa ohjelmia heti ihmisen näkökulmasta. Nopeus, resurssien käyttö ja suorituskyky ovat tärkeitä ohjelmia, jotka pullonkaula järjestelmässä, mutta tehokas käyttö ohjelmoija aika on myös tärkeää, ja on liittyvät kustannukset: enemmän laitteisto voi olla halvempaa.,
Luettavuutta lähde codeEdit
tietokoneen ohjelmointi, luettavuus viittaa helppous, jolla ihmisen lukija voi ymmärtää tarkoituksen, virtausta ja käyttö lähdekoodi. Se vaikuttaa edellä mainittuihin laatunäkökohtiin, kuten siirrettävyyteen, käytettävyyteen ja ennen kaikkea ylläpidettävyyteen.
Luettavuus on tärkeää, koska ohjelmoijat viettää suurimman osan ajastaan lukemiseen, yrittää ymmärtää ja muuttaa olemassa olevaa lähdekoodia, kirjoittamisen sijasta uutta lähdekoodia. Lukukelvoton koodi johtaa usein virheisiin, tehottomuuteen ja päällekkäiseen koodiin., Erään tutkimuksen mukaan muutamat yksinkertaiset luettavuusmuutokset lyhensivät koodia ja vähensivät huomattavasti aikaa ymmärtää sitä.
yhdenmukaisen ohjelmointityylin noudattaminen auttaa usein luettavuutta. Luettavuus on kuitenkin muutakin kuin ohjelmointityyliä. Monet tekijät, joilla on vähän tai ei mitään tekemistä tietokoneen kyky tehokkaasti kokoaa ja suorittaa koodia, edistää luettavuutta. Jotkut näistä tekijöistä ovat:
- Eri luetelmakohta tyylejä (välilyönnillä)
- Hajoaminen
- nimeämiskäytännöt esineitä (kuten muuttujat, luokat, menettelyjä, jne.,)
esityksen näkökohtia (kuten sisennykset, rivinvaihdot, värin korostus, ja niin edelleen) ovat usein hoitaa lähdekoodin editorissa, mutta sisältö näkökohdat heijastavat ohjelmoijan lahjakkuutta ja taitoja.
Erilaisia visuaalisia ohjelmointikieliä on myös kehitetty tarkoituksenaan ratkaista luettavuutta koskee antamalla ei-perinteiset lähestymistavat koodin rakenne ja näyttö. Integroiduissa kehitysympäristöissä (IDEs) pyritään integroimaan kaikki tällainen apu. Tekniikat, kuten koodin uudelleenfaktorointi, voivat parantaa luettavuutta.,
Algoritmista complexityEdit
akateemisen alan ja tekniikan käytännön ohjelmointi ovat molemmat pitkälti kyse löytää ja toteuttaa mahdollisimman tehokkaita algoritmeja tietyn luokan ongelma. Tätä tarkoitusta varten, algoritmeja luokitellaan tilauksia käyttämällä ns. Iso O merkintä, joka ilmaisee resurssin käyttöä, kuten suoritusaika tai muistin kulutuksen kannalta koko tulo., Asiantuntija ohjelmoijat tuntevat erilaisia vakiintuneita algoritmeja ja niiden monimutkaisuutta ja käyttää tätä tietoa valita algoritmeja, jotka ovat parhaiten olosuhteissa.
Shakki algoritmeja kuin exampleEdit
”Ohjelmointi Computer for Playing Chess” oli 1950 paperia, joka arvioitiin ”minimax” – algoritmi, joka on osa historiaa algoritminen monimutkaisuus; kurssin IBM: n Deep Blue (shakki tietokone) on osa tietojenkäsittelytieteen opetussuunnitelman Stanfordin Yliopistossa.,
MethodologiesEdit
ensimmäinen askel kaikkein muodollinen ohjelmistokehityksen prosesseja on vaatimusten analysointi, jota seurasi testaus määrittää arvo mallinnus, toteutus, ja vian poistamisen (debugging). On olemassa paljon erilaisia lähestymistapoja kunkin näistä tehtävistä. Yksi vaatimusten analysoinnissa suosittu lähestymistapa on Tapausanalyysi. Monet ohjelmoijat käyttävät muotoja, Agile software development, missä eri vaiheissa virallisen ohjelmiston kehitystä ovat integroitu yhteen lyhyitä, että kestää muutaman viikon sijaan vuosia., Ohjelmistokehitysprosessiin on monia lähestymistapoja.
Suosittu mallinnus tekniikoita ovat Object-Oriented Analysis and Design (OOAD) ja Model-Driven Architecture (MDA). Unified Modeling Language (UML) on notaatio, jota käytetään sekä OOADISSA että MDA: ssa.
vastaavanlainen tietokannan suunnittelussa käytetty tekniikka on entiteetti-Suhdemallinnus (ER-mallinnus).
Täytäntöönpanon tekniikoita ovat välttämätöntä kielellä (object-oriented tai menettelyyn), funktionaalisia kieliä, ja logiikan kielellä.,
Mittaus kieli usageEdit
Se on hyvin vaikea määrittää, mitkä ovat kaikkein suosittu nykyajan ohjelmointikieliä., Mittausmenetelmien ohjelmointikieli suosio ovat: counting useita työpaikkailmoituksia, joissa mainitaan kieli, myytyjen kirjojen ja kurssien opetuksen kieli (tämä yliarvioi uudempia kieliä), ja määrän on arvioitu olevan nykyistä riviä koodia kirjoitettu kieli (tämä aliarvioi käyttäjien määrä liiketoiminnan kielet kuten COBOL).
Jotkut kielet ovat erittäin suosittuja erityisesti erilaisia sovelluksia, kun taas joissakin kielissä käytetään säännöllisesti kirjoittaa monia erilaisia sovelluksia., Esimerkiksi COBOL on edelleen vahva yritysten datakeskuksia usein suurten keskuskoneiden, Fortran tekniikan sovelluksissa, skriptauskielet Web-kehitys, ja C sulautetut ohjelmistot. Monissa sovelluksissa käytetään useiden kielten yhdistelmää niiden rakentamisessa ja käytössä. Uusia kieliä ovat yleensä suunniteltu noin syntaksi ennen kielen kanssa uusia toimintoja lisätty, (esimerkiksi C++ lisää objekti-orientaatio C ja Java-lisää muistin hallinta ja bytecode-C++, mutta seurauksena, menettää tehokkuutta ja kykyä matalan tason manipulointi).,
DebuggingEdit
ensimmäinen tunnettu todellinen vika aiheuttaa ongelmia tietokoneessa oli perhonen, loukussa sisällä Harvardin mainframe, kirjataan lokikirjaan merkintä on päivätty 9. syyskuuta 1947. ”Bug” oli jo yleinen termi ohjelmistovirheelle, kun tämä vika löydettiin.
– Testaus on erittäin tärkeä tehtävä ohjelmiston kehitysprosessia, koska vikoja ohjelma voi olla merkittäviä seurauksia sen käyttäjille., Jotkut kielet ovat alttiimpia joitakin erilaisia vikoja, koska niiden erittely ei vaadi kääntäjät tehdä niin paljon tarkastettaviksi muita kieliä. Staattisen koodin analysointityökalun käyttö voi auttaa havaitsemaan joitakin mahdollisia ongelmia. Yleensä ensimmäinen vaihe virheenkorjauksessa on yrittää jäljentää ongelmaa. Tämä voi olla ei-triviaali tehtävä, esimerkiksi rinnakkaisten prosessien tai joidenkin epätavallisten ohjelmistovirheiden kanssa. Myös tietty käyttöympäristö ja käyttöhistoria voivat vaikeuttaa ongelman toistamista.,
kun vika on toistettu, ohjelman syöttöä voidaan joutua yksinkertaistamaan, jotta sen debugointi olisi helpompaa. Esimerkiksi, kun vian kääntäjä voi tehdä sen kaatua, kun jäsentämiseen joitakin suuri lähde tiedoston, yksinkertaistamista testi tapauksessa, että tuloksia vain muutaman rivin alkuperäisestä lähteestä tiedosto voi olla riittävä toistamaan saman kaatua. Trial-and-error/divide-and-conquer on tarpeen: ohjelmoija yrittää poistaa joitakin osia alkuperäisestä testitapauksesta ja tarkistaa, onko ongelma vielä olemassa., Kun virheenkorjaus ongelma GUI, ohjelmoija voi yrittää jättää joitakin käyttäjän toimia alkuperäisen ongelman kuvaus ja tarkistaa, jos jäljellä olevat toimet ovat riittävät bugeja esiintyä. Scripting ja breakpointing on myös osa tätä prosessia.
virheenkorjaus tehdään usein tunnisteilla kuten Eclipse, Visual Studio, Xcode, Kdevelop, NetBeans ja koodi: Blocks. Myös erillisiä debuggereita, kuten GDB: tä, käytetään, ja ne tarjoavat usein vähemmän visuaalista ympäristöä, yleensä komentorivin avulla. Jotkin tekstieditorit, kuten Emacs, antavat GDB: lle mahdollisuuden vedota niiden kautta visuaaliseen ympäristöön.,