neljapäev, 28. september 2017

29.09.17 | 3x Agiilsed tarkvaraarenduse metoodikad

 Proxy pattern - buffer. 
The intent of the proxy-pattern is to provide a placeholder for another object to control access to it. One reason for controlling access to an object is to defer the full cost of its creation and initialization until we actually need to use it.
  • A remote proxy is responsible for encoding a request and its arguments and for sending (and retrieving) the request (and the response) to the real object.
  • A virtual proxy may cache additional information about the real subject so that it can postpone the access to it.
  • A protection proxy checks whether the caller has sufficient access permissions for perform a request.
 Data Access Object - DAO
The goal is to abstract and encapsulate all access to the data and provide an interface. 
Use a Data Access Object when:
  • you need to access a persistent storage more than one time, especially if you want to exchange the data source later.
  • you want to separate a data resource's client interface from its data access mechanisms
  • you want to adapt a specific data resource's access API to a generic client interface
  • in a larger project, different teams work on different parts of the application: the DAO pattern allows clean separation of concerns.
 Factory Method Pattern
Most Object-Oriented languages have great flexibility at the method call level through polymorphism. At the creation side however, you have to say new X() where X is a specific type.
Use a Factory Method when
  • a class can't anticipate the class of objects it must create.
  • a class wants its subclasses to specify the objects it creates.
  • classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclass is the delegate.
 Observer
The aim of the Observer-Pattern is to define a one-to-many dependency between objects so that when the object on the "one-side" changes state, all its dependents are notified and updated automatically.
Most common other names for this pattern are
  • Producer/Consumer
  • Publish/Subscribe
  • Dependents

Allikad:
https://et.wikipedia.org/wiki/R%C3%A4sifunktsioon //räsifunktisoon
http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/factory.html
https://www.javaworld.com/article/2076690/java-concurrency/build-your-own-objectpool-in-java-to-boost-app-speed.html //objectbool

28.09.17 | 2x programmeerimine

Neljapäeval võtsime ette uue programmi kuna nimedelühendamine sai enam-vähem tehtud. Järgmiseks pidime tegema Yahtzee mängu vabal valikul GUI või konsooli versioon. Yahtzee on mäng mis põhineb viie täringu veeretamisel ja kombinatsioonide saamisega. Kombinatsioonidega saad punkte ja see kumbal on rohkem punkte võidab.

kolmapäev, 27. september 2017

27.09.17 | 2x Tarkvara arendusprotsess

Muster on määratud kui idee mis on kasutatud praktilises tekstis. Class on reaalse maailma objektide üldistus ja tema omadused. Objekt on classi esindaja. Igal objektil on oma omadused.

Alusmustrid on üldised põhimõtted ja neid on üldiselt vaja teistes mustrites. Neil on kolm tüüpi:
  • Liides
  • Konteiner
  • Delegation
Architectural patterns express a fundamental structural organization or schema for software systems.
  •  Model View Controller
  • Dependency injection
 Structural Design Patterns are concerned with how classes and objects are composed together to form larger structures
  • Fassaad
  • Teenetemärkija
  • Proksi
  • Andmejuurdepääsu objekt
  • Teisalda objekt
 Creational Design Patterns abstraktne instantiation protsess. Need aitavad muuta süsteemi sõltumatuks sellest, kuidas selle objektid on loodud, koosnevad ja esindatud.
  • Tehase meetod
  • Abstract Factory
  • Objektiplokk
  • Singleton
 Käitumusliku disaini mustrid puudutavad algoritme ja ülesannete jaotust objektide vahel.
  • Iterator
  • Vaatleja
  • Sündmuse kuulaja
  • Strateegia
 UML composite structure scheme

 Container pattern - queues, sets, lists, vectors and caches

Delegation Pattern

Dependency injection

There are 3 forms of dependency injection: setter-, constructor- and interface-based injection.

Use the dependency injection pattern when:

    the coupling between components needs to be reduced
    you are expecting to run controlled unit tests. With dependency injection, testing can begin very early in the development cycle
    you want to save time in that you don't have to write boilerplate factory creation code over and over again

 usage of the facade pattern in UML

 http://best-practice-software-engineering.ifs.tuwien.ac.at/index.html

esmaspäev, 25. september 2017

25.09.2017 | 3x tarkvara arendusprotsess



Täna tõmbasime virtuaalmasinasse database, milles tegime päringuid. Mina tõmbasin alla MongoDB ja proovisin seda. Kuna MongoDB'ga ei saa ühendust access-97-ga, proovisin siis MySql'iga. Päev sai läbi.

neljapäev, 21. september 2017

21.09.17 | 2x programmeerimine, 2x Agiilsed tarkvaraarenud meeotid

Product manager - tootejuht
  • Kliendi hääl
  • Toote omanik, teab projekti nõudeid
  • Kõneleb nõuete keeles ja oskab kirja panna
  • Teab mida klient vajab ja on suuteline seda informatsiooni koheselt edastada
  • Alati kättesaadav
  • Haldab toote logi
  • Kogub nõudeid, lugusid klientidelt
  • Määratleb vajadusi lugudeks
  • Otsustab mida tarnitakse
  • Valideerib tarnitava toode 
Team - 
  • 7-12 inimest
  • Cross functional
  • Täiskohaga 
  • Ise teevad ja organiseerivad
  • Autonoomne
  • Motiveeritud
  • Omavad projekti
Sprint Planning - time-boxed to a maximum of eight hours for a one-month Sprint. For shorter Sprints, the event is usually shorter.
Sprint Planning answers the following:
  • What can be delivered in the Increment resulting from the upcoming Sprint?
  • How will the work needed to deliver the Increment be achieved?
 The Sprint Goal is an objective set for the Sprint that can be met through the implementation of Product Backlog. It provides guidance to the Development Team on why it is building the Increment.

Segment #1
Planeeritakse

Segment #2
Meeskond hindab töömahtu, keskendub tööle

A Story Point - üks päev ühe inimese tööd
 Igal storyl on vasuvõtukriteerium, etteantud ülesanded, goal, checklist Y/N, backlog




Rohkem infot:
https://vainol.kehtna.edu.ee/
https://www.cise.ufl.edu/~manuel/Agile-for-Dummies

kolmapäev, 20. september 2017

20.09.17 | 2x Tarkvara arendusprotsess

Projektijuhtimise alused
Pildiotsingu Projektitsükkel tulemus
 Tulemuste analüüs hindamise asemel 
Tehniline teostatavus - Technical feasibility
Juriidiline teostatavus - Legal feasibility
Teostatav teostatavus - Operational feasibility
Rahaline teostatavus - Financial feasibility
PEST analüüs
SOAR
SWOT
TOWS
Vision and mission - mission on valmis teha vision
Scope management
Projekti ulatus juhtimine on see, mida teete, et veenduda, et teie projekt hõlmab kogu projekti eesmärkide saavutamiseks vajalikku tööd (ja mitte midagi muud). See on selle üle, mis on projekti kaasatud ja mis mitte.
 MoSCoW method 
  • Must
  • Should
  • Could
  • Would
Scope control

Conducting an After Action Review

An AAR is a structured meeting that does the following:

  • Focuses on why things happened.
  • Compares intended results with what was actually accomplished.
  • Encourages participation.
  • Emphasizes trust and the value of feedback.
https://www.mindtools.com/pages/article/newPPM_60.html
Score: 61 

... Ja pidage meeles, et seda, mida te soovite öelda,
 ei mõisteta tõenäoliselt kunagi nii, nagu te seda mõtlesite 

Projektijuhtimise tarkvarad:

esmaspäev, 18. september 2017

19.09.17 | 2x Tarkvara arendusprotsess

Components of CASE Tools

CASE-tööriistad jagunevad laialdaselt järgmisteks osadeks, lähtudes nende kasutamisest konkreetsel SDLC-etapil:
  •  Keskhoidla - CASE tööriistad nõuavad keskset hoidlat, mis võib olla ühise, integreeritud ja järjepideva teabe allikas. Keskhoidla on keskset ladustamiskohta, kus säilitatakse tootekirjeldused, nõudedokumendid, seotud aruanded ja diagrammid, muud kasulikku teavet juhtimise kohta. Keskandmekoguhoid on ka andmesõnastik.
Case Tools
  • SDLC planeerimisel, analüüsimisel ja projekteerimisetappidel kasutatakse ülemist CASE-tööriistu.
  • Alumise korpuse tööriistad - madalamad CASE-tööriistad kasutatakse rakendamisel, katsetamisel ja hooldamisel.
  • Integreeritud juhtmekangid - integreeritud CASE tööriistad on kasulikud SDLC kõigis etappides, alates nõudmisest kogumisest kuni testimiseni ja dokumentatsioonini.
https://p2ware.com joongraafiku tegemiseks

wiki.kehtna.edu.ee/Kasutuslood Kasutuslood, näidis

http://casecomplete.com/learn Õpivideo

https://en.wikipedia.org/wiki/AccuRev_SCM

Apache JMeter  - JDBC database connections
Bugzilla - server software
HP Quality Center - kvaliteedi kontrollimise software
Visual studio community

neljapäev, 14. september 2017

15.09.2017 | 4x Tarkvara arendusprotsess


very general MVC diagram.
 Django - Püütonis kirjutatud raamistik mis kaldub MVC poole
 Ruby on Rails - veebiprogrammeerimise keel
AngularJS - avatud lähtekoodiga veebirakendusteraamistik, mida pealmiselt hoiab google.

Design patterns:
  • Structural
  • Creational
  • Behavioral
Algorithmic skeleton - algorithmic luustik Arvutamisel on algoritmilised skeletid (a.k.a. paralleelsemismustrid) paralleelse ja hajutatud arvutamise kõrgetasemelise paralleelse programmitöö mudeli.

 Loe rohkem siit:
http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/mvc.html
https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller




teisipäev, 12. september 2017

12.09.2017 | 2x Programmeerimine

Tegime edasi ja arendasime eelmisest tunnist jäänud nimelühendamis programmi. Hetkel sai valmis töötava programmi. Kasutasime Netbeansi. Tegime vahepeal ka uue programmi, et vana ära ei rikuks.

esmaspäev, 11. september 2017

11.09.2017 | 4x Tarkvara arendusprotsess

http://www.opfro.org/
http://www.umsl.edu/~sauterv/analysis/F08papers/View.html

CASE vahendite liigutus
A. Fuggetta liigitab CASE vahendid 3 gruppi:
 * Tööriistad (Tools) toetavad tarkvara elutsükliga seotud üksikuid tegevusi
 * Tööpingid (Workbenches) kombineerivad 2 või enamat tööriista, millised on mõeldud toetamaks tarkvara elutsükli kindlat osa
 *  Keskkonnad (Environments) kombineerivad 2 või enamat tööriista või tööpinki ja toetavad tarkvara arenduse elutsükli kõiki tegevusi


Tasuta versioon diagramiide tegemiseks
https://creately.com/ 

Kasutuslood süsteemi peamiste kasutajate tevegused on näidatud sellel

4.1 Kasutuslugude kirjeldused
Tekstilause, mis teatab, mis on tables 1
Kasutuslugu ->  Andmete vaatamine
Käsutajad -> Bsitroo kassapidaja
Eesmärgi kontekst -> Võimaldab käsutajal kasutajate andmeid näha
Eeltingimused -> KAS olemasolu ja vastav teenskonto on rakenduse käivitanud
Käivitav sündmus -> kiipkaardi kasutamine
Stenaarium ->
 1) Õpilane soovib kasutada toidukompentsatsiooni;
 2) Viipab kiipkaardiga;
 3) Kasutaja andmeid kontrollitakse andmebaasis (AB);
 4) Käsutaja registreerib kompensatsioonisumma ja kasutamata osa AB-s;
 5) Kasutaja nime kuvatakse käsutajale;
Erisused -> Kasutaja kaart on registreeritud;
Järeltingimused -> Kasutaja poolt kasutatud kompensatsiooni suurus


Tegime ka virtuaalmasinasse virtuaalmasinaid

neljapäev, 7. september 2017

07.09.2017 | Agiilsed tarkvaraarendus metoodikad

MoSCoW - Must have, should have, could have and won't have.
DSDM põhitegevused: Timeboxing, prototüüpimine, töötoad, modelleerimine ja seadistuste haldus
Configuration management puudutab nõudeid sellele tarkvarale.
https://codeborne.com/et/

FDD - Feature driven development
Tehakse järgnevusskeem
Most affordable, flexible and powerful requirements management tool
LSD - Learn software development
  1. Eliminate waste
  2. Amplify learning
  3. Decide as late as possible
  4. Deliver as fast as possible
  5. Empower the team
  6. Build integrity in
  7. See the whole 
Kanban board is one of the tools that can be used to implement the Kaban method for a project.
Kanban is a method for visualizing the flow of work, in order to balance demand with available capacity and spot bottlenecks.
 https://trello.com/

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: Requirements are turned into very specific test cases, then the software is improved to pass the new tests, only.
 

kolmapäev, 6. september 2017

06.09.2017 | 2x Tarkvara arendusprotsess ja 2x Progammeerimine

Characteristics of Incremental Model
1. Süsteem jagatakse väiksemateks osadeks
2.Osasüsteemid luuakse, et luua lõpusüsteem
3.Kõigepealt realiseeritakse kõige kõrgemad nõuded
4. Osa nõue on külmutatud, kui kasvav osa on välja töötatud.

Refaktoorinmine - varasemad moodulid saad ümber kirjutada kasutades uusi

 
Throwaway prototype - äravisatud prototüüp
Breadboard - elektroonika prototüüpide ehitusbaas
 

Manifesto for Agile Software Development

Üksikisikud ja suhtlemine protsesside ja tööriistadega
Töötarkvara üleüldise dokumentatsiooni puhul
Kliendi koostöö lepinguliste läbirääkimiste üle
Reageerimine muutustele kava järgimisel

Pildiotsingu Project XYZ Iteration burndown tulemus
Agile software development values
1. Team
2. Application
3. Collaboration
4. Change

Agile software development principles
1. Kliendi rahulolu
2. Teretulnud nõuete muutmine hilises etapis
3. Töötava tarkvara tarnimine sageli
4. Tihe igapäevane koostöö äriinimeste ja arendajate vahel
5. Projektid on üles ehitatud motiveeritud üksikisikutele, keda tuleks usaldada
6. Face-to-face vestlus on parim suhtlemisviis (ühispaiknemine)
7. Tööprogramm on edu peamine mõõde
8. Säästev areng, mis suudab pideva tempo säilitada
9. Pidev tähelepanu tehnilisele kvaliteedile ja heale disainile
10 .Lihtsus - töömahu maksimeerimise kunst ei ole veel tehtud - on oluline
11. Parimad arhitektuurid, nõuded ja disainilahendused ilmnevad enesekorraldusmeeskondadest
12. Regulaarselt peegeldab meeskond efektiivsuse muutmise ja kohandab vastavalt


ASD - Adaptive software development
Sõna spekulatsioon viitab planeerimise paradoksile - on tõenäolisem eeldada, et kõik sidusrühmad on projekti missiooni teatud aspektide osas võrdlemisi valed

Agile modeling - Tarkvarasüsteemide dokumenteerimiseks ja modeleerimiseks



Dokumentatsioon:
1. Dokumenteeri pidevalt
2. Dokumenteeri hiljem
3. Executable specifications
4. Kindlas kohas dokumentatsioon

AUP - Agile Unified Process
Discipline:
1. Model
2. Implementation
3. Test
4. Deployment
5. Configuration Management
6. Project Management
7. Environment

DAD - Discipline agile delivery
Protsessiraamistik mis võimaldab lihtsustatult teha protsessi kohta otsuseid
 Lifecycle:

 

esmaspäev, 4. september 2017

05.09.2017 | Agiilsed tarkvaraarendus metoodikad

SDM, SDM2  (System Development Methodology) on tarkvara arenduse meetod arendatud välja PANDATA poolt Hollandis.










Feasibility - teostatavusuuring
SOAR - Tugevused, võimalused, innustused ja tulemus
TOWS - Internal factors - Strengths and Weaknesses
               External factors - Oppurtunities, Threats

The Build-Measure-Learn-Feedback loop

SSADM - Structured systems analysis and design method
 6 stages
 Stage 0 - Feasibility study
 Stage 1 - Investigation of the current enviroment
 Stage 2 - Business system option
 Stage 3 - Requirements specification
 Stage 4 - Technical system options
 Stage 5 - Logical design
 Stage 6 - Physical design

SSM - Soft systems methodology
 7 stages
 Stage 1 - Enter situation considered problematical
 Stage 2 - Express the problem situation
 Stage 3 - Formulate root definitions of relevant systems of purposeful activity
 Stage 4 - Build conceptual models of the systems named in the root definitions
 Stage 5 - Comparing models with real world situations
 Stage 6 - Define possible changes which are both possible and feasible
 Stage 7 - Take action to improve the problem situation

OOP - Object-oriented programming
RAD - Rapid-application development
  
DSDM - Dynamic system development method
1. Focus on the business need
2. Deliver on time
3. Collaborate
4. Never compromise quality
5. Build incrementally from firm foundations
6. Develop iteratively
7. Communicate continiously and clearly
8. Demonstrate control

TSP - Team software process
 KLOC - 1,000 rida koodi
 MLOC - 1,000,000 rida koodi


NÕUDED, DISAIN, RAKENDAMINE, TESTIMINE, KOODIMINE

04.09.2017 | Agiilsed tarkvaraarenduse metoodikad

Esimesel tunnil rääkisime praktikast. Hiljem projekti juhtimisest ja majandamisest.
Teisel tunnil kvaliteedinõuetest. Kaskaadmudel on tarkvaraarenduse metoodika.
Nõuded -> Disain -> Realiseerimine -> Testimine -> Hooldus
 
Koskmudel on sobivam kasutamiseks väiksemates projektides, kuna arendamise käigus on raske tagasi pöörduda eelmiste etappide juurde.