37
Recapitulare IP 10 Octombrie 2011 Adrian Iftene [email protected]

Recapitulare IP Adrian Iftene [email protected]/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Recapitulare IP – 10 Octombrie 2011

Adrian Iftene [email protected]

Page 2: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Recapitulare – noțiuni pe care ne vom baza ◦ Definiție

◦ Modele de dezvoltare

◦ Etapele dezvoltării proiectelor

Ingineria cerințelor

Diagrame UML

Design patterns (GRASP, GOF)

Quality assurance

Întreținere

◦ Calitatea programelor

◦ Copyright

Page 3: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Ingineria programării (Software engineering)

Modele de proiectare (Design models)

Ingineria cerinţelor (Requirements identification)

Diagrame UML (UML diagrams)

Design patterns

Testare şi debug (Testing and debugging)

Întreţinere (Maintenance)

Metrici software (Software metrics)

Managementul proiectelor (Project management)

Drepturi de autor (Author rights)

3

Page 4: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Cuvinte cheie din definiție: ◦ Dezvoltarea de aplicații mari

◦ Principii inginerești

◦ Programe sigure și eficiente

◦ Funcționare, întreținere, retragere

◦ Software engineer

◦ Gestionare proiect: coordonare echipe, comunicare, planificare, buget

4

Page 5: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

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) (Inception, Elaboration, Construction, Transition)

◦ XP (Extreme Programming)

◦ Agile

◦ Lean

◦ Scrum

5

Page 6: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Este o disciplină inginerească care se ocupă de toate aspectele dezvoltării unui program

Propune adoptarea unei abordari 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

6

Page 7: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Analiza cerinţelor (Requirements analisys)

Proiectarea architecturală (Arhitectural design)

Proiectarea detaliata (Detailed design)

Scrierea codului (Implementation)

Integrarea componentelor (Integration)

Validare (Validation)

Verificare (Verification)

Întreţinere (Maintenance)

7

Page 8: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

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

Cine? Project Manager, Program Manager sau Business Analyst

De ce?

8

Page 9: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Arhitecturală ◦ Programul este împarţit în module sau componente

mai simple, care pot fi abordate individual

Detaliată ◦ Se proiecteaza fiecare modul al aplicaţiei, în cele

mai mici detalii

Diagrame UML ◦ UseCase, clase, interacțiuni, secvență, colaborare,

stări, activități, pachete

Reverse & Forward Engineering

9

Page 10: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

10

Page 11: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

11

Page 12: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

12

Activități…

Page 13: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

stări…

13

Page 14: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Secvență… 14

Page 15: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Colaborare… 15

Page 16: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

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

programare

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

Integrare ◦ Modelul big-bang

◦ Modelul incremental

16

Page 17: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

“Design patterns capture solutions that have developed and evolved over time” (GOF - Gang-Of-Four (because of the four authors who wrote it), Design Patterns: Elements of Reusable Object-Oriented Software)

In software engineering (or computer science), a design pattern is a general repeatable solution to a commonly occurring problem in software design

The design patterns are language-independent strategies for solving common object-oriented design problems

17

Page 18: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Elements: 1. Pattern name

2. Problem (when, context, list of conditions)

3. Solution (elements, relationships, responsibilities)

4. Consequences (results, understanding, evaluation)

5. Intent, also known as, motivation, applicability, structure, participants, implementation, known uses

18

Page 19: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

GRASP

GOF ◦ Creational patterns

◦ Structural patterns

◦ Behavioral patterns

Fundamental, Partitioning, GUI, Organizational Coding, Optimization Coding, Robustness Coding, Testing, Transactions, Distributed Architecture, Distributed Computing, Temporal, Database, Concurrency patterns

19

Page 20: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

GRASP - General Responsibility Assignement Software Patterns (Principles)

Ne ajută să alocăm responsabilităţi claselor şi obiectelor în cel mai elegant mod posibil

Exemple de principii folosite în GRASP: Information Expert (sau Expert), Creator, High Cohesion, Low Couplig, Controller Polymorphism, Pure Fabrication, Indirection, Protected Variations

20

Page 21: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Problemă: dat un anumit comportament (operaţie), cărei clase trebuie să-i fie atribuit?

Soluţie: asignez o responsabilitate clasei care are informaţiile necesare pentru îndeplinirea acelei responsabilităţi

O alocare bună a operaţiilor conduce la sisteme care sunt: ◦ Uşor de înţeles, Mai uşor de extins, Refolosibile, Mai

robuste

21

Page 22: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Măsură a gradului de dependenţă a unei clase de alte clase

Tipuri de Dependenţă: ◦ este conectată cu, are cunoştinţe despre, se bazează pe

O clasă care are cuplaj mic (redus) nu depinde de “multe” alte clase; unde “multe” este dependent de contex

Probleme cauzate de cuplaj: greu de modificat, greu de înțeles în izolare, greu de refolosit

Vizualizare: diagrame de clase și diagrame de colaborare

22

Page 23: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Coeziunea este o măsură a cât de puternic sunt focalizate responsabilităţile unei clase

