Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Dren de fosa langa casa?

Panko lung

Analfabetism functional la relati...

Declaratia Unica - dividende WINE
 Plase ferestre, din nanofibra, an...

Batch defect de cartele metrou

350 lei pentru o plomba e mult sa...

Incarcator Makita China
 Boala pomi, sau insecte?

Ghiduri clinice Romania

Credit - persoane cu dizabilitati...

Diferente dioptrii intre ochi
 cod CAEN magazin online cu aproba...

Vocuher eMag peste pret comanda a...

Punct alb pe gingie

Schema scaner Lexmark X215
 

Multiplele domenii intalnite in dezvoltarea software – la ce ajuta?

- - - - -
  • Please log in to reply
2 replies to this topic

#1
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,138
  • Înscris: 24.02.2007
Pe scurt, la ce ma ajuta diversele domenii/materii atunci cand dezvolt un produs software:

Algorithms
  • Sa invat cum sa rezolv probleme (matematice)*, si cum pot imbina solutii mai mici pentru a rezolva o problema mai complexa.
  • Sa identific sabloane in rezolvarea diverselor probleme.
  • *algebra liniara, statistica
Computational Complexity Theory
  • Sa pot evalua cum va face sistemul fata daca am mai multe date de intrare. Daca de maine am de procesat de 100x mai multe date decat azi, va merge la fel de repede/va necesita la fel de multa memorie, de 100x mai greu sau de 1 milion de ori mai greu?
  • Sa-mi pot da seama daca exista metode mai eficiente de a rezolva o problema. Exista categorii de probleme (unele chiar banale, la prima vedere) pentru care nu se cunosc rezolvari precise eficiente.
Data Structures
  • Sa organizez eficient datele pentru a satisface cerintele. Am de cautat foarte des o carte intr-o biblioteca de 1 milion de bucati? Nu mi-e totuna sa compar mereu titlul de cautat cu fiecare din cele 1 milion de bucati sau sa efectuez doar 20 de comparatii sau chiar doar una singura.
Languages & Compilers
  • Sa inteleg ce e un limbaj de programare.
  • Sa inteleg ce se intampla din momentul in care scriu codul, pana cand vad rezultatele pe ecran.
  • Sa invat sa scriu un compilator pentru un limbaj specific care mi-ar fi mai mult de ajutor intr-un anumit domeniu decat unul de uz general.
Imperative Languages (C, C++, C#, Java, ...)
  • Sa exprim pas cu pas, ce trebuie sa faca sistemul.
Procedural Languages (C, ...)
  • Sa impart codul in mai multe parti, reutilizabile.
Object Oriented Languages (Java, C#, C++, ...)
  • Sa abstractizez mai bine codul, ascunzand detalii de implementare si permitand inlocuirea partilor.
Functional Languages (Haskell, ...)
  • Sa exprim intr-un mod declarativ ce trebuie sa faca sistemul.
  • Sa inteleg avantajele si dezavantajele structurilor de date immutable.
  • Sa inteleg avantajele si dezavantajele functiilor fara efecte secundare.
Compiled Languages (C, C++, Java, C#, ...)
  • Sa gestionez procesul de compilare, mai ales al unui proiect mai mare.
  • Sa gestionez managementul si versionarea dependintelor.
Interpreted Languages (Python, Javascript, ...)
  • Sa profit de faptul ca pot porni mai rapid o aplicatie dupa ce efectuez o schimbare.
Strongly Typed Languages
  • Sa profit de ajutorul compilatorului in detectia unor greseli (chiar si la nivel de unitati de masura).
Loosely Typed Languages
  • Sa scriu mai repede un prototip.
Debugging
  • Sa inteleg, pas cu pas, ce se petrece la executia programului.
  • Sa identific cat mai usor probleme.
Operating Systems
  • Sa stiu ce-mi permite sistemul de operare sa fac.
  • Sa stiu ce-mi poate oferi sistemul de operare pe tava astfel incat sa-mi fie mai usor sa dezvolt ceva anume.
  • Sa stiu care sunt avantajele si dezavantajele alegerii unui anumit sistem de operare. (fara a ne limita la unul singur)
Networking
  • Sa inteleg cum functioneaza retelele/internetul.
  • Sa stiu cum sa dezvolt aplicatii ce folosesc eficient retele/internetul.
Concurrency
  • Sa gestionez aplicatia intr-un sistem multi-tasking cum sunt mai toate din ziua de azi.
  • Sa inteleg ce probleme pot aparea intr-un astfel de sistem.
Parallel Programming
  • Sa profit de faptul ca procesoarele pot executa cod in paralel.
Distributed Programming
  • Sa coordonez mai multe sisteme ce pot conlucra pentru a rezolva o problema.
Software Engineering
  • Sa-mi organizez munca.
  • Sa scriu cod in echipa.
  • Sa scriu cod ce e mai usor de extins in timp decat de rescris in intregime.
  • Sa testez cod.
  • Sa identific & minimizez numarul de probleme dinainte de a livra produsul.
  • Sa diagnostichez cat mai usor probleme aparute dupa ce am livrat produsul.
Software Architecture
  • Sa gasesc solutii potrivite functie de cerintele analizate.
  • Sa gasesc moduri de a interactiona cu alte sisteme existente.
Relational Databases
  • Sa inteleg cum pot organiza datele intr-un mod relational.
  • Sa inteleg avantajele (ACID) oferite de bazele de date relationale.
  • Sa inteleg limitarile unui baze de date relationale.
Non-relational Databases
  • Sa inteleg cum pot persista datele intr-un mod mai simplu/eficient pentru problema in cauza, daca n-am nevoie de tot ce ofera o baza de date relationale.
Command Line Tools
  • Sa rezolv mai repede unele categorii de probleme, din linia de comanda.
  • Sa gandesc unele solutii in termeni de streaming a datelor.

Requirements Engineering (to be determined)

Business Engineering (to be determined)



12/02/2018  completari: Algorithms, Operating Systems,
12/02/2018  mentionari: Requirements Engineering, Business Engineering

Edited by MarianG, 12 February 2018 - 17:09.


#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,323
  • Înscris: 10.08.2005
Daca aveti nelaurmiri despre un subiect va rog adresati intrebari directe.

Daca aveti de adus completari va rog spuneti si dezbatem ce si unde se incadreaza.

#3
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
La OS: să știu cum să folosesc eficient mai mult de un sistem de operare

Și aș mai adăuga: requirements and business engineering

La algorims: matematică (cel puțin algebră liniară, statistică)

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate