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

De Cacauet Wiki
Salta a la navegació Salta a la cerca
 
(Hi ha 26 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 de software ===
 
* [[Conceptes generals de programació]]:
 
* [[Conceptes generals de programació]]:
 
** Codi font, compilació, codi executable, llenguatges compilats vs interpretats.
 
** Codi font, compilació, codi executable, llenguatges compilats vs interpretats.
Línia 10: Línia 15:
 
** '''Projecte de software''':
 
** '''Projecte de software''':
 
*** Una guía que s'ajusta a les etapes de la metodologia del software: http://xavier.amatriain.net/PFC/
 
*** Una guía que s'ajusta a les etapes de la metodologia del software: http://xavier.amatriain.net/PFC/
* '''IDEs (Integrated Development Environment)''' per Python:
+
* Cas pràctic:
** 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>sudo apt-get install geany</pre>
+
** [[Especificacions: cooperativa de consum]]
** [http://www.sublimetext.com/ SublimeText]: molt bo per Python (de pagament).
+
** Exercici: el·labora les especificacions per una aplicació per jugar al ''Sudoku''.
** Eclipse + Pydev:
+
* SCRUM
*** [http://www.eclipse.org/ Eclipse] és un IDE fet en Java (i per tant molt adient per aquest llenguatge).
+
** http://scrummethodology.com/
*** [http://www.pydev.org PyDev] és un plug-in per Python en Eclipse. Instal·lació: http://pydev.org/manual_101_install.html
+
** http://scrum.org
* '''Frameworks''' per web en Python:
+
* Paradigmes MVC / MTV (Model-Vista-Controlador / Model-Template-View)
** Pyramid: En aquest curs treballarem Pyramid. Trobaràs el necessri en aquest tutorial.
+
 
*** [[Python: Pyramid framework]].
+
 
*** [[Pyramid: arquitectura]]
+
<br>
*** Pyramid Auth: http://docs.pylonsproject.org/projects/pyramid/en/latest/api/authentication.html
+
 
** Django: https://www.djangoproject.com/
+
=== 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
 +
 
 +
Frameworks per altres llenguatges:
 +
* PHP: Symphony, YII, ...
 +
* JavaScript: YUI, jQuery, Dojo, ...
 +
 
 +
 
 +
==== Pyramid framework ====
 +
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>
  
Línia 27: Línia 72:
  
 
* [[Python: depuració]] (a cacauet).
 
* [[Python: depuració]] (a cacauet).
* Seguirem treballant Pyramid:
+
* [[Unit Tests en Python]]
** [[Python: Pyramid framework]].
 
** [[Pyramid: arquitectura]].
 
  
 
=== Control de versions ===
 
=== Control de versions ===
* GIT (control de versions)
+
* Conceptes: [[Control de versions]]
** [[Git: comandes]]: resum de les comandes més habituals.
+
* [[Git: comandes]]: resum de les comandes més habituals.
** http://github.com : feu-vos un compte. Important per l'entrega de projectes.
+
* http://github.com : feu-vos un compte. Important per l'entrega de projectes.
** Llibre: http://git-scm.com/book/es
 
* SVN o Subversion
 
** http://subversion.apache.org/
 
  
 
=== Altres ===
 
=== Altres ===
* Proves (test)
 
* Documentació:
 
** Sphinx (per Python i C/C++): http://sphinx.pocoo.org/
 
 
* Optimització del codi
 
* Optimització del codi
 
* Refacció
 
* Refacció
 
* Control d'errors o ''bugs''
 
* Control d'errors o ''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.
* [http://ca.wikipedia.org/wiki/Llenguatge_unificat_de_modelat UML a Wikipèdia en català].
 
* [http://en.wikipedia.org/wiki/Unified_Modeling_Language UML a Wikièdia en anglès].
 
 
 
  
Algunes aplicacions per UML disponibles:
+
En la metodologia clàssica d'enginyeria de software (model de cascada) solem trobar la etapa de DISSENY abans de la de codificació:
* Linux (amb apt-get o yum):
+
# Anàlisi/Especificació: diem QUÈ volem programar, quins requisits ha de complir l'aplicació.
** umbrello (recomanat)
+
# '''Disseny: COM programarem el què hem especificat.'''
** Dia
+
# Codificació: escrivim codi.
* Windows:  
+
# Test
** MS Visual Studio.
+
# Documentació
** MS Visio.
+
# Producció: publicació, distribució de codi/executables, etc.
** umbrello el trobareu sota KDE on Windows (entre altres programes).
+
# Manteniment
** UMLpad.
 
** Dia.
 
  
  
=== Diagrames UML ===
+
El disseny ens permetrà:
* Diagrames ESTRUCTURALS:
+
* Anticipar dificultats i solucions.
** Diagrama de classes: [http://en.wikipedia.org/wiki/Class_diagram Wikipedia (en)]
+
* Avaluar complexitat, útil per pressupostar projectes.
** Diagrama de components.
+
* Triar tecnologia adient (llenguatge, framework, compilador, recursos, hosting, hardware, etc.)
** Diagrama de desplegament: [http://en.wikipedia.org/wiki/Deployment_diagram Wikipedia (en)]
+
* Identificar parts del projecte:
* Diagrames de COMPORTAMENT (behavioral diagrams):
+
** Establir etapes del desenvolupament i entregues (''milestones'' o "fites").
** Casos d'ús [http://en.wikipedia.org/wiki/Use_case Wikipedia (en)]
+
** Dividir tasques en equip de treball.
** Diagrama d'estats:
+
**: ''Sol arribo més ràpid. Junts arribem més lluny.''
*** [http://es.opendomo.org/super-state Exemple alarma].
 
*** [http://iphoneandandroid.blogspot.com.es/2009/11/android-activity-states-and-state.html Android activity states]. Una "Activity" en Android equival a una aplicació.
 
***: Després reviseu el diagrama d'activitat: [http://androideity.com/2011/07/06/ciclo-de-vida-de-una-actividad/ Exemple aplicació mòbil Android].
 
** Diagrama d'activitat: similar als diagrames de flux.
 
*** [http://en.wikipedia.org/wiki/Control_flow_diagram Wikipedia (en)]
 
*** [http://androideity.com/2011/07/06/ciclo-de-vida-de-una-actividad/ Android activity state]. Una "Activity" en Android equival a una aplicació.
 
** Diagrama de seqüència:
 
*** [http://en.wikipedia.org/wiki/Sequence_diagram Wikipèdia]
 
*** [http://www.ibm.com/developerworks/rational/library/3101.html IBM]
 
*** [http://www.cs.umd.edu/~mvz/cmsc435-s09/pdf/cell-phone-sequence-chart.pdf exemple telèfons]
 
  
=== Exercicis UML ===
 
# Fes el diagrama de classes per un joc de "Space Invaders" com el de la imatge del final.
 
# Fes el diagrama d'estats pel joc (en joc, home, configuració, ranking).
 
# Fes el diagrama de seqüència del joc (events de moviment, disparar, pintar)
 
  
[[Fitxer:space_invaders_2.gif]]
+
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: