Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tema08.MantenimientodeSistemasSo1ware
PabloSnchezBarreiro
DPTO.DEMATEMTICAS,ESTADSTICAY COMPUTACIN
p.sanchez@unican.es
EstetemasepublicabajoLicencia: CreaOveCommonsBYNCSA3.0
Introducci on
Mantenimiento Software
Diseo Arquitectnico
Diseo Detallado
Implementacin
Mantenimiento Software
2 / 62
Introducci on
Mantenimiento Software
3 / 62
Introducci on
Permiten peque nas adaptaciones, pero su modicaci on es muy costosa. Suele implicar la construcci on de un nuevo sistema.
Mantenimiento Software
4 / 62
Introducci on
El coste material de un producto software es despreciable. Un producto software es altamente modicable. Hasta el punto de poder llegar a ser un producto completamente nuevo (ej. Linux).
Mantenimiento Software
5 / 62
Introducci on
Listas de bugs y foros de soporte en productos comerciales . Actualizaciones de productos comerciales (ej. Windows Update, Acrobat Update)
Pablo S anchez (MATESCO) Mantenimiento Software 6 / 62
Introducci on
Adaptaci on al euro - Efecto 2000. Pantallas t actiles m oviles. Sistemas de taricaci on telefon a m ovil. Negocios de software libre basados en consultor a y mantenimiento (ej. openArchitecureWare http://www.openarchitectureware.org/). Actualmente, facilidad de mantenimiento, adaptabilidad y evoluci on son las caracter sticas m as importantes de la mayor a de los sistemas software.
Mantenimiento Software
7 / 62
Introducci on
Mantenimiento Software
8 / 62
Introducci on
Mantenimiento Software
9 / 62
Introducci on
Mantenimiento Software
10 / 62
Introducci on
Objetivos
Aprender a analizar, planicar, ejecutar y gestionar acciones de mantenimiento software.
Mantenimiento Software
11 / 62
Mantenimiento Software
Deniciones
Mantenimiento Software
Deniciones
Mantenimiento Software
13 / 62
Mantenimiento Software
Deniciones
Mantenimiento Software
14 / 62
Mantenimiento Software
Correctivo: localiza y corrige defectos en un programa tras su entrega (ej. IVA al 15 %, agujeros de seguridad). Puede ser urgente o no urgente. Adaptativo: Modicaci on para adaptarse a un cambio en el entorno (ej. Euro, pantallas t actiles). Perfectivo: Modicaci on para detectar y corregir fallos latentes antes de que se conviertan en carencias [8]. Modicaci on para modicar o a nadir nuevas funcionalidades [11]. (Ej. rma digital en banca online). Preventivo: Modicaci on para detectar y corregir fallos latentes antes de que se conviertan en fallos operacionales [8]. Mejorar las propiedades del software [11]. (Ej. recodicar para aplicar patrones de dise no).
Mantenimiento Software
15 / 62
Mantenimiento Software
Anticipado: Un cambio se dice que es anticipado cuando ha sido previsto durante el desarrollo del sistema software y se han adoptado decisiones de dise no que permiten acomodar la variaci on (ej. uso de constantes, patr on estrategia, sistema de plugins de Eclipse). No anticipado: Todo aquel que no es anticipado. There is not silver bullet [4].
Mantenimiento Software
16 / 62
Mantenimiento Software
Diferentes medidas de productividad entre desarrollo y mantenimiento:40 LDC desarrollado por 1 LDC mantenido [11].
Mantenimiento Software
17 / 62
Mantenimiento Software
Desarrollado con tecnolog as y t ecnicas anticuadas. No hay documentaci on. Si la hay, est a en notaci on Benito & Manolo, que ya no trabajan en la empresa. Reescribirlo entero no es factible (ej. Amadeus). El sistema no tiene porque estar bien dise nado, programado, ni haber sido desarrollado siguiendo un proceso de ingenier a.
Pablo S anchez (MATESCO) Mantenimiento Software 18 / 62
Mantenimiento Software
Mantenimiento Software
19 / 62
Mantenimiento Software
Mantenimiento Software
20 / 62
Mantenimiento Software
Mantenimiento Software
21 / 62
Mantenimiento Software
Mantenimiento Software
22 / 62
Mantenimiento Software
23 / 62
Mantenimiento Software
1 2 3 4
Efectos domin o y efecto iceberg. Cambios ad-hoc, ausencia metodol ogica del cambio. Ausencia de documentaci on adecuada (decisiones de dise no). Degradaci on calidad del producto.
Mantenimiento Software
24 / 62
Mantenimiento Software
Establecer procedimientos claramente denidos y estandarizados para el mantenimiento software, que se basen en t ecnicas y herramientas para el mantenimiento claramente denidas y validadas. Asignarle los recursos adecuados, tanto f sicos y econ omicos como humanos, Usar t ecnicas para control de calidad, tanto sobre el producto como sobre el proceso. Ejemplo: S3M (http://www.s3m.ca/).
Mantenimiento Software
25 / 62
Cliente
Planificador
Mantenimiento Software
26 / 62
MANTEMA [12]
act [ Mantema ] Peticin de Mantenimiento error Severidad? Alta Atender directamente Baja Adaptacin tipo? otro
Planificar
Analizar
Disear
Implementar
Probar
Mantenimiento Software
27 / 62
Peticin de Cambio
Analisis de Impacto
Planificacin de Versiones
Implementacin de Cambios
Reparacin de defectos
Adaptacin de Plataforma
Mantenimiento Software
28 / 62
UNCONFIRMED
Bug confirmed or receives enough votes Developer takes possession Bug is reopened, was never confirmed
NEW
Ownership is changed
ASSIGNED
RESOLVED
Bug is closed
REOPEN
Bug is reopened
VERIFIED
CLOSED
Mantenimiento Software
29 / 62
30 / 62
Mantenimiento Software
31 / 62
T ecnicas de mantenimiento
Introducci on
Ingenier a Inversa: Reconstruir el proceso de ingenier a de un producto a partir de ciertos artefactos de dicho producto. Reingenier a: Examen y modicaci on de un sistema para reconstruirlo en una nueva forma. Puede precisar de un proceso de ingenier a inversa para reconstruir el proceso de ingenier a del producto. Reestructuraci on: Modicaci on del software para hacerlo m as f acil de entender y cambiar o menos susceptible de incluir errores en cambios posteriores. Transformaciones: Manipulaci on, por medio de transformaciones autom aticas ejecutadas por un computador, del c odigo o modelo de un sistema para a nadirle/modicarle/eliminarle elementos. (ej. pasar un sistema a distribuido).
Mantenimiento Software
32 / 62
T ecnicas de mantenimiento
Introducci on
Mantenimiento Software
33 / 62
T ecnicas de mantenimiento
Ingenier a Inversa
Qu e es Ingenier a Inversa?
Mantenimiento Software
34 / 62
T ecnicas de mantenimiento
Ingenier a Inversa
Qu e es Ingenier a Inversa?
Mantenimiento Software
35 / 62
T ecnicas de mantenimiento
Ingenier a Inversa
Mantenimiento Software
36 / 62
T ecnicas de mantenimiento
Ingenier a Inversa
class [
ReverseEngineering ]
Mantenimiento Software
37 / 62
T ecnicas de mantenimiento
Ingenier a Inversa
Mantenimiento Software
38 / 62
T ecnicas de mantenimiento
Ingenier a Inversa
Por cada tabla sin referencias a otras tablas, creamos una entidad. Para las entidades creadas, copiamos atributos y marcamos claves primarias. Marcamos las tablas como procesadas. Por cada tabla con referencias externas, creamos una entidad. Para las entidades creadas, copiamos atributos y marcamos claves primarias. Por cada clave externa, creamos una relaci on entre la entidad creada y la referenciada. Para dicha relaci on, el extremo de tabla referenciada, tendr a cardinalidad 1, salvo restricci on expresa. Para dicha relaci on, el extremo de la entidad creada, tendr a cardinalidad 0.., salvo restricci on expresa. Si una entidad tiene: (1) su clave primaria formada por la uni on de las claves primarias de tablas con las cuales se relaciona; y (2) los extremos de las relaciones con las otras entidades tiene como cardinalidad superior 1, convertir dicha entidad en una relaci on n a m entre entidades. Copiar los atributos de la entidad a atributos de la relaci on.
Mantenimiento Software 39 / 62
3 4 5
T ecnicas de mantenimiento
Ingenier a Inversa
rname
id
pnum
pname
Region
Customer
Product id
salesman_name
rname address
volume
Mantenimiento Software
40 / 62
T ecnicas de mantenimiento
Reestructuraci on
Mantenimiento Software
41 / 62
T ecnicas de mantenimiento
Reestructuraci on
1 2 3 4 5 6
Nombre S ntomas Causas Refactorizaciones propuestas Benecios esperados Efectos colaterales y contraindicaciones
Mantenimiento Software
42 / 62
T ecnicas de mantenimiento
Reestructuraci on
1 2 3 4 5 6
Pull Up Method. Move Method. Add Parameter. Move Field. Rename Method. Rename Field.
Mantenimiento Software
43 / 62
T ecnicas de mantenimiento
Reestructuraci on
Pull Up Method
Descripci on
Existen m etodos cuasi-id enticos en las subclases
class [
Refactorings ] UniversityMember
class [
Refactorings ] UniversityMember
Student
Teacher
Mantenimiento Software
44 / 62
T ecnicas de mantenimiento
Reestructuraci on
Move Method
Descripci on
Un m etodo de una clase A es m as usado en una clase B que en la clase donde est a denido.
class [ Course
class [
Mantenimiento Software
45 / 62
T ecnicas de mantenimiento
Reestructuraci on
Add Parameter
Descripci on
A method needs more information from its caller.
class AP(left) [
AP(left) ] Student
class AP(right) [
AP(right) ]
+getContactData()
Mantenimiento Software
46 / 62
T ecnicas de mantenimiento
Reestructuraci on
class [
IPO(left) ] Student
class [
+bookSession( day : int, month : int, year : int ) +notifyExam( day : int, month : int, year : int )
Mantenimiento Software
47 / 62
T ecnicas de mantenimiento
Reestructuraci on
Move Field
Descripci on
Un atributo de una clase A es m as usado en una clase B que en la clase donde est a denido.
class [
MoveField(left) ] ProductType
class [
+kind 1
Product
+kind 1
Mantenimiento Software
48 / 62
T ecnicas de mantenimiento
Reestructuraci on
Rename Field/Method
Descripci on
El nombre de un atributo o m etodo no es signicativo
class [
class [
+t 1
Product
+kind 1
Mantenimiento Software
49 / 62
T ecnicas de mantenimiento
Reestructuraci on
refactors to
static final double NORMAL_VAT = 16.0; double calculateTotalCharge() { return this.totalAmount + (this.totalAmount*NORMAL_VAT/100.0); }
Mantenimiento Software
50 / 62
T ecnicas de mantenimiento
Reestructuraci on
class [
class [
+kind 1
+calculateTotalCharge()
NormalProduct +calculateTotalCharge()
ReduceVATProduct +calculateTotalCharge()
BasicProduct +calculateTotalCharge()
Mantenimiento Software
51 / 62
T ecnicas de mantenimiento
Detecci on de clones
M o dul eA
M o dul eB
M o dul eC
Module D
M o dul eE
Mantenimiento Software
52 / 62
T ecnicas de mantenimiento
Detecci on de clones
Mantenimiento Software
53 / 62
T ecnicas de mantenimiento
Detecci on de clones
... if a=b then for i=1 to f(n) aux = aux + f(i, i-1) end for a=0 end if ....
Mantenimiento Software
54 / 62
T ecnicas de mantenimiento
Detecci on de clones
Mantenimiento Software
55 / 62
Regla informal
Un sistema ser a m as mantenible cuanto mayor cohesi on tenga y menor sea su acoplamiento [10].
Mantenimiento Software
56 / 62
class [ OBSComponentClassesLarge ] System +register() +unregister() 1..* +clerks +packOrder() ShoppingCart Customer 0..* +name : String +customers +creditCard : String +customer +addItem( book : Book, quantity : Integer ) +removeItem( book : Book ) +checkOut() +creditNotification( ok : Boolean ) +deliveryNotification( ok : Boolean ) Book 1..* +books +author : String +title : String Clerk SelectedBook +quantity : Integer
0..* +books
Mantenimiento Software
57 / 62
Conclusiones
Conclusiones
Importancia del mantenimiento software y diferencia con sistemas cl asicos. Denci on de mantenimiento software. Tipos de mantenimiento y cambio. Importancia y problemas de los sistemas heredados. Organizaci on y gesti on del mantenimiento. Concepto y t ecnicas de Ingenier a Inversa. Concepto y t ecnicas de Refactorizaci on. M etricas para mantenimiento.
3 4 5 6 7
Mantenimiento Software
58 / 62
Bibliograf a
Referencias I
Lowell Jay Arthur. Software Evolution: A Software Maintenance Challenge. John Wiley & Sons, February 1988. Victor Basili, Lionel Briand, Steven Condon, Yong-Mi Kim, Walc elio L. Melo, and Jon D. Valett. Understanding and Predicting the Process of Software Maintenance Release. In Proc. of the 18th Int. Conference on Software Engineering (ICSE), pages 464474, Berlin, Germany, March 1996. Ira D. Baxter, Andrew Yahin, Leonardo Moura, Marcelo SantAnna, and Lorraine Bier. Clone Detection Using Abstract Syntax Trees. In Proc. of the Int. Conference on Software Maintenance (ICSM), pages 368377, Bethesda (Maryland, USA), November 1998.
Pablo S anchez (MATESCO) Mantenimiento Software 59 / 62
Bibliograf a
Referencias II
Frederick P. Brooks. No Silver Bullet - Essence and Accidents of Software Engineering. IEEE Computer, 20(4):1019, April 1987. Shyam R. Chidamber and Chris F. Kemerer. A Metrics Suite for Object Oriented Design. IEEE Transactions on Software Engineering, 20(6):476493, June 1994. Steve Counsell, Youssef Hassoun, George Loizou, and Rajaa Najjar. Common Refactorings, a Dependency Graph and Some Code Smells: an Empirical Study of Java OSS. In Guilherme Horta Travassos, Jos e Carlos Maldonado, and Claes Wohlin, editors, Proc. of the Int. Symposium on Empirical Software Engineering (ISESE), pages 288296, Rio de Janeiro (Brazil), September 2006.
Pablo S anchez (MATESCO) Mantenimiento Software 60 / 62
Bibliograf a
Referencias III
Edsger W. Dijkstra. The humble programmer. Communications of the ACM, 15(10):859866, October 1972. ISO/IEC/IEEE. Software engineering software life cycle processes maintenance. Technical Report International Standard ISO/IEC 14764:2006, IEEE Std 14764-2006, September 2006. IEEE (The Institute of Electrical and Electronics Engineers). Standard for software maintenance. Technical Report IEEE Std 1219-1993, December 1992. David L. Parnas. On the Criteria to be Used in Decomposing Systems into Modules. Communications of the ACM, 15(12):10531058, 1972.
Mantenimiento Software
61 / 62
Bibliograf a
Referencias IV
Mario Piattini, Jos e Villalba, Francisco Ruiz, Teresa Bastanchury, Macario Polo, Miguel Angel Mart nez, and C esar Nistal. Mantenimiento del Software. Modelos, T ecnicas y M etodos para la Gesti on del Cambio. Macario Polo, Mario Piattini, Francisco Ruiz, and Coral Calero. MANTEMA: A Complete Rigorous Methodology for Supporting Maintenance Based On The ISO/IEC 12207 Standard. In Proc. of the 3rd European Conference on Software Maintenance and Reengineering (CSMR), pages 178181, Amsterdam (The Netherlands), March 1999. Stephen S. Yau and James S. Collofello. Design Stability Measures for Software Maintenance. IEEE Transactions on Software Engineering, 11(9):849856, October 1985.
Pablo S anchez (MATESCO) Mantenimiento Software 62 / 62