ED


Miniprogramació del Curs 
Google Classroom per entregar tasques

Recursos:
Tot lo que vos fa falta ho teniu a aquest Blog. També podeu consultar:
Moodle (altres recursos i entregues al professor)
Material del mòdul al IOC (Institut Obert de Catalunya)

-----------------------------------------------------------------------
UNITATS DIDÀCTIQUES:

1.- SL: es un llenguatge de programació molt pedagògic, amb entorn de desenvolupament i manual en Castellà que permet editar i executar algorismes. Està basat en el llenguatge C i va ser desenvolupat a una universitat.
Emprarem el material i entorn de SL per fer una introducció a la programació estructurada.

Visita la Web de SL

exercicis SL

pràctica SL
Nota: canvia al registre "empleat" el camp "esborrat" a tipus logico.
ENTREGA DE LA PRÀCTICA al Moodle

Exemples programes fets:

- Exemple amb colors
- Factorial
- Exemple fitxers
- Tenis
- Manolo's attack

Exemple exercici a fer amb SL:

Donat el següent codi, completar les subrutines :

a) llistaNotes()
b) mostraNotesMitjes()
c) cercaPerDNI()

solució 

Examen pràctic SL
sol.lució part 1 
sol.lució part 2 (versió simple)
    tasca: millorar possant més controls, com es va explicar a classe.

2.- UML
L'UML o Llenguatge Unificat de Modelat (Unified Modeling Language, Llenguatge de Modelat Unificat) és un llenguatge de modelat de sistemes de software, és el més conegut i utilitzat en l'actualitat, està suportat per l'OMG (Object Management Grup). És un llenguatge gràfic per visualitzar, especificar, construir i documentar un sistema. L'UML ofereix un estàndard per descriure un sistema (model), incloent aspectes conceptuals tals com els processos de negoci i funcions del sistema, i aspectes concrets com expressions de llenguatges de programació, esquemes de bases de dades i components reutilitzables.

Descripció d'un departament d'informàtica

material UML

Exemples de projectes reals
(a veure amb el professor)

Entrega de pràctica UML obligatòria: 3 de Març de 2017, a Google Classroom

3.- IDEs: Entorns de Desenvolupament Integrats
Son eines informàtiques per al desenvolupament de programari de manera còmoda i ràpida. Així doncs és un entorn de desenvolupament que agrupa diferents funcions en un sol programa, habitualment: editor de codi, compilador, depurador i un programa de disseny d'interfície gràfica.
El principal avantatge és que facilita la tasca del programador mentre que l'inconvenient més important és que pot provocar mals hàbits a l'hora de programar o provocar errors que a priori començant de zero no es produirien.

Eclipse 
Informació Eclipse
Tutorial Eclipse

Més material complementari d'Eclipse al Moodle

Hello world in Java with Eclipse:



Altres Entorns de Desenvolupament integrats:
NetBeans
IntelliJ

Activitat IDEs:
sol.lució (profe)

Execici Persones: descripció
codi persones

Resum funcionalitats d'Eclipse (feina en grup-classe)
Editar entre tots el document anterior i possar tot lo que vos sembli útil.
Ho anireu completant durant el curs. Emprar com a punt de partida lo que explica al document "Tutorial Eclipse". Les dues primeres estan fetes com exemple.

4.- Enginyeria del Software i proves :
4.1.- Document sobre Qualitat del Software

4.2.- Contesta les següents preguntes sobre Qualitat del Software
Standard de Qualitat ISO 9001 per desenvolupament de Software: ISO 9000-3
Teacher's solution

4.3 1.- Veure el document sobre Software Engineering

4.4.- Testeig de Programes (teoría)
Ex1: Codi a on trobar els errors: Escola
sortida correcte quan tot aclarit NO veure fins que el professor doni permís
sol (profe only)

Es pot estimar els erros no trobats a un programa?
Sí es pot:


Per estimar el nombre d'errors no trobats, farem una regla de tres.
Primer passem el nostre joc de proves, dissenyat segons hem vist a la teoria. Imaginem que trobem 56 errades inicials (EI) i les corregim.
Ara, introduïm 100 errades aleatòries (EA) noves, sense tenir en compte el joc de proves. Si tornem a passar el nostre joc de proves inicial, podrem veure si es un bon joc de proves o no, ja que sabem el nombre d'errades que hi ha i si ho executem veim el nombre que troba, que segurament no seran totes. Imaginem que troba 95 (ED: errades deliberades) i es deixa 5 pel camí.
Si es manté la mateixa proporció, podem fer la regla de tres següent per estimar les errades no trobades inicialment:

Si ha trobat 95 errades (ED) ------> deixant de trobar 5 (100 - ED)
Quan en troba 56 (EI)          -------> Ex deixa X

Multipliquem en creu i:

X = EI * (100 – ED) / ED
X = 56 * 5 / 95 = 2,94

Deixaria de trobar uns 3 bugs!


Proves unitàries o JUnit, en Java:



Ex2: Codi amb errors: Classifica Nombres
Empra les proves unitàries d'Eclipse com s'ha vist al video anterior.
Hauras de modificar l'estructura del programa per poder cridar-ho amb un JUnit.
Si ja has provat i vols ajuda, pots veure com ho he fet jo amb el següent fitxer,  important com a "existing project". Aquest té 3 JUnits fets, però el codi encara té els errors. 
projecteEclipseAmbJUnits

projecteEclipseAmbJUnits - resolt (profe only)

sol (profe only)

Exemple d'asserts amb Eclipse
Heu de llegir l'article, entendre els conceptes de precondició i postcondició i provar de fer l'exemple al vostre ordinador.
Per executar el programa amb Eclipse, habilitant l'assert, anar aRun configurations i possar -ea a  VM arguments.
Si es posa un num > 10 donarà l'error quan s'executa amb Asserts.

Exemple:
Enter a number between 0 and 10: 333

 Ex3: caixa transparent
Agafa la pràctica del 1r Trimestre d'un company i en grups de dos, feis un testeig de caixa transparent. Heu de trobar 2 errades i fer la correcció. Recordau que podeu trobar les vostres pràctiques al Moodle/GoogleClassroom.
Quan les teniu, comentau al vostre company, desenvolupador del programa.

Ex4:  JUnits per algorismes senzills
Fer un joc de proves a Eclipse amb JUnit i desprès una classe amb un mètoda a provar que:
a) Fer una classe Java que donat un any, torni un booleà dient si es any bisiest o no.
Joc de proves.
anys sí ho son: 1900, 2016
anys no ho son: 1902, 2017

Desprès fer una classe amb un mètode a testejar
bisiest ssi es un any múltiple de 4 o té les dues xifres 0. Ex: 1900.

Nota:
condició a la Vikipèdia
Todos los años divisibles entre 4 son bisiestos, excepto aquellos que son divisibles entre 100 pero no entre 400. Por ejemplo 1700, 1800 y 1900 no fueron bisiestos, pero 1600 y 2000 sí.

b) Fer un mètode per donat un String, tornar si es un email vàlid.
aquest no té pistes. Primer fer el joc de proves i desprès el programa

INFORMACIÓ COMPLEMENTÀRIA:

Meet the professional: intro video 


Informació d'aquests projectes reals (en Anglès)

5.- Refactoring

video amb en Martin Fowler, creador del concepte de Refactoring:



RefactoringR-M 

Preguntes a cercar a la web (article mencionat té enllaç romput)
sol (profe only)

Refactoring amb Eclipse: exemples

Refactoring amb Eclipse (exerc)
Refactoring amb Eclipse (exerc) sol (profe only)

Main Refactoring Sample, from R.B.
Exemple llarg i complert. Comença amb unes classes que funcionen i que s'han de refactoritzar. Ho has de fer pas per pas, tant seguint el text com creant desprès el teu projecte en Eclipse i poc a poc, anar deixant polit tot el codi.
Eclipse project abans refactoritzar (teacher only) 
Eclipse project refactoritzat (teacher only)

Una els alumnes han fet/intentat fer el refactoring, el professor els pot donar accés al projecte Eclipse abans i desprès de refactoritzar.


Refactoring Catalog (exemples de tots els refactorings que es  poden fer)

REFACTORINGS A EXPLICAR A CLASSE:

esme:
pull up constructor Body


Replace Nested Conditional with Guard Clauses


oscar:
preserve whole object and
replace constructor with factory method

