Diferència entre revisions de la pàgina «Entorns de desenvolupament»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
 
(Hi ha 51 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
...intro...
+
<nowiki>#FpInfor #DawMp05 #DamMp05
 +
#DawMp05Uf01 #DawMp05Uf02 #DawMp05Uf03
 +
#DamMp05Uf01 #DamMp05Uf02 #DamMp05Uf03
 +
</nowiki>
  
 
== UF1: Desenvolupament de programari ==
 
== UF1: Desenvolupament de programari ==
* Enginyeria del software:
+
 
** Metodologia: anàlisi, especificació, disseny, desenvolupament/implementació, desplegament/test (producció), documentació, manteniment
+
=== Enginyeria de software ===
 +
* [[Conceptes generals de programació]]:
 +
** Codi font, compilació, codi executable, llenguatges compilats vs interpretats.
 +
* '''Enginyeria del software''':
 +
** Metodologia: anàlisi, especificació, disseny, desenvolupament/implementació, test, desplegament/producció, documentació, manteniment
 
*** [http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Metodolog.C3.ADa Metodologia de l'enginyeria de sofware] (Wikipèdia).
 
*** [http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Metodolog.C3.ADa Metodologia de l'enginyeria de sofware] (Wikipèdia).
 
** [http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Modelos_y_filosof.C3.ADas_de_desarrollo_de_software Models de desenvolupament]: en cascada, de prototips (desenvolupament ràpid), model en espiral, per etapes, iteratiu, RAD (rapid app. devel.), procés unificat,  etc.
 
** [http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software#Modelos_y_filosof.C3.ADas_de_desarrollo_de_software Models de desenvolupament]: en cascada, de prototips (desenvolupament ràpid), model en espiral, per etapes, iteratiu, RAD (rapid app. devel.), procés unificat,  etc.
* GIT (control de versions)
+
** '''Projecte de software''':
** [[Git]]: resum de les comandes més habituals.
+
*** Una guía que s'ajusta a les etapes de la metodologia del software: http://xavier.amatriain.net/PFC/
** http://github.com : feu-vos un compte. Important per l'entrega de projectes.
+
* Cas pràctic:
* Frameworks per Python: Pyramid i Django
+
** [[Especificacions: cooperativa de consum]]
** virtualenv (ens caldrà prèviament als scaffolds): http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/install.html
+
** Exercici: el·labora les especificacions per una aplicació per jugar al ''Sudoku''.
** Primer projecte en Pyramid amb "single file" (sense ''scaffold''): http://docs.pylonsproject.org/projects/pyramid_tutorials/en/latest/single_file_tasks/single_file_tasks.html
+
* SCRUM
 +
** http://scrummethodology.com/
 +
** http://scrum.org
 +
* Paradigmes MVC / MTV (Model-Vista-Controlador / Model-Template-View)
 +
 
 +
 
 +
<br>
 +
 
 +
=== Entorns integrats de desenvolupament ===
 +
 
 +
'''IDE''' : ''Integrated Development Environment''
 +
 
 +
* [http://www.jetbrains.com/pycharm/ PyCharm]: segurament el millor IDE per Python i Django.
 +
* '''Geany''': senzill però amb tot el què es necessita per començar. El pots instal·lar [http://www.geany.org/Support/RunningOnWindows en Windows] o en GNU/Linux (Debian) amb: <pre># apt-get install geany</pre>
 +
* [http://www.sublimetext.com/ SublimeText]: molt bo per Python (de pagament).
 +
* '''Eclipse''' + Pydev:
 +
** [http://www.eclipse.org/ Eclipse] és un IDE fet en Java (i per tant molt adient per aquest llenguatge).
 +
** [http://www.pydev.org PyDev] és un plug-in per Python en Eclipse. Instal·lació: http://pydev.org/manual_101_install.html
 +
* '''NetBeans''': també originari per Java però que té plugins per diferents llenguatges com PHP o Python.
 +
*: Es pot instal·lar a Ubuntu/Debian amb:<pre>$ sudo apt-get install netbeans</pre>
 +
 
 +
<br>
 +
 
 +
=== Frameworks ===
 +
Un ''framework'' és una combinació de <u>llibreries (APIs) i bones pràctiques de programació</u> que ens facilita el desenvolupament de programari.
 +
 
 +
Hi ha nombrosos ''frameworks'' per diferents tipus d'aplicacions a les que ens orientem.
  
 +
Alguns ''frameworks'' per Python:
 +
* '''Django''':
 +
** https://www.djangoproject.com/
 +
** https://infla.cat/wiki/Django_web_framework
 +
* '''web2py:''': http://www.web2py.com/
 +
* '''Pyramid''': Derivat de Pylons i repoze
  
=== Pyramid framework ===
+
Frameworks per altres llenguatges:
* Pylons + repoze.bfg = Pyramid
+
* PHP: Symphony, YII, ...
* Traversal vs. url_dispatcher
+
* JavaScript: YUI, jQuery, Dojo, ...
* Estructura típica dels arxius en una web amb Pyramid (models, __init__, views, etc.)
 
* Fase desenvolupament:
 
**virtualenv (ens caldrà prèviament als scaffolds): http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/install.html
 
**Pyramid ''scaffolds'' (esquelet de projecte): http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/project.html
 
* Fase deploy (desplegament/producció):
 
** Apache i WSGI: http://code.google.com/p/modwsgi/wiki/InstallationInstructions
 
** Configurant WSGI: http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
 
** Integració de Apache WSGI i Pylons: http://code.google.com/p/modwsgi/wiki/IntegrationWithPylons
 
* Variables d'entorn al fitxer .ini: http://pyramid.readthedocs.org/en/latest/narr/environment.html
 
* En producció, per problemes de la codificació per defecte i canviar-la a "utf-8", editar '''/usr/lib/pythonX.Y/sitecustomize.py''' i afegir:
 
<syntaxhighlight lang="python">
 
import sys
 
sys.setdefaultencoding('utf-8')
 
</syntaxhighlight>
 
* Per generar passwords: http://stackoverflow.com/questions/2257441/python-random-string-generation-with-upper-case-letters-and-digits
 
* ...
 
  
=== Buildout ===
+
 
El buildout ens permet construir projectes amb divereses versions dels packages necessaris. Així no tindrem conflictes de diverses aplicacions en un mateix entorn de producció (passaria si instal·lessim els packages al sistema).
+
==== Pyramid framework ====
* [[Buildout]]
+
Ens permet una gestió del codi eficient, mantenible i escalable. Pots introduir-te amb aquests articles:
 +
* [[Pyramid en Google App Engine]]. Començem amb Pyramid per GAE. Seguint aquest tutorial podreu crear el projecte amb l'entorn [[Buildout]].
 +
* [[Python: Pyramid framework]].
 +
* [[Pyramid: arquitectura]]
 +
* [[Web Services amb Pyramid i Cornice]]
 +
* [[Pyramid autenticació]]
 +
* [[Pyramid: documentant amb Sphinx]]
  
 
<br>
 
<br>
  
 
== UF2: Optimització de programari ==
 
== UF2: Optimització de programari ==
* Debug
+
 
* Proves (test)
+
* [[Python: depuració]] (a cacauet).
* Documentació:
+
* [[Unit Tests en Python]]
** Sphinx (per Python i C/C++): http://sphinx.pocoo.org/
+
 
 +
=== Control de versions ===
 +
* Conceptes: [[Control de versions]]
 +
* [[Git: comandes]]: resum de les comandes més habituals.
 +
* http://github.com : feu-vos un compte. Important per l'entrega de projectes.
 +
 
 +
=== Altres ===
 
* Optimització del codi
 
* Optimització del codi
 
* Refacció
 
* Refacció
* Control de versions: GIT i SVN
+
* Control d'errors o ''bugs''
* Control d'errors (''bugs'')
 
 
** http://www.bugzilla.org
 
** http://www.bugzilla.org
 +
* Seguirem treballant Pyramid:
 +
** [[Python: Pyramid framework]].
 +
** [[Pyramid: arquitectura]].
  
 
<br>
 
<br>
  
 
== UF3: Introducció al disseny orientat a objectes ==
 
== UF3: Introducció al disseny orientat a objectes ==
UML: Unified Modelling Language
+
A aquestes alçades del curs ja tenim una certa experiència programant que ens permet ocupar-nos més bé de COM programem.
* UML open source: Umbrello
+
 
...
+
En la metodologia clàssica d'enginyeria de software (model de cascada) solem trobar la etapa de DISSENY abans de la de codificació:
 +
# Anàlisi/Especificació: diem QUÈ volem programar, quins requisits ha de complir l'aplicació.
 +
# '''Disseny: COM programarem el què hem especificat.'''
 +
# Codificació: escrivim codi.
 +
# Test
 +
# Documentació
 +
# Producció: publicació, distribució de codi/executables, etc.
 +
# Manteniment
 +
 
 +
 
 +
El disseny ens permetrà:
 +
* Anticipar dificultats i solucions.
 +
* Avaluar complexitat, útil per pressupostar projectes.
 +
* Triar tecnologia adient (llenguatge, framework, compilador, recursos, hosting, hardware, etc.)
 +
* Identificar parts del projecte:
 +
** Establir etapes del desenvolupament i entregues (''milestones'' o "fites").
 +
** Dividir tasques en equip de treball.
 +
**: ''Sol arribo més ràpid. Junts arribem més lluny.''
 +
 
 +
 
 +
Disposem d'algunes eines que ens ajudaran:
 +
* [[UML: Unified Modelling Language]]
 +
* [[Bones pràctiques de programació]]

Revisió de 08:17, 25 jul 2018

#FpInfor #DawMp05 #DamMp05 #DawMp05Uf01 #DawMp05Uf02 #DawMp05Uf03 #DamMp05Uf01 #DamMp05Uf02 #DamMp05Uf03

UF1: Desenvolupament de programari[modifica]

Enginyeria de software[modifica]



Entorns integrats de desenvolupament[modifica]

IDE : Integrated Development Environment

  • PyCharm: segurament el millor IDE per Python i Django.
  • Geany: senzill però amb tot el què es necessita per començar. El pots instal·lar en Windows o en GNU/Linux (Debian) amb:
    # apt-get install geany
  • SublimeText: molt bo per Python (de pagament).
  • Eclipse + Pydev:
  • NetBeans: també originari per Java però que té plugins per diferents llenguatges com PHP o Python.
    Es pot instal·lar a Ubuntu/Debian amb:
    $ sudo apt-get install netbeans


Frameworks[modifica]

Un framework és una combinació de llibreries (APIs) i bones pràctiques de programació que ens facilita el desenvolupament de programari.

Hi ha nombrosos frameworks per diferents tipus d'aplicacions a les que ens orientem.

Alguns frameworks per Python:

Frameworks per altres llenguatges:

  • PHP: Symphony, YII, ...
  • JavaScript: YUI, jQuery, Dojo, ...


Pyramid framework[modifica]

Ens permet una gestió del codi eficient, mantenible i escalable. Pots introduir-te amb aquests articles:


UF2: Optimització de programari[modifica]

Control de versions[modifica]

Altres[modifica]


UF3: Introducció al disseny orientat a objectes[modifica]

A aquestes alçades del curs ja tenim una certa experiència programant que ens permet ocupar-nos més bé de COM programem.

En la metodologia clàssica d'enginyeria de software (model de cascada) solem trobar la etapa de DISSENY abans de la de codificació:

  1. Anàlisi/Especificació: diem QUÈ volem programar, quins requisits ha de complir l'aplicació.
  2. Disseny: COM programarem el què hem especificat.
  3. Codificació: escrivim codi.
  4. Test
  5. Documentació
  6. Producció: publicació, distribució de codi/executables, etc.
  7. Manteniment


El disseny ens permetrà:

  • Anticipar dificultats i solucions.
  • Avaluar complexitat, útil per pressupostar projectes.
  • Triar tecnologia adient (llenguatge, framework, compilador, recursos, hosting, hardware, etc.)
  • Identificar parts del projecte:
    • Establir etapes del desenvolupament i entregues (milestones o "fites").
    • Dividir tasques en equip de treball.
      Sol arribo més ràpid. Junts arribem més lluny.


Disposem d'algunes eines que ens ajudaran: