Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Introduksjon til TDT4140 Programvareutvikling/ Software Engineering

Liknende presentasjoner


Presentasjon om: "Introduksjon til TDT4140 Programvareutvikling/ Software Engineering"— Utskrift av presentasjonen:

1 Introduksjon til TDT4140 Programvareutvikling/ Software Engineering
Carl-Fredrik Sørensen Letizia Jaccheri Ian Sommerville

2 Temaer som dekkes Kapittel 1 i pensumboka
Profesjonell programvareutvikling Etikk i programvareutvikling En av tre case studier (pasientinformasjonssystem) Fokus på eksempler

3 Programvaresystemer Abstrakte og uhåndgripelige
Ikke begrenset av materialegenskaper Ikke styrt av fysiske lover Ikke styrt av produksjonsprosesser Ingen naturlige grenser for potensialet for programvare Mangel på fysiske begrensninger kan fort gjøre programvare Ekstremt komplekst Vanskelig å forstå Dyrt å endre Programvare omfatter ikke bare programmene, men også all assosiert dokumentasjon og konfigurasjonsdata som er nødvendig for å operere programmene korrekt

4 Software engineering Økonomien i alle utviklede land er avhengig av programvare. Software engineering = Programvareutvikling = teorier, metoder (teknikker som Smidig) og verktøy (som Eclipse) for profesjonell programvareutvikling.. Software representerer en betydelig andel av BNP i alle utviklede land IKT er Norges tredje største næring målt i omsetning Flere og flere systemer er kontrollert av programvare

5 Eksempel Norge i 2009 Omsetning i milliarder kroner Antall ansatte
Omsetning i milliarder kroner Antall ansatte Antall foretak IKT 164  52 428 5952 Overnattings og serveringsvirksomhet 50 Industri 663 Utgivelse av programvare 6303 602

6 Software Engineering Ingeniørdisiplin som omfatter alle aspekter av programvareproduksjon fra tidlige faser av systemspesifikasjon til vedlikehold av systemet. Ingeniørdisiplin Benytte passende teorier og metoder for å løse problemer der man tar hensyn til organisatoriske og økonomiske begrensninger. Alle aspekter av programvareproduksjon Ikke bare den tekniske utviklingsprosessen Også prosjektstyring og utvikling av verktøy, metoder, etc. som skal støtte programvareproduksjon

7 Fundamentale prinsipper for programvareutvikling
Noen fundamentale prinsipper som gjelder alle typer programvaresystemer, uavhengig av utviklingsteknikk: Systemer bør utvikles vha. en styrt og forstått utviklingsprosess. Forskjellige prosesser for forskjellige type systemer. Pålitelighet og ytelse er viktig for alle type systemer. Forstå og håndtere programvarespesifikasjon og krav er viktig (hva programvaren skal gjøre) Hvor det passer, gjenbruk programvare I stedet for å skrive ny. Programvarekostnader er som oftest større en maskinvarekostnader Programvare koster mer å vedlikeholde enn utvikle.

8 Kostnad-Kvalitet-Funksjon
Individer og samfunnet er avhengig av avansert programvaresystemer Må være i stand til å produsere pålitelige og troverdige systemer økonomisk og raskt. Normalt billigere på sikt å benytte «software engineering» metoder og teknikker for programvaresystemer enn som et personlig programmeringsprosjekt. Majoriteten av kostnader kommer etter et system har blitt tatt i bruk. «Software engineering» handler om kostnadseffektiv programvareutvikling

9 Kostnad-Kvalitet-Funksjon
Utvikling Testing Evolusjon kostnader software Ytelse Pålitelighet Vedlikeholdbarhet Sikkerhet Personvern Pasientstyring Alarmkontroll kalender Funksjon Kvalitet

10 Programvareprodukter
Generiske produkter/hyllevare systemer til kundene som ønsker å anskaffe dem Programvare som grafikkprogrammer (Adobe Photoshop/GIMP), prosjektstyringsverktøy (Microsoft Project); CAD/CAM software; Office, Operating Systems (Linux, Windows, Mac OS) ERP, biblioteksystemer, IAM Skreddersydde produkter/ Programvare som er bestilt av en spesifikk kunde for å møte egne behov. Eksempler – innebygde styringssystemer, programvare for lufttrafikkontroll, trafikkovervåkning, etc. Product specification Generic products The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer. Customized products The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required.