Sam
Replace error code with Exception
Replace Exception with test

Raul:
Inline class,
collapse hierarchy
encapsulate collection
Split temporary variable

Antonio:
Self Encapsulate Field
Introduce Null Object

Joan Coll:
Replace Parameter with Explicit Methods
remove assignments to parameters

Manel i Marc:
Remove Control Flag
Hide method

Remove Middle Man

Separate Query from Modifier

Ander:
duplicate observed data
pull up method 
 

6.- Control de versions
Introducció
Presentació Git

Justificació d'emprar un Sistema de Control de Versions:



Entrevista amb el creador de Git, Linus Torvalds

Llibre recomenat: 

https://git-scm.com/book/es/v1











Llibre descarregable:  https://git-scm.com/book/es/v1


Video de com fan feina dos desenvolupadors emprant branques: (18 min.)



Tutorial Git amb Eclipse (Vogelia) 
(Esperar a que el profe vos indiqui) kk

Git en més detall

Resum de les instruccions Git per línea de comandes:

usage: git [--version] [--exec-path[=<path>]] [--html-path]
           [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare] [--git-dir=<path>] [--work-tree=<path>]
           [-c name=value] [--help]
           <command> [<args>]

The most commonly used git commands are:

   add        Add file contents to the index

   bisect    Find by binary search the change that introduced a bug

   branch    List, create, or delete branches

   checkout    Checkout a branch or paths to the working tree

   clone          Clone a repository into a new directory

   commit         Record changes to the repository

   diff           Show changes between commits, commit and working tree, etc

   fetch          Download objects and refs from another repository

   grep           Print lines matching a pattern

   init           Create an empty git repository or reinitialize an existing one

   log            Show commit logs

   merge          Join two or more development histories together

   mv             Move or rename a file, a directory, or a symlink

   pull           Fetch from and merge with another repository or a local branch

   push           Update remote refs along with associated objects

   rebase         Forward-port local commits to the updated upstream head

Resum Git en 30min (va com una moto):



Curs online de Git

Git amb Netbeans

Repositoris Git per desenvolupadors:
gitHub
GitHub és un servei de hosting de repositoris Git, el qual ofereix tota la funcionalitat de Git de control de revisió distribuït i administració de codi de la font (SCM) així com afegint les seves característiques pròpies. A diferència de Git, el qual és estrictament una eina de línia d'ordres, GitHub proporciona una interfície gràfica basada en web i escriptori així com integració del mòbil. També proporciona control d'accés i diverses característiques de col·laboració com bug tracking, administració de tasques, i wikis per cada projecte.
GitHub ofereix ambdós plans; per a repositoris privats i comptes gratuïts, els quals són normalment utilitzats de host en projectes de programari lliure. Del 2015, GitHub informa que hi ha més de 9 milions d'usuaris i més de 21,1 milions de repositoris, fent-lo el host de codi de font més gran del món.

bitBucket 
Bitbucket es un servicio de alojamiento basado en web, para los proyectos que utilizan el sistema de control de revisiones Mercurial y Git. Bitbucket ofrece planes comerciales y gratuitos. Se ofrece cuentas gratuitas con un número ilimitado de repositorios privados (que puede tener hasta cinco usuarios en el caso de cuentas gratuitas) desde septiembre de 2010, los repositorios privados no se muestran en las páginas de perfil - si un usuario sólo tiene depósitos privados, el sitio web dará el mensaje "Este usuario no tiene repositorios". El servicio está escrito en Python.


La tecnologia de Microsoft, també compatible amb Git:
Team Foundation Server

Exercici amb el Git i GitHub:
1- Instal.la un dels següents:
Instal.la el Git  (per emprar per comandes)
o
un client de Git visual: GitHub Desktop

2.- Exercici Pelis al Github
3.- Exercici Empleats a millorar col.laborativament. El trobau al Github i feis lo següent:
  • canvia de tipus el camp del registre «borrado» de tipus cadena a lógico, que es lo correcte.
  • afegeix un camp «email» a tots els empleats (serà de tipus «cadena»)
  • fes el programa multi-idioma de cara a l’usuari final (Castellà/Català). Al iniciar el programa es tria a un menú en quin idioma es farà feina.

Comments