Diferència entre revisions de la pàgina «Entorns de desenvolupament»
(Hi ha 18 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | + | <nowiki>#FpInfor #DawMp05 #DamMp05 | |
+ | #DawMp05Uf01 #DawMp05Uf02 #DawMp05Uf03 | ||
+ | #DamMp05Uf01 #DamMp05Uf02 #DamMp05Uf03 | ||
+ | </nowiki> | ||
== UF1: Desenvolupament de programari == | == UF1: Desenvolupament de programari == | ||
Línia 15: | Línia 18: | ||
** [[Especificacions: cooperativa de consum]] | ** [[Especificacions: cooperativa de consum]] | ||
** Exercici: el·labora les especificacions per una aplicació per jugar al ''Sudoku''. | ** Exercici: el·labora les especificacions per una aplicació per jugar al ''Sudoku''. | ||
+ | * SCRUM | ||
+ | ** http://scrummethodology.com/ | ||
+ | ** http://scrum.org | ||
+ | * Paradigmes MVC / MTV (Model-Vista-Controlador / Model-Template-View) | ||
+ | |||
<br> | <br> | ||
=== Entorns integrats de desenvolupament === | === 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 === | === Frameworks === | ||
− | + | Un ''framework'' és una combinació de <u>llibreries (APIs) i bones pràctiques de programació</u> que ens facilita el desenvolupament de programari. | |
− | ** Pyramid: | + | |
− | + | 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 39: | Línia 72: | ||
* [[Python: depuració]] (a cacauet). | * [[Python: depuració]] (a cacauet). | ||
− | + | * [[Unit Tests en Python]] | |
− | |||
− | |||
=== Control de versions === | === 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 === | === Altres === | ||
− | |||
− | |||
− | |||
* 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 == | ||
− | + | 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ó: | |
+ | # 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
Contingut
UF1: Desenvolupament de programari[modifica]
Enginyeria de software[modifica]
- 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
- Metodologia de l'enginyeria de sofware (Wikipèdia).
- Models de desenvolupament: en cascada, de prototips (desenvolupament ràpid), model en espiral, per etapes, iteratiu, RAD (rapid app. devel.), procés unificat, etc.
- Projecte de software:
- Una guía que s'ajusta a les etapes de la metodologia del software: http://xavier.amatriain.net/PFC/
- Metodologia: anàlisi, especificació, disseny, desenvolupament/implementació, test, desplegament/producció, documentació, manteniment
- Cas pràctic:
- Especificacions: cooperativa de consum
- Exercici: el·labora les especificacions per una aplicació per jugar al Sudoku.
- SCRUM
- Paradigmes MVC / MTV (Model-Vista-Controlador / Model-Template-View)
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:
- Eclipse és un IDE fet en Java (i per tant molt adient per aquest llenguatge).
- 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:
$ sudo apt-get install netbeans
- Es pot instal·lar a Ubuntu/Debian amb:
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:
- Django:
- web2py:: http://www.web2py.com/
- Pyramid: Derivat de Pylons i repoze
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:
- 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
UF2: Optimització de programari[modifica]
- Python: depuració (a cacauet).
- Unit Tests en Python
Control de versions[modifica]
- 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[modifica]
- Optimització del codi
- Refacció
- Control d'errors o bugs
- Seguirem treballant Pyramid:
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ó:
- 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: