10/7/2015 7 OKTOBER 2015 Software Engineering/Kristian Sandahl, Niklas Lanzén 3 Många bitar skall fogas till en helhet • Blandningen av: – Programmering Software Engineering – Datalogi Förväntningar – Matematik Kristian Sandahl, IDA Niklas Lanzén, Ericsson – Människor – Ledarskap • Är det sköna med Software Engineering Software Engineering/Kristian Sandahl, Niklas Lanzén Program språk OCTOBER 7, 2015 Definition av Software Engineering 2 Software Engineering/Kristian Sandahl, Niklas Lanzén Metriker Versions hantering SamIntegra- arbete Affärsplan tion Underhåll Design projekt Krav Lönsamhet Metoder licenser processer Kompetens Inspektioner Kod modeller Verktyg Hårdvara Team- Inredning Leverans building Testfall OCTOBER 7, 2015 4 Programvara kan användas till mycket • Software engineering is… Therac-25 • …”the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software”. Pong (ISO/IEC/IEEE 24765:2010 Systems and software engineering—Vocabulary) 1 10/7/2015 Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 5 Kravhantering specificerar förväntningar och ramar Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 7 OCTOBER 7, 2015 8 Krav som användningsfall • Utmaningar: • Finna verkliga behov • Finna alla intressenter • Välja och schemalägga • Tolka och testa Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 Krav på väl organiserad textform • 3.2 Functional requirements • 3.2.1 Show colors – When the user enters type of T-shirt, the system shall show a palette of available colours. • 3.2.2 Add to shopping basket • 3.3 Performance requirements • 3.3.1 Response time • 3.4 Design constraints – The user shall be able to add an item to the shopping basket. – The minimum response time is 2.0 seconds. – The system shall be implemented in php. 6 Software Engineering/Kristian Sandahl, Niklas Lanzén Arkitektur beskriver komponenter och gränssnitt • Utmaningar: • Känna till vad som finns • Balansera kvalitetskrav • Definiera stabila gränssnitt • Förbereda för ändringar 2 10/7/2015 Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 9 Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 11 Statisk beskrivning med UML klassdiagram Koppling och kohesion • Mycket vanligt diagram • Kan innehålla detaljer om exakta attribut och funktioner • Kan generera kodskelett • Kan genereras från kod Title/Lecturer OCTOBER 7, 2015 10 Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 Detaljerad design Dynamisk modell med UML sekvensdiagram • Utmaningar: • Realisera funktion • Härstammar från telekommunikation • Förbered för ändringar • Viktig för realtidssystem • Begripligt system • Kan bli hur komplicerad som helst. • Bidrag till kvalitet • Behöver ofta en förklarande text 12 3 10/7/2015 OCTOBER 7, 2015 Software Engineering/Kristian Sandahl, Niklas Lanzén 13 Implementation • Programmering • Kodstandard • Enhetstest • Läsbarhet! Software Engineering/Kristian Sandahl, Niklas Lanzén OCTOBER 7, 2015 15 OCTOBER 7, 2015 16 Vattenfallsmodellen class Ball(pygame.sprite.Sprite): # Constructor. Pass in the color of the block, and its x and y position def __init__(self): # Call the parent class (Sprite) constructor super().__init__() Krav Arkitektur # Create the image of the ball self.image = pygame.Surface([self.width, self.height]) Design # Color the ball self.image.fill((white)) # Get a rectangle object that shows where our image is self.rect = self.image.get_rect() Implementation # Get attributes for the height/width of the screen self.screenheight = pygame.display.get_surface().get_height() self.screenwidth = pygame.display.get_surface().get_width() Testning # Speed in pixels per cycle self.speed = 0 Leverans # Floating point representation of where the ball is self.x = 0 self.y = 0 Software Engineering/Kristian Sandahl, Niklas Lanzén Testning OCTOBER 7, 2015 14 Software Engineering/Kristian Sandahl, Niklas Lanzén Iterativ modell • Syfte: Hitta fel • Man måste välja sina testfall • Olika nivåer av testning i ett system • Automatiserad testning t Återkoppling från kund oftare Alla krav måste inte vara kända i detalj i förväg Delleveranser möjliga Ett måste för användbara system? 4 10/7/2015 OCTOBER 7, 2015 Software Engineering/Kristian Sandahl, Niklas Lanzén 17 Följsamma (en. Agile) metoder OCTOBER 7, 2015 Software Engineering/Kristian Sandahl, Niklas Lanzén 19 Forskning: Bug localization with ML • Mycket korta iterationer • Undvik onödiga investeringar • Fokuserar på team • Hantera ändringar • Fokuserar på synliga resultat OCTOBER 7, 2015 Software Engineering/Kristian Sandahl, Niklas Lanzén Underhåll står för ca 70% av kostnaderna 18 OCTOBER 7, 2015 Software Engineering/Kristian Sandahl, Niklas Lanzén Kurser inom SE Ändring Testning, Design, Komponenter Påverkan Storskalig program‐ utveckling Design Specialkurser: UX, AI, spel, säkerhet, parallel‐ programmering, realtidssystem, … SE‐teori, kandidatprojekt Implementation Version 1.0 20 Testning Programmering, datalogi, matematik, teknik Leverans 5 10/7/2015 www.liu.se 6