# Projektityön rajaukset ja toimeksiannot

Tämän sivun sisältö on tehty ohjelmistokehitykseen liittyvää moduulin suoritusta varten. Sisältöä saa käyttää vapaasti myös muissa tarkoituksissa. Tarvittaessa toteutuskertaan liittyviä rajauksia tai tarkennuksia on kirjoitettu opiskelijaryhmän omalle kurssialustalle.

## Tavoitteet <a href="#vaatimukset-toimeksiannon-ohjelmalle" id="vaatimukset-toimeksiannon-ohjelmalle"></a>

Projektin tavoitteena on toimia kehikkona ja syventää aiemmin opittuja taitoja. Projektityössä tullaan tarvitsemaan mm. versionhallinnan käyttöä sekä toimimista ketterän ohjelmistokehityksen mallien mukaisesti. Sisältöihin liittyy myös muita opetettuja asioita, jotka ovat esillä opiskelijaryhmien omalla kurssialustalla.

Projektityön lopputuloksen kannalta ei ole tärkeää lopputulos. Tärkeintä on pyrkiä toimimaan siten kuten on ohjeistettu ja oppia lisää sisällöistä. Tällä sivulla ei ole otettu esille arviointiperusteita. Arviointiperusteet on tarkennettu tarvittaessa opiskelijaryhmän kurssialustalla.

## Toimeksiannot <a href="#vaatimukset-toimeksiannon-ohjelmalle" id="vaatimukset-toimeksiannon-ohjelmalle"></a>

Projektityöhön valittavissa olevat toimeksiannot löytyvät alla olevilta sivuilta:

{% content-ref url="/pages/-Lz0UQlNUfvivDoIe8PG" %}
[Palkanlaskenta](/toimeksiannot-2020-01/palkanlaskenta.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lz0UsTzBOgiGR8Yk6-5" %}
[Kilometrikorvaus](/toimeksiannot-2020-01/kilometrikorvaus.md)
{% endcontent-ref %}

{% content-ref url="/pages/-Lz0dZcRN1a0oZIXPUnm" %}
[Laskutus](/toimeksiannot-2020-01/laskutus.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MRUbPxnuNVW5FDbvxt2" %}
[Laskun perintä](/toimeksiannot-2020-01/laskun-perintae.md)
{% endcontent-ref %}

## Kehitystiimin työskentely <a href="#vaatimukset-toimeksiannon-ohjelmalle" id="vaatimukset-toimeksiannon-ohjelmalle"></a>

Projektityön aikana on tarkoitus kokeilla uusia toimintamalleja ohjelmistojen teossa. Näihin lukeutuvat eri ketterän ohjelmistokehityksen viitekehykset ja mallit. Esimerkiksi Scrum tai XP.&#x20;

Ohjelmaa toteuttaessa tulisi kokeilla toimia näiden mallien mukaisesti. Ensin on sovittava kehitystiimin kesken, että mitä mallia kokeilette soveltaa. Toimeksiannolla on aikarajaus eikä näin ollen ole mahdollista kaikkea tehdä tai noudattaa kirjaimellisesti. Tehdessä ei haittaa vaikka mallia ei kirjaimellisesti noudata. Siihen pyrkiminen on hyvä asia tai nostaa esille vain muutamia kohtia. Vinkkejä saa myös seuraavalta [Agile esimerkkiä käsittelevältä sivulta](/ketterae-ohjelmistokehitys/agile-esimerkki-sykli.md).

Kehitystiimin tulee myös käyttää ohjelman teossa versionhallintaa.

## Tekniset rajaukset toimeksiannon ohjelmalle

* Ohjelmointikielenä C#.
* Ohjelman toteutusmuoto on konsoli- tai WPF sovellus.
* Ohjelmoinnissa tulisi hyödyntää olio-ohjelmointiin liittyviä tapoja ja käsitteitä.
* Ohjelman tulee käynnistyä Visual Studio Community -kehitysympäristössä.

**Esimerkki konsolisovelluksen käyttöliittymästä**

![Esimerkki: Käyttäjän valinta](/files/-LnakB39ae-U1wSWx-hM)

![Esimerkki: Toimintojen valinta](/files/-LnakFfrH6gZtF0c1bRT)

![Esimerkki: Tuotelista](/files/-LnakIlx2YMv9Sl-ZKUB)

## Huomioita projektin etenemiseen

Toimeksiantojen lopputulos on avoin. Tämä on tietoinen päätös toimeksiantojen laatijalta. Tarkoitus ei ole rajata lopputulosta tarkkaan vaan mahdollistaa ryhmän itsenäiset päätökset.

Toimeksiantojen toiveet/ominaisuudet ovat tarkoituksella laajoja. Tarkoitus on, että kaikkea ei tule tehdä projektityöhön annetulla ajalla vaan ryhmä joutuu priorisoimaan tehtäviä asiakkaan näkökulmasta mietittynä. Muistakaa ottaa siis huomioon käytössänne oleva aika.

Projektin aikana ryhmä törmää varmasti tuntemattomiin asioihin mitä ei ole ennen käsitelty. Tällöin ohjaaja toivoo, että ryhmä löytäisi ratkaisutapoja itse miten se heidän nykisen taitotason perusteella onnistuisi. Projektin lopputuloksen kannalta tärkeämpää on nähdä ryhmän oppivan ohjelmoimaan pieni ohjelma annettujen määrityksien mukaan ja ratkaisemaan eteentulevia ongelmia.

Projektiryhmän kannattaa mieluummin tekemään asioita oikein ja hyvin. Vähemmän voi olla siis enemmän tässä tilanteessa.

## Palvelut ja ohjelmistot <a href="#tarvittavat-ohjelmistot" id="tarvittavat-ohjelmistot"></a>

{% embed url="<https://github.com/>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.sovelluskontti.com/toimeksiannot-2020-01/toimeksiannon-rajaukset.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