O clasă ale cărei responsabilităţi sunt foarte strâns legate şi care nu face foarte multe lucruri are o coeziune mare

Probleme cauzate de o slabă coeziune: ◦ greu de înţeles, greu de refolosit, greu de menţinut

◦ delicate, astfel de clase sunt mereu supuse la schimbări

23

Page 24: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Abstract Factory groups object factories that have a common theme (PC-Server-Workstation)

Builder constructs complex objects by separating construction and representation (fast food menu)

Factory Method creates objects without specifying the exact class to create (Hello <>, Open/New options)

Prototype creates objects by cloning an existing object (editor for music scores, Cloneable/clone)

Singleton restricts object creation for a class to only one instance (Logger system)

Not in GOF book: Lazy initialization, Object pool, Multiton, Resource acquisition is initialization 24

Page 25: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Adapter allows classes with incompatible interfaces to work together (Wrapper, Plug-socket)

Bridge decouples an abstraction from its implementation (Shapes-OS)

Composite composes zero-or-more similar objects (compositions, container, pictures, employees)

Decorator dynamically adds/overrides behavior (Christmas tree)

Facade provides a simplified interface (compiler, glass-building, JDBC, store keeper)

Flyweight use sharing to reduce the cost (MS Word - characters formatting)

Proxy provides a placeholder (surrogate) (MS Word – images, ATM)

25

Page 26: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Chain of responsibility delegates commands to a chain (contextual Help, multi level filter)

Command creates objects which encapsulate actions and parameters (restaurant waiter)

Interpreter implements a specialized language

Iterator accesses the elements sequentially

Mediator allows loose coupling between classes (control tower)

Memento provides the ability to restore an object to its previous state

26

Page 27: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Observer allows to observer objects to see an event (Excel graphs)

State allows an object to alter its behavior when its internal state changes (TCPConnection)

Strategy allows one of a family of algorithms to be selected on-the-fly at runtime (+-* context)

Template defines an algorithm as an abstract class, allowing its subclasses to provide concrete behavior (Game: initialize, makePlay,…)

Visitor separates an algorithm from an object structure

Not in GOF book: Null Object, Specification 27

Page 28: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

With more than 20 design patterns to choose from, it might be hard to find the one that addresses a particular design problem

Approaches to finding the design pattern that's right for your problem: 1. Consider how design patterns solve design problems

2. Scan Intent sections

3. Study relationships between patterns

4. Study patterns of like purpose (comparison)

5. Examine a cause of redesign

6. Consider what should be variable in your design

28

Page 29: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

1. Read the pattern once through for an overview

2. Go back and study the Structure, Participants, and Collaborations sections

3. Look at the Sample Code section to see a concrete example

4. Choose names for pattern participants that are meaningful in the application context

5. Define the classes

6. Define application-specific names for operations in the pattern

7. Implement the operations to carry out the responsibilities and collaborations in the pattern

29

Page 30: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

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?

Unit testing

30

Page 31: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Refers to planned and systematic production processes that provide confidence in a product's suitability for its intended purpose.

A set of activities intended to ensure that products satisfy customer requirements

QA cannot absolutely guarantee the production of quality products, unfortunately, but makes this more likely

Two key principles characterize QA: ◦ "fit for purpose" - the product should be suitable for

the intended purpose, and

◦ "right first time" - mistakes should be eliminated 31

Page 32: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

32

Price Time

Quality

Page 33: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

ISO 9000 is a family of standards for quality management systems

Some of the requirements in ISO 9001 (from ISO 9000 family) include ◦ a set of procedures;

◦ monitoring processes;

◦ keeping adequate records;

◦ checking output for defects;

◦ regularly reviewing individual processes;

◦ facilitating continual improvement

33

Page 34: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

When?

Aims?

Problems: communication, incomplete requirements, design

Bug: Effects, Prevention, Life cycle

Professional testing?

Unit, Acceptance, Regression

Manual & Automation testing

Usability, security

Internationalization & localization

Page 35: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

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

35

Page 36: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Concepte ◦ Siguranţă

◦ Eficienţă

◦ Întreţinere

◦ Uzabilitate

Metrici de bază ◦ KLOC: Kilo Lines Of Code (mii linii de cod)

◦ Effort, PM: Person – Month (Om – lună)

Copyright

36

Page 37: Recapitulare IP Adrian Iftene adiftene@info.uaicadiftene/Scoala/2012/TAIP/Courses/IP_Recapitulare.pdf · Gestionare proiect: coordonare echipe, comunicare, ... Problemă: dat un anumit

Pagina cursului de IP Adrian Iftene (2009, 2010, 2011) http://thor.info.uaic.ro/~adiftene/Scoala/2011/IP/

Pagina lui Ovidiu Gheorghieş (a lucrat cu Adriana G.) http://thor.info.uaic.ro/~ogh/ip/

Ian Sommerville: Software Engineering, Addison Wesley, 2001

Craig Larman: Applying UML and Patterns, Addisson Wesley, 2002

Erich Gamma, Richard Helm, Ralph Johnson, John Vissides: Design Patterns, Elements of Reusable Object-Oriented Software, Addisson Wesley, 1998

Internet