11 Eksempel Linux Nettside: http://www.kernel.org/ Skaper: Linus Torvalds
Utgitt 17. september 1991 (utviklingsversjon), 13. mars (stabil versjon) Nyeste versjon 30.desember 2013 Plattform: Mange arkitekturer Kommandobasert operativmiljø OS-familie: Unix-liknende Lisens: GNU General Public License versjon 2 Lines of code: mer enn 10 Millioner #include <linux/module.h> #include <asm/console.h> #include <asm/uaccess.h> #include <asm/checksum.h> #include <asm/fpu.h>

12 Eksempel http://ant.apache.org/
Apache Ant is available for download as source or binary from  Apache Ant er et verktøy for å automatisere programvare utviklingprosesser.

13 Aktiviteter i programvareprosessen
Programvarespesifikasjon, hvor kunder og ingeniører definerer programvaren som skal bli produsert og vilkår for operasjon.. Programvareutvikling, hvor programvaren blir designet og programmert. Programvarevalidering, hvor programvaren blir sjekket for å sikre at den er hva kunder krever. Programvareevolusjon, hvor programvaren blir modifisert for å reflektere endringer i krav fra kunde og marked. This is very important!!! General issues that affect most software Heterogeneity Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. Business and social change Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Security and trust As software is intertwined with all aspects of our lives, it is essential that we can trust that software.

14 Applikasjonstyper Stand-alone applications
Interactive transaction-based applications Embedded control systems Batch processing systems Entertainment systems Systems for modeling and simulation Data collection systems Systems of systems Stand-alone applications These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network. Interactive transaction-based applications Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications. Embedded control systems innebygd These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system. Batch processing systems - satsvis prosessering These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. Entertainment systems These are systems that are primarily for personal use and which are intended to entertain the user. Systems for modeling and simulation These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. Data collection systems These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing. Systems of systems These are systems that are composed of a number of other software systems.

15 Etikk i programvareutvikling
Etikk (fra gresk ethos, moralsk) er den delen av filosofien som søker å besvare spørsmål som «hva er godt», «hva er det rette», «hvordan bør man oppføre seg». Bredere ansvar enn bare anvendelse av tekniske ferdigheter. Ingeniører må opptre ærlig og etisk forsvarlig måte hvis de skal bli respektert som fagfolk. Etisk atferd er mer enn å opprettholde loven, men innebærer å følge et sett av prinsipper som er moralsk riktig. ACM Association for Computer Machinery IEEE Institute of Electrical and Electronics Engineers. Eye-triple-E,"

16 Case studies A mental health case patient management system
A personal insulin pump An embedded system in an insulin pump used by diabetics to maintain blood glucose control. A mental health case patient management system A system used to maintain records of people receiving care for mental health problems. A wilderness weather station A data collection system that collects data about weather conditions in remote areas.

17 Et pasientinformasjonssystem
Et system som brukes til å holde oversikt over personer som mottar omsorg for psykiske helseproblemer. Et pasientinformasjonssystem for å støtte psykisk helsevern er et medisinsk informasjonssystem som vedlikeholder informasjon om pasienter som lider av psykiske problemer og behandlinger som de har mottatt. De fleste psykiske pasienter krever ikke dedikert sykehusbehandling, men trenger å besøke spesialist regelmessig der de kan møte en lege som har detaljert kunnskap om deres problemer.

18 Mål: Gjøre det lettere for pasienter å benytte tjenestene. Klinikkene ikke bare på sentraliserte sykehus. De kan også være i lokale legekontorer eller andre egnede steder i distriktene. Generere styringsinformasjon som muliggjør at helsetjenesten ledere kan vurdere ytelse mot lokale og offentlige mål. Gi medisinsk personale riktig informasjon for å støtte behandling av pasienter.

19 Funksjoner Individuell omsorg: helsepersonell kan lage journalposter, redigere informasjonen i systemet, se pasientens medisinske historie, etc. Systemet støtter informasjons-sammendrag slik at leger raskt kan få informasjon om viktige problemer og foreskrevne behandlinger. Pasientovervåkning: Systemet overvåker journalen til pasienter som får behandling og gir en advarsel hvis mulige problemer blir oppdaget. Administrativ rapportering. Systemet genererer månedlige rapporter som viser antall behandlede pasienter ved hver klinikk, antall pasienter som har kommet og forlatt omsorgssystemet, antall pasienter «innesperret», medisiner foreskrevet og kostnader, etc.

20 Krav a) Personvern b) Sikkerhet (Safety)
Det er viktig at pasientinformasjon er konfidensiell og kun autorisert helsepersonell og pasienten selv har tilgang. b) Sikkerhet (Safety) Noen psykiske lidelser fører pasienter til å bli suicidal eller en fare for andre mennesker. Der det er mulig, skal systemet varsle medisinsk personell om potensielt suicidale eller farlige pasienter. Systemet må være tilgjengelig når det trengs, ellers kan det være umulig å foreskrive riktig medisin til pasienter.

21 Organisering av MHC-PMS

22 Essensielle egenskaper i god programvare
Produktkarakteristikk Beskrivelse Vedlikeholdbarhet (Maintainability) Programvare skal bli skrevet på en slik måte at den kan utvikle seg til å møte endrede behov fra kunder. Dette er en kritisk egenskap fordi endringer i programvare er et uunngåelig krav i miljø med endringer i forretningskrav og behov. Pålitelighet og sikkerhet (Dependability and security) Programvarepålitelighet inkluderer en rekke karakteristikker som funksjonsstabilitet, sikkerhet (både IT-sikkerhet og fysisk sikkerhet). Pålitelig programvare bør ikke medføre fysiske eller økonomiske skader dersom det oppstår en systemfeil. Ondsinnede brukere skal ikke være i stand til å få tilgang til eller gjøre skader i systemet. Effektivitet (Efficiency) Programvare bør ikke sløse med systemressurser som minne, prosessorsykluser eller båndbredde. Effektivitet inkluderer responsitivitet, prosesseringstid, minneforbruk og utnyttelse etc. Akseptabilitet (Acceptability) Programvare må være akseptabel for den type brukere som den er designet for. Dette betyr at den må være lett å forstå, brukbar og kompatibel med andre systemer som brukere benytter. Akseptabilitet inkluderer brukbarhet og universell design.

23 Konklusjon Lysark er tilgjengelig i Les kapittel 1
Wiki LectureTools -- Its Learning Canvas -- Les kapittel 1 Modeller eksemplene vha. f.eks. Violet Eclipse eller andre modellingsverktøy (Visio)

24 Programvareutvikling og Web
I 2014 kan vi ikke forestille oss en verden uten Web Web services (Chapter 19) gjør at applikasjonsfunksjonalitet kan bli aksessert over Web. Skytjenester er en tilnærming for tilgjengeliggjøring av IKT-tjenester hvor applikasjoner kjører distribuert i skyen. Bruker kjøper ikke programvare, men betaler for bruk. IaaS, PaaS, SaaS

25 Programvareutvikling og Web
Gjenbruk av programvare er den dominante tilnærming for å bygge web-baserte systemer. Når slike systemer bygges, tenkes de på hvordan de kan settes sammen basert på allerede eksisterende programvare-komponenter og systemer. Web-baserte systemer bør utvikles og leveres inkrementelt. I dag er generelt akseptert at det er upraktisk å spesifisere alle krav for slike systemer på forkant. Brukergrensesnitt er begrenset av kapabiliteten til nettlesere. Teknologier som f.eks. AJAX og Flash gjør at man kan lage rikere grensesnitt I en Web Browser, men er fortsatt vanskelig å bruker. Mer normalt med bruk av Web forms med lokal skripting (f.ek.s JavaScript) HTML 5 er lovende, men fortsatt ikke en ferdig standard.

26 Etikk i programvareutvikling
Etikk (fra gresk ethos, moralsk) er den delen av filosofien som søker å besvare spørsmål som «hva er godt», «hva er det rette», «hvordan bør man oppføre seg». Bredere ansvar enn bare anvendelse av tekniske ferdigheter. Ingeniører må opptre ærlig og etisk forsvarlig måte hvis de skal bli respektert som fagfolk. Etisk atferd er mer enn å opprettholde loven, men innebærer å følge et sett av prinsipper som er moralsk riktig. ACM Association for Computer Machinery IEEE Institute of Electrical and Electronics Engineers. Eye-triple-E,"

27 Problemstillinger og ansvar i faglig utøvelse
Konfidensialitet Ingeniører skal normalt respektere konfidensialiteten til deres arbeidsgiver og klienter uavhengig av om det er eller ikke er signert en formell taushetserklæring. Kompetanse Ingeniører skal ikke fremstille deres kompetansenivå uriktig. De skal ikke bevisst eller med overlegg, akseptere arbeid som er utenfor eget kompetanseområde.

28 Problemstillinger og ansvar i faglig utøvelse
Intellectual property rights/opphavsrett Ingeniører bør kjenne til lokalt lovverk som styrer bruk av opphavsrettslig eiendom som f.eks. patenter og Copyright. De skal være påpasselige i å sikre at opphavsretten til arbeidsgivere og klienter er beskyttet. Tilsvarende med bruk av opphavsrettslig/lisensiert programvare. API-er, åpen kildekode, programvare fra andre arbeidsgivere/programvareutviklere.

29 Problemstillinger og ansvar i faglig utøvelse
Misbruk av datautstyr og programvare Programvareutviklere skal ikke benytte deres tekniske ferdigheter til å misbruke andre menneskers eller bedrifters datautstyr. Misbruk kan variere fra det relativt trivielle (spilling på en arbeidsgivers maskin) til det ekstremt alvorlige (spredning av virus/informasjon).

30 ACM/IEEE Code of Ethics
The professional societies in the US have cooperated to produce a code of ethical practice. Members of these organisations sign up to the code of practice when they join. The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession.

31 Rationale for the code of ethics
Computers have a central and growing role in commerce, industry, government, medicine, education, entertainment and society at large. Software engineers are those who contribute by direct participation or by teaching, to the analysis, specification, design, development, certification, maintenance and testing of software systems. Because of their roles in developing software systems, software engineers have significant opportunities to do good or cause harm, to enable others to do good or cause harm, or to influence others to do good or cause harm. To ensure, as much as possible, that their efforts will be used for good, software engineers must commit themselves to making software engineering a beneficial and respected profession.

32 The ACM/IEEE Code of Ethics
Software Engineering Code of Ethics and Professional Practice ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices PREAMBLE The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:

33 Etiske prinsipper 1. PUBLIC - Software engineers shall act consistently with the public interest. 2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment. 5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues. 8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

34 Etiske dilemmaer Prinsipiell uoverensstemmelse/uenighet med politikk fra ledelsen. Arbeidsgiver opptrer på en uetisk måte og sender ut på markedet et sikkerhetskritisk system uten å være ferdig med testing av systemet. Deltakelse i utvikling av militære våpensystem eller systemer benyttet i forbindelse med kjernekraft.

35 Mer om Software Engineering
Flere detaljer

36 Kontrollsystem for insulinpumpe
Se Samler data fra en blodsukkersensor og beregner hvor mye insulin som kreves å bli injisert. Beregning basert på frekvensen av endring av blodsukkernivået. Sender signaler til en mikro-pumpe for å levere den riktige dosen av insulin. Sikkerhetskritisk system fordi lav blodsukker kan føre til hjertesvikt, koma og død. Høy blodsukkernivået har langsiktige konsekvenser som øye og nyreskader. Collects data from a blood sugar sensor and calculates the amount of insulin required to be injected. Calculation based on the rate of change of blood sugar levels. Sends signals to a micro-pump to deliver the correct dose of insulin. Safety-critical system as low blood sugars can lead to brain malfunctioning, coma and death; high-blood sugar levels have long-term consequences such as eye and kidney damage.

37 Insulin pump hardware architecture

38 Activity model of the insulin pump

39 Essensielle høynivås krav
Systemet skal være tilgjengelig til å levere insulin når det er behov System skal opptre pålitelig og levere den korrekte dosen med insulin for å motvirke det nåværende sukkernivået i blodet. Systemet må derfor bli designet og implementert for å forsikre at systemet alltid møter disse kravene.

40 Wilderness weather station
Myndighetene i et land med store villmarksområder, bestemmer seg for å sette ut flere hundre værstasjoner i fjerntliggende områder. Vårstasjoner samler data fra et sett av instrumenter som måler luft/bakketemperatur og lufttrykk, solskinn, nedbør, fart og retning på vind. Hvert instrument er kontrollert av et programvaresystem som leser data periodisk og håndterer informasjon samlet fra instrumentene.

41 The weather station’s environment

42 Weather information system
The weather station system Denne er ansvarlig for å samle værdata, utføre noe initiell dataprosessering og overføre data til “Data Management and archiving system” The data management and archiving system Dette systemet samler data fra all værstasjoner i villmarka, utfører data prosessering og analyse, og arkiverer dataene. The station maintenance system Dette systemet kan kommunisere ved hjelp av satellitter, med alle værstasjoner for å overvåke helsen til disse systemene og sørge for problemrapporter.

43 Tilleggsfunksjonalitet i programvaren
Overvåke instrumentene, maskinvare for strøm og kommunikasjon og rapportere feil til styringssystemet (management system). Styre systemkraft, forsikre at batterier er ladet når miljøbetingelsene tillater det, men også at generatorer blir slått av dersom det er potensielt skadelige værforhold, f.eks. mye vind. Supporter dynamisk rekonfigurering hvor deler av systemet er erstattet med nye versjon og hvor erstatningsinstrumenter er satt inn I systemet hvis det oppstår en system feil.

44 Oppsummering Programvareutviklere/software engineers har ansvar som ingeniører i forhold til sitt fagfelt og sine fagfeller. De skal ikke bare være opptatt med tekniske problemstillinger. Profesjonsforeninger som IEEE og ACM, publiserer regler for påkrevd opptreden. Disse beskriver en standard for oppførsel som er forventet av deres medlemmer. Tre case studier er benyttet i pensumboka: An embedded insulin pump control system A system for mental health care patient management A wilderness weather station

45 Oppsummering Software engineering/programvareutvikling er en ingeniørdisiplin som omfatter alle aspekter med programvareproduksjon Essensielle produktegenskaper med programvare er vedlikeholdbarhet, pålitelighet og sikkerhet, effektivitet og akseptabilitet. Høynivå aktivitetene av spesifikasjon, utvikling, validering og evolusjon er deler av alle utviklingsprosesser for programvare.

46 Oppsummering De fundamentale verdier og notasjoner i programvareutvikling er universelt gjeldende for alle typer av systemutvikling. Det er mange forskjellige systemtyper og hver enkelt krever passende programvareutviklingsverktøy og teknikker i deres utvikling. De fundamenale ideene om programvareutvikling er gjeldende for alle typer av programvaresystemer.

47 Frequently asked questions about software engineering
Answer What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. What are the fundamental software engineering activities? Software specification, software development, software validation and software evolution. What is the difference between software engineering and computer science? Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. What is the difference between software engineering and system engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process.

48 Frequently asked questions about software engineering
Answer What are the key challenges facing software engineering? Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software. What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. What are the best software engineering techniques and methods? While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another. What differences has the web made to software engineering? The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse.

49 Essensielle egenskaper i god programvare
Produktkarakteristikk Beskrivelse Vedlikeholdbarhet (Maintainability) Programvare skal bli skrevet på en slik måte at den kan utvikle seg til å møte endrede behov fra kunder. Dette er en kritisk egenskap fordi endringer i programvare er et uunngåelig krav i miljø med endringer i forretningskrav og behov. Pålitelighet og sikkerhet (Dependability and security) Programvarepålitelighet inkluderer en rekke karakteristikker som funksjonsstabilitet, sikkerhet (både IT-sikkerhet og fysisk sikkerhet). Pålitelig programvare bør ikke medføre fysiske eller økonomiske skader dersom det oppstår en systemfeil. Ondsinnede brukere skal ikke være i stand til å få tilgang til eller gjøre skader i systemet. Effektivitet (Efficiency) Programvare bør ikke sløse med systemressurser som minne, prosessorsykluser eller båndbredde. Effektivitet inkluderer responsitivitet, prosesseringstid, minneforbruk og utnyttelse etc. Akseptabilitet (Acceptability) Programvare må være akseptabel for den type brukere som den er designet for. Dette betyr at den må være lett å forstå, brukbar og kompatibel med andre systemer som brukere benytter. Akseptabilitet inkluderer brukbarhet og universell design.


Laste ned ppt "Introduksjon til TDT4140 Programvareutvikling/ Software Engineering"

Liknende presentasjoner


Annonser fra Google