Școala de vară 23 Iulie 2014 Adrian Iftene...

Post on 23-Sep-2019

2 views 0 download

transcript

Școala de vară – 23 Iulie 2014

Adrian Iftene adiftene@info.uaic.ro

Context

Motivație

Definiție

Etapele necesare dezvoltării aplicațiilor

Forward and Reverse Engineering

Aplicații de dimensiuni mari (milioane de linii de cod) scrise pe durata a câteva luni, ani,…

Echipe de lucru: Project manageri, Analiști, Arhitecți, Programatori, Testeri, Ingineri de suport (de ordinul 10, 100, 1.000 de persoane,…)

Soluția acestor probleme este o soluție scrisă într-un limbaj de programare orientat-obiect

3

Din ce în ce mai multe sisteme sunt controlate de software: controlul traficului (aerian, feroviar, auto, naval, etc.), băncile, telefonia mobilă, Internet

Economiile tuturor statelor depind de software

Ingineria programării propune teorii, metodologii și instrumente pentru dezvoltarea de software profesional

4

1946 Goldstine și von Neumann: “1.000 de instrucțiuni reprezintă o limită superioară rezonabilă pentru complexitatea problemelor ce pot fi concepute ca rezolvabile cu ajutorul calculatorului”

Sistemul de rezervare a biletelor pentru compania aerian a KLM conținea, în anul 1992, două milioane de linii de cod în limbaj de asamblare

5

Sistemul de operare System V versiunea 4.0 (UNIX) a fost obținut prin compilarea a 3.700.000 linii de cod

Programele scrise pentru naveta spațială NASA au circa 40 de milioane de linii de cod obiect

Pentru realizarea sistemului de operare IBM OS360 au fost necesari 5.000 de ani-om

6

Facturi imense la energia electrică pentru pensionari, recalcularea pensiilor

IBM OS360 conținea la fiecare relansare 1.000 de greșeli. Resemnare...

7

Programatorul ghinionist de la o bancă: Banca dorea să trimită la clienți prin poștă o scrisoare care să le semnaleze diverse servicii

Programatorul a scris un program ce selecta 2.000 de clienți și le scria o scrisoare personalizată

În procesul de testare acesta a folosit un nume fictiv de client Rich Bastard

Din păcate 2.000 de clienți au primit o scrisoare care începea "Dear Rich Bastard, ..."

8

Sacramento: un dentist primește în căsuța poștală într-o săptămână 16.000 de formulare pentru plata taxelor – “It was a computer problem” a declarat un oficial

“Failure to convert English measures to metric values was the root cause of the loss of the Mars Climate Orbite…”

9

Pierdere vehicul explorare Venus. Ah, era de fapt .,. in FOR!...

Sistem de avertizare anti-rachetă activat. Atacăm sau nu?

Ariane 5 explodeaza. Cost articii: 500.000.000$

10

Prima definiție a ingineriei programării (NATO,1968): Ingineria programării este stabilirea și utilizarea de principii inginerești solide pentru a obține în mod economic programe care sunt sigure și funcționează eficient pe mașini de calcul concrete

O definiție mai recentă (și mai rezervată, IEEE Standard Glossary of Software Engineering Tehnology, 1983): Ingineria programării reprezintă abordarea sistematică a dezvoltării, funcționării, întreținerii, și retragerii din funcțiune a programelor

11

Este o disciplină inginerească care se ocupă de toate aspectele dezvoltării unui program de dimensiuni mari, de către o echipă de dezvoltatori

Propune adoptarea unei abordări sistematice și organizate a procesului de dezvoltare software

Propune folosirea tehnicilor și instrumentelor adecvate având în vedere ◦ problema care trebuie rezolvată

◦ restricțiile impuse

◦ resursele disponibile

12

Analiza cerințelor (Requirements analisys)

Proiectarea arhitecturală (Arhitectural design)

Proiectarea detaliată (Detailed design)

Scrierea codului (Implementation)

Integrarea componentelor (Integration)

Validare (Validation)

Verificare (Verification)

Întreținere (Maintenance)

13

Se stabilește ce anume vrea clientul ca programul să facă

Scopul este înregistrarea cerințelor într-o manieră cât mai clară și mai fidelă

Probleme ◦ Comunicare

◦ Negociere

◦ Sfătuirea clientului

14

Arhitecturală ◦ Din motive de complexitate, programele mari nu

pot fi concepute și implementate ca o singură bucată

◦ Programul este împărțit în module sau componente mai simple, care pot fi abordate individual

Detaliată ◦ Se proiectează fiecare modul al aplicației, în cele

mai mici detalii

15

Implementare ◦ Proiectul detaliat este transpus într-un limbaj de

programare

◦ Acesta se realizează modular, pe structura rezultată la proiectarea arhitecturală

Integrare ◦ Modelul big-bang

◦ Modelul incremental

16

Validare: ne asigurăm că programul îndeplinește cerințele utilizatorului ◦ Construim produsul corect?

Verificare: ne asigurăm că programul este stabil și că funcționează corect din punctul de vedere al dezvoltatorilor. ◦ Construim corect produsul?

17

După livrare ◦ Sunt descoperite greșeli ce trebuie reparate

◦ Pot apărea schimbări în specificații

◦ Pot apărea noi cerințe

◦ Instruirea celor ce vor folosi produsul

Întreținere = gestionarea acestor tipuri de probleme

18

Cum efectuăm activitațile indicate de etapele dezvoltării programelor

Exemple de modele de dezvoltare: ◦ Ad-hoc: descurcă-te cum poți

◦ Modelul în cascadă (cu feedback)

◦ Prototipizare

◦ Modelul în spirală

◦ RUP (Rational Unified Process)

◦ V-Model

◦ XP (Extreme Programming)

◦ Agile, Lean, Scrum

◦ MDD, AMDD

◦ TDD

19

20

Ingineria

Cerințelor

Proiectarea

Arhitecturală

Proiectarea

Detaliată

Implementare

Testarea

Unităților

Testarea

Sistemului

Acceptare

• Winston W. Royce in 1970

+: Împarte o sarcină complexă în pași mai mici

+: Ușor de administrat și controlat

+: Fiecare pas are ca rezultat un produs bine definit

+: Tot timpul știm unde ce am făcut până în acel moment și știm ce mai avem de făcut

-: Erorile se propagă între pași

-: Nu exista mecanisme de reparare a erorilor

21

Clientul devine parte a echipei de dezvoltare

Frecvente distribuiri intermediare a părţii software, cu verificări şi validări imediate

Discuţii zilnice: ◦ Ce ai făcut ieri? (realizări)

◦ Ce ai de gând să faci până mâine? (de realizat)

◦ Care sunt problemele care te-ar putea încurca? (probleme/riscuri)

Transparenţă în planificare şi dezvoltare

Întâlniri frecvente pentru a monitoriza progresul

Nu sunt probleme ţinute sub covor

Eficienţa muncii: “să lucrezi mai multe ore" nu înseamnă neapărat “obţinerea mai multor rezultate"

22

23

24

A traditional process of moving from high-level abstractions and logical to the implementation-independent designs to the physical implementation of a system

FE follows a sequence of going from requirements through designing its implementation

25

Reverse engineering (RE) is the process of discovering the technological principles of a device, object or system through analysis of its structure, function and operation

To try to make a new device or program that does the same thing without copying anything from the original

Reverse engineering has its origins in the analysis of hardware for commercial or military advantage

26

Interoperability

Lost documentation

Product analysis

Security auditing

Removal of copy protection, circumvention of access restrictions

Creation of unlicensed/unapproved duplicates

Academic/learning purposes

Curiosity

Competitive technical intelligence (understand what your competitor is actually doing versus what they say they are doing)

Learning: Learn from others mistakes 27

Reverse engineering of mechanical devices

Reverse engineering of integrated circuits/smart

cards

Reverse engineering for military applications

Reverse engineering of software

28

Involves measuring an object and then reconstructing it as a 3D model

The physical object can be measured using 3D scanning technologies like CMMs, laser scanners, structured light digitizers or computed tomography

29

30

31

32

Rapid prototyping

FullCure materials

33

34

35

RE is an invasive and destructive form of analyzing a smart card

The attacker grinds away layer by layer of the smart card and takes pictures with an electron microscope

Engineers employ sensors to detect and prevent this attack

36

37

38

Satellite TV

Security card

Phone card

Ticket card

Bank card

39

Reverse engineering is often used by militaries in order to copy other nations' technologies, devices or information that have been obtained by regular troops in the fields or by intelligence operations

It was often used during the Second World War and the Cold War

Well-known examples from WWII and later include: rocket, missile, bombers, China has reversed many examples of US and Russian hardware, from fighter aircraft to missiles and HMMWV cars

40

US – B-29 URSS – Tupolev Tu-4

41

Chinese J-20, Black Eagle US F-22, Russian Sukhoi T-50

42

US -AIM-9 Sidewinder Soviet - Vympel K-13

43

44

45

46

Reverse engineering is the process of analyzing a subject system to create representations of the system at a higher level of abstraction

In practice, two main types of RE emerge: ◦ Source code is available (but it is poorly documented)

◦ There is no source code available for the software

Black box testing in software engineering has a lot in common with reverse engineering

47

48

Decompilation of binaries for the Java platform can be accomplished using Jad or DJ Decompiler

The Samba software, which allows systems that are not running Microsoft Windows systems to share files with systems that are

OpenOffice.org is one party doing this for the Microsoft Office file formats

49

public class Test

{

private int n;

private int m;

public static void main(String args[])

{

for(int i=1;i<10;i++)

System.out.println("Test");

}

}

50

52

File -> Import Sources...

53

54

Forward engineering: ◦ Diagrame de clasă -> .java files (ArgoUML)

◦ .java files -> .class files (NetBeans)

Reverse engineering:

◦ .class files -> .java files (JAD Decompiler)

◦ .java files -> Diagrame de Clasă (ArgoUML)

55

Cursul, Laboratorul, Proiectul, Examenul

Context

Motivație

Definiție

Etapele necesare dezvoltării aplicațiilor

Forward and Reverse Engineering