Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PS- GRADUAO
Engenharia de Software:
Desenvolvimento Java
Engenharia de Software:
Desenvolvimento .NET
GRADUAO
Engenharia de Computao
Anlise e Desenv. de Sistemas
F ORMAES
Desenvolvedor Java
Desenv. Java: Sist. Distribudos
Gestor de TI
Desenvolvedor Web .NET 2008
MCITP Server Administrator
SQL Server 2008
r/esti
Acesse nosso site e conhea todos os nossos programas: www.infnet.edu.br/esti
TURMAS
NO RIO DE
JANEIRO
www.infnet.edu.br - cursos@infnet.edu.br - Central de Atendimento: (21) 2122-8800
EDITORIAL
desenvolvimento de qualquer software, exceto programas muito simples, uma tarefa bastante complexa. Esse fato se tornou evidente
com a crise de software, o que originou o conceito de engenharia de
Impresso no Brasil
Corpo Editorial
Colaboradores
Rodrigo Oliveira Spnola
Marco Antnio Pereira Arajo
Eduardo Oliveira Spnola
Entender o que significa manuteno de software, e principalmente a abrangnfundamento de solues para os problemas atrelados a essa tarefa.
Neste contexto, a Engenharia de Software Magazine destaca nesta edio o
artigo Dificuldades e Problemas Encontrados na Manuteno de Software.
Capa e Diagramao
Romulo Araujo - romulo@devmedia.com.br
Coordenao Geral
Daniella Costa - daniella@devmedia.com.br
Revisor
Gregory Monteiro - gregory@clubedelphi.net
Jornalista Responsvel
Kaline Dolabella - JP24185
Na Web
www.devmedia.com.br/esmag
Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendimento ao leitor.
Se voc tiver algum problema no recebimento do seu exemplar ou precisar de
algum esclarecimento sobre assinaturas, exemplares anteriores, endereo de
bancas de jornal, entre outros, entre em contato com:
Isabelle Macedo e Uellen Goulart Atendimento ao Leitor
www.devmedia.com.br/mancad
(21) 2220-5338
Kaline Dolabella
Gerente de Marketing e Atendimento
kalined@terra.com.br
(21) 2220-5338
Publicidade
Para informaes sobre veiculao de anncio na revista ou no site entre em
contato com:
Cristiany Queiroz
publicidade@devmedia.com.br
Caro Leitor,
NDICE
Por trs do bvio
06 E se voc fosse um DVD numa locadora?
Glnio Cabral
Desenvolvimento
14 - Computao em Nuvem
Gabriella Castro Barbosa Costa e Marco Antnio Pereira Arajo
Engenharia
28 - Mtodo de Anlise e Projetos em SOA
Henrique Shoiti Fugita e Davi Carvalho S., Jr.
Tipo: Processo
Ttulo: Especificao de casos de uso na prtica Partes 11 a 15
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: Definir requisitos no uma atividade trivial. Uma das
formas de realizar esta atividade atravs da especificao de casos de
uso. Neste sentido, nesta srie de vdeo aulas apresentaremos um conjunto
de especificaes de casos de uso. Os cenrios sero especificados passo
a passo considerando tpicos como fluxo principal, fluxo alternativo e
regras de negcios.
Administrador de Empresas, ps-graduado em Gesto de Pessoas e msico. Idealizador do site de educao infantil www.novainfancia.com.br.
D
s
Feedback
eu
www.devmedia.com.br/esmag/feedback
sobre e
s
edio
ta
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Para prover conhecimento ao desenvolvedor sobre refatorao para padres e demonstrar atravs de um exemplo prtico a aplicao da tcnica
de refatorao para padres Mover Embelezamento para Decorator.
Desen volvimento
Extrair Interface
Esta refatorao pertencente ao grupo de refatoraes
classificadas como Lidando com Generalizao.
Nome da refatorao: Extrair Interface.
Resumo: Em vrios pontos de um sistema pode-se perceber
que h uma grande utilizao de alguns mtodos de vrias
classes. Cria-se, portanto uma interface que permita aos
clientes da aplicao apontarem para a interface, ao invs
de apontar para diversas classes.
Nota 1: Refatorao Mover Mtodo
As tcnicas de refatorao Substituir Condicional por Polimorfismo, Substituir Enumerao por
Subclasse e Criar um mtodo Padro j foram apresentadas em outras edies da Engenharia
de Software Magazine, mais precisamente nas edies 30 e 32.
4.
public String RecuperaNomeVendedor(Int32 id)
5.
{
6.
SqlConnection Conexao = Acesso.getConexao();
7.
String queryIDVendedor = SELECT NOME FROM TBVendedores
WHERE IDVENDEDOR = + id + ;
8.
String nome = ;
9.
SqlCommand Commando = new SqlCommand(queryIDVendedor,
Conexao);
10.
try
11.
{
12.
Commando.ExecuteNonQuery();
13.
SqlDataReader dados = Commando.ExecuteReader();
14.
while (dados.Read())
15.
{
16.
nome = Convert.ToString(dados[0]);
17.
}
18.
dados.Close();
19.
return nome;
20.
}
21.
catch
22.
{
23.
return nome;
24.
}
25.
}
26.
public String RecuperaNomeSecretaria(Int32 id)
27.
{
28.
SqlConnection Conexao = Acesso.getConexao();
29.
String queryIDSecretaria = SELECT NOME FROM TBSecretaria
WHERE IDSECRETARIA = + id + ;
30.
String nome = ;
31.
SqlCommand Commando = new SqlCommand(queryIDSecretaria,
Conexao);
32.
try
33.
{
34.
Commando.ExecuteNonQuery();
35.
SqlDataReader dados = Commando.ExecuteReader();
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
10
48.
49.
50.
51.
}
catch
{
return nome;
}
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71. }
Mecnica:
Na subclasse, cria-se um atributo privado do tipo da superclasse.
Modificam-se os mtodos da subclasse para fazerem uso do
atributo privado criado.
Modifica-se a subclasse retirando sua classificao de classe
filha.
Exemplo: A classe Calculos possui vrios mtodos responsveis por realizar os mais diversos clculos requeridos em um
sistema de contas. A classe Emprestimos, calcula vrios tipos
de emprstimos e outras coisas associadas ao ato de fornecer
crdito a clientes. A Listagem 5 mostra a classe Emprestimos
e um mtodo em especial.
Um problema com essa hierarquia de classes, onde a classe
Emprestimos a subclasse da superclasse Calculos, que apenas
uma parte da classe Calculos est sendo herdada. Isso fica visvel
ao analisar-se o mtodo CalcularRiscoEmprestimo, que necessita do resultado provido pelos mtodos CalcularPorcentagem
e CalcularMedia, ambos pertencentes a classe Calculos.
Para remover esta herana usa-se uma delegao. Para isso,
cria-se um atributo privado da classe Calculos dentro da classe
Emprestimos, conforme Listagem 6.
while (dados.Read())
{
nome = Convert.ToString(dados[0]);
}
dados.Close();
return nome;
1.
2.
3.
4.
5.
6.
Desen volvimento
Remover Parmetro
Esta refatorao pertencente ao grupo de refatoraes
classificadas como Tornando as Chamadas de Mtodos Mais
Simples.
Nome da refatorao: Remover Parmetro.
Resumo: Alguns mtodos possuem parmetros que no
esto sendo usados. Neste contexto, aplica-se esta refatorao
e remove-se o parmetro.
Motivao: Alguns mtodos apresentam vrios parmetros.
Aps algumas mudanas nesse cdigo, pode ser que alguns desses parmetros no estejam mais sendo utilizados, mas esto presentes porque alguns desenvolvedores julgam que remov-lo no
necessrio, dado que posteriormente podem precisar dele.
Mecnica:
Analisando o mtodo que contm o parmetro que deseja
remover, certifique-se que realmente ele no est sendo usado,
inclusive por algum cdigo que o altere em uma hierarquia
de classes.
Crie um novo mtodo, removendo o parmetro desnecessrio.
Copie o corpo do mtodo com parmetro para o corpo do
mtodo recm criado e remova o mtodo antigo.
Execute seus testes.
O contedo necessrio para que o desenvolvedor possa
entender como se d o processo de refatorao para o padro
Decorator, atravs da refatorao para padres Mover Embelezamento para Decorator foi apresentado at este momento,
restando agora a apresentao da tcnica de refatorao para
padres que conta com um exemplo prtico.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
1.
2.
3.
4.
5.
6.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
11
12
27.
28.
29.
30.
31.
32.
33.
34.
35. }
if (ExcluirnoBanco(id))
{
return true;
}
else
{
return false;
}
Certifica-se que o esquema de delegao est correto, aplicando algumas modificaes. Caso necessrio, utiliza-se ainda
a refatorao Remover Parmetro.
Execute testes.
Exemplo: O exemplo a ser utilizado bem simples, para
permitir um maior foco no processo de refatorao para o
padro Decorator, dado que os exemplos existentes na literatura tcnica sobre este padro de projeto alguma vezes so
complexos. Comeando o processo, ser criada uma classe que
ser responsvel por carregar o cdigo de embelezamento da
classe Cliente.
A classe Cliente por sua vez foi definida em um sistema
de pequeno porte, com a responsabilidade inicial, e que se
manteve nica por um tempo considervel, que era apenas de
carregar os mtodos responsveis por manter os clientes, no
caso criar, editar, excluir e consultar. Posteriormente, novas
funcionalidades foram inseridas. Neste processo de mover o
embelezamento para o decorador, ser movido apenas o comportamento que faz uma mudana no objeto cliente, alterando
sua categoria. O primeiro passo envolve a criao de uma classe
que ser responsvel por carregar o embelezamento. Ela ir
herdar da classe Cliente. A Listagem 8 mostra a classe Cliente,
e a Listagem 9 mostra a declarao da classe decoradora.
Toda lgica pertencente ao embelezamento que se deseja
mover, deve ser levado para a classe definida na Listagem 9.
O resultado pode ser visto na Listagem 10.
Certificado que tudo funciona como antes, deve-se agora aplicar Substituir Herana por Delegao, removendo a definio
de herana. A Listagem 11 mostra as mudanas realizadas na
Desen volvimento
mas como algumas vezes isso no ocorre, tem-se as refatoraes que permitem que esses problemas sejam resolvidos.
Com o conhecimento sobre a tcnica de refatorao para o
padro Decorator o desenvolvedor poder, a partir da leitura,
ser capaz de separar cdigo de responsabilidade bsica de uma
classe de cdigo de embelezamento.
Referncias
1. GAMMA, Erich, 2000. Padres de Projeto: solues reutilizveis de software orientado a
objetos, 1ed. Porto Alegre: Bookman, 2000.
2. KERIEVSKY, Joshua. Refatorao para Padres, 1ed. Porto Alegre: Bookman, 2008.
3. FOWLER, Martin. Refatorao: aperfeioando o projeto de cdigo existente, 1ed. Porto Alegre:
Bookman, 2004.
Concluso
Feedback
eu
www.devmedia.com.br/esmag/feedback
13
sobre e
s
edio
ta
D
s
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Computao em Nuvem
Uma aplicao prtica usando o Google App Engine
14
m departamentos de Tecnologia
da Informao, h cerca de duas
dcadas atrs, j se agrupavam
computadores de forma a simular um
nico computador com maior capacidade computacional. A clusterizao,
como chamada, permitiu a comunicao entre computadores que, neste
contexto, so tambm denominados ns,
equilibrando a demanda computacional.
Usando softwares de gerenciamento de
clusters, os processos so executados na
CPU (Central Processing Unit - Unidade
Central de Processamento), com maior
disponibilidade de processamento naquele instante.
Em 1990, surge uma nova tecnologia, conhecida por Grid Computing, ou
Computao em Grade, que teve como
premissa uma analogia com o fornecimento de energia eltrica. Se recursos
como energia podem ser fornecidos por
Este artigo apresenta o processo de desenvolvimento de uma aplicao Web que faz uso da plataforma de desenvolvimento App Engine do Google. O
aplicativo a ser desenvolvido oferece os recursos de
um dicionrio da lngua portuguesa e um tradutor
Portugus/Ingls e Ingls/Portugus.
Desen volvimento
15
Para o desenvolvimento desta aplicao foi utilizado o ambiente de desenvolvimento gratuito Eclipse SDK (Software Development Kit - Kit de Desenvolvimento de Software), verso 3.6.0,
cujo download encontra-se disponvel em http://www.eclipse.
org/downloads/, pois existe um plugin para este ambiente que
possibilita o desenvolvimento e o upload das aplicaes para a
nuvem do Google de forma mais fcil.
Aps a instalao do Eclipse, deve-se proceder a instalao
do plugin para o Eclipse da App Engine, de acordo com os
seguintes passos:
Passo 1: No menu Help, clicar em Install New Software.
Passo 2: Em Workwith, conforme Figura 3, colar a url: http://
dl.google.com/eclipse/plugin/3.6 e clicar em Add....
Passo 3: Selecione todos os checkboxes e em seguida no boto
Next (Figura 4) para a instalao do plugin, do Google App
Engine Java SDK e do Google Web Toolkit SDK.
Passo 4: Na prxima tela checar se os 3 itens a serem instalados, conforme definido anteriormente esto presentes; se
sim, clique em Next.
Passo 5: Selecionar I accept the terms of the license agreements
e, em seguida, clique em Finish (Figura 5).
Passo 6: Aps a instalao, clicar em Restart Now para
reiniciar o Eclipse e concluir instalao do plugin do Google
App Engine.
Aps seguir esses passos, o ambiente de desenvolvimento j
est pronto para a criao de aplicaes usando a Google App
Engine. Ao reiniciar o Eclipse, sero exibidos trs novos cones,
conforme a Figura 6.
Nota
16
possvel desenvolver uma aplicao sem a utilizao desse ambiente especfico, sendo
necessrio apenas o uso do SDK do Google App Engine para Java o download encontra-se
em http://code.google.com/intl/pt-BR/appengine/downloads.html.
Desen volvimento
17
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
18
Passo 3: Na prxima tela, clique no boto Directory... e indique o diretrio da jdk instalada, de acordo com a Figura 12
e clique no boto Finish.
Como o arquivo index.html foi renomeado, necessria a
alterao do arquivo web.xml que referencia o arquivo que
ser a pgina inicial do sistema, conforme pode ser visto na
Figura 13.
Em seguida deve-se criar uma nova pgina html, com o nome
cabecalho.html, que contm os links para todas as pginas da
aplicao, e cujo cdigo fonte encontra-se na Listagem 2.
Em seguida, deve-se efetuar a criao de uma nova pgina
html, com o nome rodape.html, que ser o rodap padro
para todas as pginas da aplicao e cujo cdigo fonte
encontra-se na Listagem 3.
Desen volvimento
O prximo passo ser a criao do arquivo style.css, responsvel pelos estilos que sero aplicados aos elementos da
aplicao. Esta folha de estilos foi retirada do site Free CSS
Templates, sendo necessrios apenas alguns ajustes para que
ela se adequasse aplicao em questo. Alguns fragmentos
podem ser visualizados na Listagem 4.
Listagem 2. cabecalho.html
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Listagem 3. rodape.html
01 </div>
02 <div id=footer>
03 <p> - 2010 - Gabriella Castro - </p>
04 </div>
05 </body>
06 </html>
19
Listagem 4. style.css
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
...
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License
*/
body {
margin: 0 auto;
padding: 0;
background: #FFFFFF;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #3C3D3F;
}
h1, h2, h3 {
margin: 0;
padding: 0;
font-weight: normal;
color: #FF3000;
}
h1 {
font-size: 2em;
}
#wrapper {
padding: 0;
}
/* Header */
#header {
overflow: hidden;
width: 1000px;
height: 60px;
margin: 0px auto 20px auto;
}
/* Logo */
#logo {
float: left;
width: 300px;
margin: 0;
padding: 0;
color: #000000;
Listagem 5. dicionario.jsp
01 <%@include file=cabecalho.html%>
02 <script type=text/javascript src=js/dicionario.js></script>
03 <div id=page>
04 <h3>Dicionrio</h3>
05 <div id=content>
06 <div class=post>
07 <h2 class=title><a href=#>Digite a palavra:</a></h2>
08 <br />
09 <input type=text id=palavra></input>
10 <br /><br />
11 <button id=search-submit class=botao
12 onclick=procuraPalavra(palavra.value)>
13
Buscar
14 </button>
15 <br />
16 <div class=entry>
17
<span id=resultado></span>
18 </div>
19 </div>
20 </div>
21 <div style=clear: both;> </div>
22 </div>
23 <%@include file=rodape.html %>
20
63 }
64 #logo h1 {
65 letter-spacing: -1px;
66 font-size: 2.8em;
67 color: #0C0C0C;
68 }
...
83 #logo a {
84 border: none;
85 background: none;
86 text-decoration: none;
87 color: #45302C;
88 }
...
121 /* Menu */
122 #menu {
123 float: right;
124 width: 600px;
125 }
126 #menu ul {
127 margin: 0px;
128 padding: 0px 0px 0px 15px;
129 list-style: none;
130 }
131 #menu li {
132 float: left;
133 }
134 #menu a {
135 display: block;
136 float: left;
137 height: 37px;
138 padding: 13px 30px 0px 30px;
139 text-decoration: none;
140 text-transform: uppercase;
141 font-family: Arial, Helvetica, sans-serif;
142 font-size: 14px;
143 font-weight: bold;
144 color: #0C0C0C;
145 }
Desen volvimento
Listagem 6. dicionario.js
Listagem 8. tradutor.js
01 var xmlhttp;
02 function procuraPalavra(palavra) {
03 xmlhttp=null;
04 if (window.XMLHttpRequest){
05 //Para IE7, Firefox, Opera, etc.
06 xmlhttp=new XMLHttpRequest();
07 }
08 else if (window.ActiveXObject) {
09 //Para IE6, IE5
10 xmlhttp=new ActiveXObject(Microsoft.XMLHTTP);
11 }
12 if (xmlhttp!=null){
13 xmlhttp.onreadystatechange=status;
14 var url = /servletdictionary?word=+palavra;
15 xmlhttp.open(GET,url,true);
16 xmlhttp.send(null);
17 }
18 else {
19 alert(Seu navegador no oferece suporte a XMLHTTP.);
20 }
21 }
22 function status() {
23 if (xmlhttp.readyState==4){
24 // 4 = loaded
25 if (xmlhttp.status==200){
26 // 200 = OK
27 d
ocument.getElementById(resultado).innerHTML=
28 xmlhttp.responseText;
29 }
30 else{
31 alert(Erro ao acessar o dicionrio: + xmlhttp.statusText);
32 }
33 }
34 }
01 var xmlhttp;
02 function procuraPalavra(palavra, lingua) {
03 xmlhttp=null;
04 if (window.XMLHttpRequest){
05 //Para IE7, Firefox, Opera, etc.
06 xmlhttp=new XMLHttpRequest();
07 }
08 else if (window.ActiveXObject) {
09 //Para IE6, IE5
10 xmlhttp=new ActiveXObject(Microsoft.XMLHTTP);
11 }
12 if (xmlhttp!=null){
13 xmlhttp.onreadystatechange=status;
14 var url = /servletdictionary?word=+palavra+&lang=+lingua;
15 xmlhttp.open(GET,url,true);
16 xmlhttp.send(null);
17}
18 else {
19 alert(Seu navegador no oferece suporte a XMLHTTP.);
20 }
21 }
22 function status() {
23 if (xmlhttp.readyState==4){
24 // 4 = loaded
25 if (xmlhttp.status==200){
26 // 200 = OK
27 document.getElementById(resultado).innerHTML=
28 xmlhttp.responseText;
29 }
30 else{
31 alert(Erro ao acessar o tradutor: + xmlhttp.statusText);
32 }
33 }
34 }
35 function getValue(radio) {
36 var obj = document.getElementById(lingua);
37 obj.value=radio;
38 }
Listagem 7. tradutor.jsp
21
Listagem 9. ServletDictionary.java
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package clouddictionary;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.util.ArrayList;
import java.net.URLEncoder;
33
34
@SuppressWarnings(serial)
public class ServletDictionary extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String resultado = ;
resp.setContentType(text/plain);
try {
String palavra = req.getParameter(word);
String language = req.getParameter(lang);
if (palavra == null)
throw new Exception(Informe a palavra a ser buscada.);
palavra = palavra.trim();
if (palavra.length() == 0)
throw new Exception(Informe a palavra a ser buscada.);
String busca=;
if (language == null){
busca = http://michaelis.uol.com.br/moderno/portugues/
index.php?lingua=portugues-portugues&palavra=;
}
else{
if (language.equals(1)){
busca = http://michaelis.uol.com.br/moderno/portugues/
index.php?lingua=portugues-ingles&palavra=;
}
41
42
43
44
45
46
47
48
49
50
51
52 }
53 catch (Exception ex) {
54
resultado = Erro: + ex.getMessage();
55
resp.getWriter().println(resultado);
56 }
57 }
58 @Override
59 public void doPost(HttpServletRequest req, HttpServletResponse resp)
60 throws ServletException, IOException {
61 doGet(req, resp);
62 }
63 }
35
36
37
38
39
40
else if (language.equals(2)){
busca = http://michaelis.uol.com.br/moderno/portugues/
index.php?lingua=ingles-portugues&palavra=;
}
}
String a = URLEncoder.encode(palavra,iso-8859-1);
busca += a;
URL url = new URL(busca);
BufferedReader reader = new BufferedReader(new InputStreamReader
(url.openStream()));
StringBuffer response = new StringBuffer();
String line;
ArrayList lines = new ArrayList();
while ((line = reader.readLine()) != null) {
lines.add(line);
}
String wishedLine = (String) lines.get(284);
response.append(wishedLine);
reader.close();
resultado = response.toString();
resp.getWriter().println(resultado);
22
24
</tr>
25
<tr>
26
<td>
27
Mensagem:
28
</td>
29
<td>
30
<textarea name=mensagem id=mensagem cols=19>
31
</textarea><br/>
32
</td>
33
</tr>
34
<tr>
35
<td colspan=2>
36
<input type=reset class=botao value=Limpar>
37
<input type=submit class=botao value=Enviar>
38
</td>
39
</tr>
40
</table>
41
</form>
42 </div>
43 </div>
44 <div style=clear: both;> </div>
45 </div>
46 <%@include file=rodape.html %>
Desen volvimento
Executando a Aplicao
01 function validaForm(){
02 d = document.form_contato;
03 if (d.nome.value == ){
04 alert(O campo + d.nome.name + deve ser preenchido!);
05 d.nome.focus();
06 return false;
07 }
08 if (d.email.value == ){
09 alert(O campo + d.email.name + deve ser preenchido!);
10 d.email.focus();
11 return false;
12 }
13 parte1 = d.email.value.indexOf(@);
14 parte2 = d.email.value.indexOf(.);
15 parte3 = d.email.value.length;
16 if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
17 alert (Email invlido!);
18 d.email.focus();
19 return false;
20 }
21 if (d.mensagem.value == ){
22 alert (O campo + d.mensagem.name + deve ser preenchido!);
23 d.telefone.focus();
24 return false;
25 }
26 return true;
27 }
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
package clouddictionary;
import java.io.IOException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.http.*;
@SuppressWarnings(serial)
public class ServletContato extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType(text/plain);
try {
String nome = req.getParameter(nome);
String email = req.getParameter(email);
String msgm = req.getParameter(mensagem);
String mensagem = Nome: + nome + \n +
Email: + email + \n +
Mensagem: + msgm;
23
24
25
26
27
28
29
30
31
32 }
33 catch (Exception ex) {
34
resp.sendRedirect(contatoErro.jsp);
35 }
36 }
37 @Override
38 public void doGet(HttpServletRequest req, HttpServletResponse resp)
39 throws ServletException, IOException {
40 doPost(req, resp);
41 }
42 }
23
01
02
03
04
05
06
07
08
09
10
01
02
03
04
05
06
07
08
09
10
11
12
13
24
Desen volvimento
Concluso
Este artigo abordou a criao de uma aplicao real que se
encontra em funcionamento na nuvem do Google e faz uso de
sua plataforma, a App Engine, mostrando que vivel e que a
plataforma, mesmo sendo gratuita, de grande utilidade e funciona nos moldes propostos pelo paradigma da Computao
em Nuvem. Vale ressaltar que atualmente a plataforma tem
como desvantagem a limitao quanto ao uso de linguagens
de programao (permite apenas Phyton e Java), porm oferece
25
Referncias
COSTA, Gabriella Castro Barbosa. CloudDictionary, 2010. Disponvel em: <http://gabidictionary.
appspot.com>.
GOOGLE. Top ten advantages of Googles cloud, 2010f. Disponvel em: <http://www.google.com/
apps/intl/en/business/cloud.html>.
IRANI, Romin K. Google App Engine Java Experiments. [S.I.]: Romin K. Irani, 2010.
MELL, Peter; GRANCE, Tim. The NIST Definition of Cloud Computing, 2009. Disponvel em: <http://
csrc.nist.gov/groups/SNS/cloud-computing/>.
Links
26
Feedback
eu
sobre e
s
RITTINGHOUSE, John; RANSOME, W; JAMES, F. Cloud Computing. [S. l.]: CRC Press, 2009.
D
s
MILLER, Michael. Cloud Computing: Web-Based Applications That Change the Way You Work and
Collaborate Online. Indianapolis: Que, 2009.
edio
ta
GOOGLE. Bigtable: A Distributed Storage System for Structured Data, 2010c. Disponvel em:
<http://labs.google.com/papers/bigtable.html>.
Desen volvimento
27
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
28
Estudo de Caso
O exemplo de aplicao do mtodo descrito a seguir trata da automao de um
processo de negcio de uma instituio
Proje to
pela execuo de cada tarefa indicado por sua cor. Observe que todas as tarefas so inteiramente manuais ou
exigem interao de uma pessoa com um sistema.
Aps o levantamento do processo atual, devem ser detectados pontos de melhoria e oportunidades de automao de
atividades manuais. Desta maneira, o Analista de Processos
prope um modelo de processo to-be, contendo as melhorias e tarefas automatizadas que visaram o atendimento
s necessidades de negcio levantadas. Neste exemplo,
o Analista de Processo automatiza parte do processo na
plataforma BPM, em que o fluxo do processo orquestrado
pela plataforma e apoiado por um conjunto de servios.
O diagrama do processo to-be pode ser visualizado na
Figura 2. Observe que nesta proposta, uma parte das
tarefas atribuda ao papel Sistema, que representa a
plataforma BPM que orquestra as chamadas a servios e
tarefas humanas.
Normalmente, o modelo de negcio pode ser composto por:
diagrama do processo de negcio, documento de Especificao de Tarefas e descrio textual de regras de negcio.
Complementando o diagrama do processo, o Analista
de Processo elabora uma descrio textual de cada tarefa, detalhando os passos envolvidos em sua execuo.
A Tabela 1 apresenta as descries de cada tarefa do
processo to-be.
O Atendente da Agncia preenche um formulrio Web com os dados cadastrais do cliente (nome, CPF/CNPJ, endereo, telefone, e-mail, etc.). O formulrio valida
os dados inseridos, como formato de CPF, CNPJ, etc.
O Sistema envia um e-mail para o cliente informando que seu cadastro j existe no banco.
O Sistema consulta os servios do Serasa e do SPC para verificar a situao de crdito do CPF ou CNPJ do cliente.
O Sistema envia um e-mail para o cliente informando que seu cadastro foi negado, pois sua situao de crdito encontra-se irregular.
O Sistema verifica quais documentos devem ser apresentados obrigatoriamente pelo cliente de acordo com seu tipo (pessoa fsica ou jurdica).
O Atendente da Agncia recebe os documentos fsicos do cliente e digitaliza, para que o Sistema armazene uma cpia eletrnica dos documentos.
Conferir documentos
O Back-Office analisa os documentos digitalizados e verifica se todos os documentos obrigatrios foram entregues e so vlidos.
Reagendar visita
O Atendente da Agncia telefona para o cliente por telefone e agenda uma visita para que o cliente traga os documentos necessrios agncia.
O Sistema envia um e-mail para o cliente informando que seu cadastro foi realizado com sucesso.
29
Operao Candidata
Enviar e-mail
Consultar Serasa
Consultar SPC
Enviar e-mail
Armazenar documento
Conferir documentos
(nenhuma operao)
Reagendar Visita
(nenhuma operao)
Enviar e-mail
Anlise de Gap
Aps a identificao dos servios candidatos, o mtodo
prossegue com a Anlise de Gap. O objetivo bsico desta
anlise localizar, nas aplicaes existentes (legado), as funes necessrias para os servios candidatos, chegando a um
cenrio de reuso para cada operao candidata.
Para analisar os cenrios de reuso, o mtodo orienta a
consultar um repositrio de servios e recursos reusveis
ou fontes de documentao das aplicaes existentes. O cenrio mais comum encontrar uma arquitetura que ainda
no possui um repositrio de servios reusveis. Neste caso
recorre-se documentao dos sistemas legados. Especificamente neste cenrio, o legado existente o Sistema de
Cadastro de Clientes.
Como resultado desta anlise, foram obtidos os cenrios de
reuso apresentados na Tabela 3.
A lgica necessria para as operaes Gravar dados de cliente e Verificar existncia de cliente do servio Cliente j
eram realizadas por uma aplicao legada, neste caso o componente GerenciadorPessoa pertencente ao Sistema de Cadastro
de Clientes. Entretanto, a operao Verificar existncia de
cliente era realizada apenas parcialmente pelo componente
GerenciadorPessoa, j que este possua apenas um mtodo
de busca de cliente para realizar esta verificao.
As operaes do servio Consulta Crdito j so executadas por servios externos do Serasa e do SPC e podem ser
reusados diretamente.
Verificou-se tambm a existncia de uma biblioteca de classes utilitrias LibCorporativa que continha mtodos que
realizavam as operaes Validar nmero de CPF e Validar
nmero de CNPJ do servio Validao e Enviar e-mail
do servio Email.
Os cenrios de reuso analisados devem ser documentados
juntamente com as descries das operaes.
Anlise de Realizao
30
Proje to
Servio Candidato
Operao Candidata
Verificar existncia de cliente
Cliente
Documento
Consulta Crdito
Validao
Email
Cenrio de Reuso
Operao parcialmente realizada por aplicao legada (componente GerenciadorPessoa do Sistema de
Cadastro de Clientes)
Operao no existente
Operao realizada por aplicao legada (componente GerenciadorPessoa do Sistema de Cadastro de
Clientes)
Operao no existente
Operao no existente
Operao realizada por servio existente (servio de consulta do Serasa)
Operao realizada por servio existente (servio de consulta do SPC)
Operao realizada por aplicao legada (biblioteca de classes LibCorporativa)
Operao realizada por aplicao legada (biblioteca de classes LibCorporativa)
Operao realizada por aplicao legada (biblioteca de classes LibCorporativa)
Servio Cliente
Para realizar este servio, decidiu-se criar um novo Web
Service que seria responsvel por invocar os mtodos do
componente GerenciadorPessoa do Sistema de Cadastro
de Clientes e implementar as funes das operaes no
existentes. No caso da operao Verificar existncia de
cliente, o Web Service dever implementar a lgica necessria para retornar o resultado desejado.
Servio Documento
Como as duas operaes deste servio no existiam, um
novo Web Service ser implementado para executar suas
funes. Como este servio armazena algumas informaes
persistentes (como os documentos digitalizados), deve ser
utilizada uma base de dados para apoiar o servio.
Especificao de Servios
A atividade de especificao de servios tem como objetivo
detalhar as classes de mensagens e as interfaces de servios,
inclusive com a descrio tcnica de cada operao, para chegar
aos artefatos que comporo o contrato do servio.
Como as operaes foram descritas apenas textualmente, neste
momento h a necessidade de se definirem os parmetros das
operaes, permitindo a identificao de algumas mensagens.
Por exemplo, para a operao Gravar dados de cliente do
servio Cliente, definiu-se que um parmetro de entrada da
operao seria uma mensagem com vrios campos representando os dados do cliente e o parmetro de sada (ou de retorno)
seria um indicador de sucesso da gravao (boolean).
Desta maneira, devem-se definir as mensagens utilizadas nas
operaes de servios a partir das definies do processo. Para
a implementao dos Web Services, as mensagens devem ser
formalmente modeladas como esquemas XSD (XML Schema
Definition).
O Arquiteto de Servios deve definir tambm informaes
adicionais nos contratos de servios, tais como:
Especificao do tipo de dado de cada atributo das classes
de mensagens;
Especificao do tipo de dados de cada parmetro de
operao;
Seleo dos parmetros das operaes com base na lgica a
ser implementada;
31
Servio SvcClientePF
A operao Validar existncia de cliente pode ser considerada como possuindo alto potencial de reuso, podendo ser reusada por outros processos de negcio. Entretanto, para tornar
o servio mais reusvel, pode-se adicionar outras operaes
interface, j existentes no componente GerenciadorPessoa
encapsulado pelo servio, como Remover dados de cliente
e Obter cliente por nome.
As operaes podem ser especificadas no contrato do servio,
mas no seriam implementadas imediatamente no projeto em
questo. As atividades de implementao do projeto podem
focar somente nas operaes necessrias para suportar o processo de negcio Cadastro de Cliente e as outras operaes
podem ser implementadas como parte de outro projeto, com
esforo e prazo dimensionados para tal.
32
Servios Documento
O servio foi considerado com nvel de granularidade de
negcio por trabalhar com uma entidade relevante para o
processo de negcio documento. A avaliao do servio
constatou sua autonomia, pois toda sua lgica estava contida
em um novo Web Service, sem dependncia com outros sistemas externos.
Orquestrao de Servios
Durante a orquestrao de servios, o modelo de processo
to-be elaborado no incio do projeto convertido em um modelo
de implementao, que deve ser trabalhado para tratar todas
as regras de negcio modeladas e adequar-se aos servios
especificados.
O fluxo de trabalho do processo pode ser automatizado na
plataforma BPM utilizando-se a linguagem WS-BPEL (Web
Services Business Process Execution Language). Alm da prpria
estrutura do processo (tarefas, decises e conexes), necessrio tambm implementar no processo os seguintes aspectos:
Variveis;
Lgica de tratamento de dados;
Lgica de deciso nos ns do tipo Choice (if-then-else);
Dados de correlao de instncias de processo;
Tempo de expirao de atividades com tal requisito;
Mapeamento das interfaces geradas no WS-BPEL para as
interfaces WSDL dos servios utilizados pelo processo.
Proje to
Concluso
ERL, T. SOA: Principles of Service Design. Estados Unidos: Prentice Hall, 2007. 608 p.
FUGITA, H. S.; HIRAMA, K. MAPOS: Mtodo de Anlise e Projeto Orientado a Servios. Dissertao
(Mestrado) Ps-Graduao em Engenharia Eltrica, Escola Politcnica, Universidade de So
Paulo, So Paulo, 2009.
IBM. Rational Method Composer, version 7.2. IBM Rational, 2007.
KRAFZIG, D.; BANKE, K.; SLAMA, D. Enterprise SOA. Estados Unidos: Prentice Hall, 2004. 408 p.
MARKS, E. A.; BELL, M. Service Oriented Architecture: A Planning and Implementation Guide for
Business and Technology. Estados Unidos: John Wiley & Sons, 2006. 384 p.
PAPAZOGLOU, M. P.Web Services: Principles and Technology. Estados Unidos: Prentice Hall, 2007.
784 p.
PAPAZOGLOU, M. P.; VAN DEN HEUVEL, W. J. Service-Oriented Design and Development
Methodology. International Journal of Web Engineering and Technology (IJWET), v. 2, no. 4, pp.
412-442, 2006.
ZIMMERMANN, O. et al. Analysis and Design Techniques for Service-Oriented Development and
Integration. IBM Press, 2005.
Feedback
eu
www.devmedia.com.br/esmag/feedback
33
sobre e
s
D
s
Implementao e Teste
Referncias
edio
ta
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
34
desenvolvimento de qualquer
software, exceto programas
muito simples, uma tarefa
bastante complexa. Esse fato se tornou
evidente com a crise de software, o
que originou o conceito de engenharia
de software como uma abordagem sistemtica, disciplinada e quantificvel
para o desenvolvimento, manuteno e
descarte de software.
A engenharia de software surgiu inicialmente mais como uma promessa do
que uma realidade. De fato, muitos dos
problemas ligados ao desenvolvimento
e manuteno de software continuam
sem soluo, apesar de muitos conceitos
terem evoludo.
Entender o que significa manuteno
de software, e principalmente a abrangncia do significado do termo, constitui passo fundamental para o estudo
e aprofundamento de solues para os
problemas atrelados a essa tarefa.
Neste contexto, este artigo foca na discusso sobre as dificuldades encontradas
M anuten o
Definies
A atividade de manuteno de software caracterizada pela
modificao de um produto de software j entregue ao cliente,
para a correo de eventuais erros, melhora em seu desempenho, ou qualquer outro atributo, ou ainda para adaptao
desse produto a um ambiente modificado.
Embora a definio trate genericamente qualquer produto de
software, existem diferenas entre a manuteno de softwares
com propsitos distintos.
Uma primeira classificao representa aqueles softwares
construdos com base em uma especificao rgida e bem
definida, cujos resultados esperados so bem conhecidos. Por
exemplo, um software construdo para realizar operaes
com matrizes (adio, multiplicao e inverso). Nesse tipo
de software, uma vez que tenha sido construdo considerando
a correta implementao do mtodo, dificilmente haver a
necessidade de manutenes.
J em uma segunda classificao, so agrupados os softwares
que constituem implementaes de solues aproximadas
para problemas do mundo real, uma vez que solues completas somente so conseguidas na teoria nesses casos. Como
exemplo, pode-se citar um jogo de xadrez. Embora suas regras
sejam bem definidas, no possvel construir um software que
calcule a cada passo todos os possveis movimentos de peas
do tabuleiro, de forma a determinar o melhor movimento. Isso
porque o nmero de movimentos possveis muito grande
para ser calculado em um intervalo de tempo relativamente
curto. A tcnica utilizada para desenvolver esse tipo de soluo
baseia-se em descrever o problema de forma abstrata e ento
definir os requisitos de software a partir dessa abstrao.
Percebe-se que esse tipo de sistema j abre espao para diferentes interpretaes por parte do desenvolvedor, o que tende
a produzir software com maior necessidade de manuteno
do que quando comparado aos da classificao anterior. Por
considerar uma abstrao para especificao de requisitos, a
35
Tipos de Manuteno
As aes ligadas atividade de manuteno de software
foram classificadas de acordo com sua natureza em trs categorias: corretivas, adaptativas e perfectivas.
Manutenes do tipo corretivas visam corrigir defeitos
de funcionalidade, o que inclui acertos emergenciais de
programa. Pfleeger (2001) expe um exemplo desse tipo de
manuteno, que consiste em um usurio apresentando um
problema de impresso em um relatrio. O nmero de linhas
impresso por folha muito grande, o que causa sobreposio
de informaes. O problema foi identificado como uma falha no
driver da impressora, provocando a necessidade de se alterar
o menu do relatrio para aceitar um parmetro adicional que
determina o nmero mximo de linhas impressas por folha.
Manutenes do tipo adaptativas referem-se a adequar o
software ao seu ambiente externo. O exemplo apontado por
Pfleeger (2001) ilustra bem essa categoria. Suponha um gerenciador de banco de dados, que faz parte um sistema maior de
hardware e software. Em uma atualizao do gerenciador, os
programadores perceberam que as j existentes rotinas de acesso a disco precisavam agora de mais um parmetro adicional.
Essa manuteno corresponde a uma manuteno adaptativa,
uma vez que teve por finalidade adequao do software ao seu
ambiente e no a correo de um defeito.
Manutenes do tipo perfectivas tm por objetivo acrescentar
novos recursos de funcionalidade ao software, normalmente
em razo de solicitaes dos usurios. Significam ainda rePlanejada
No-Planejada
Reativa
Corretiva
Adaptativa
Emergencial
Pr-ativa
Perfectiva
36
Estudo de Caso
A partir de agora apresentaremos um estudo de caso que foi
conduzido com o objetivo de verificar os problemas de manuteno de software existentes em uma organizao empenhada
no desenvolvimento de software comercial. Essa organizao
mantm uma base de dados contendo registros histricos de
manutenes efetuadas sobre um sistema de informao por
ela desenvolvido e mantido.
Descrio da Organizao
Criada em 1993, a organizao estudada corresponde a uma
software-house, que desenvolve e mantm alguns softwares
voltados rea mdica e de sade. composta por uma unidade na cidade de So Carlos - SP, responsvel pelo desenvolvimento e manuteno, e outra unidade na cidade de So Paulo,
dedicada venda e consultoria.
O software estudado corresponde a um sistema de porte
mdio voltado odontologia, mais precisamente ao gerenciamento de operadoras odontolgicas, sendo, no entanto,
um produto com caractersticas tpicas grande maioria dos
softwares que se sujeitam a gerenciar algum ramo de atividade
comercial. So exemplos de recursos oferecidos pelo software:
cadastro de clientes, cadastro de fornecedores, emisso de
boletos bancrios, controle financeiro, relatrios analticos
complexos, controle de estoques, suporte a multiusurio, controle de permisso de acesso a diferentes mdulos, controle
de fluxo de caixa, emisso de faturas, emisso de relatrios
especficos para prestao de contas a rgos de fiscalizao
do governo, integrao com sistemas web etc.
M anuten o
Relativamente ao nmero de clientes, no momento da pesquisa, existiam 41 clientes (operadoras de odontologia), envolvendo desde organizaes de pequeno porte, com at 5.000
associados cada, utilizando o software em cerca de 5 computadores, at empresas maiores, com mais de 50 mquinas em
rede, utilizando o software de maneira simultnea e contando
com at 150.000 associados. Normalmente essas empresas de
maior porte so estruturadas por departamentos, e cada departamento utiliza um mdulo especfico do software.
Dinmica de Manuteno
Neste tpico so abordadas as caractersticas da maneira
de trabalhar da organizao, expondo como registra, altera e
entrega as suas manutenes.
Uma observao inicial se faz necessria, e se refere possvel
confuso entre o que seria uma tarefa de desenvolvimento
e o que seria uma atividade de manuteno, no contexto do
software estudado. De uma forma objetiva, o software aqui
referido encontra-se desenvolvido, uma vez que est em uso
por muitos clientes, ou seja, um produto de software j
entregue ao cliente. Partindo-se desse pressuposto, qualquer
solicitao, seja por parte de clientes, seja por observao de
algum profissional que atue sobre o software, ser classificada
como uma manuteno, ainda que exija criar um mdulo novo
ou refazer um j existente.
Registro de Manutenes
Os registros de manutenes so inseridos na base de dados
de trs formas distintas: (i) pelo prprio cliente, atravs do
sistema de help-desk disponvel no site da organizao; (ii)
pelos consultores da empresa, aps visita ao cliente e levantamento de necessidades de manuteno; (iii) pelos prprios
programadores, que podem identificar necessidades de manuteno medida que evoluem o software. Uma interface
especfica baseada na web foi criada para a insero desses
registros na base.
Cada registro contm diversas informaes, como por exemplo, qual o cliente que solicita, grau de prioridade, quem realizar a manuteno, tempo gasto previsto para a atividade, tipo
de manuteno, status da implementao, datas de insero do
chamado e data prevista para entrega, observaes, descrio
da soluo adotada, entre outras.
Aps o registro de um chamado, sua execuo depender da
anlise de viabilidade, efetuada pelo responsvel pelo produto.
O procedimento adotado est resumido na Figura 2.
Eventualmente, solicitaes de manuteno so consideradas
inviveis, sendo canceladas pelo responsvel por essa avaliao. Uma vez cancelada, esse fato informado ao respectivo
cliente, podendo ser revisada a necessidade para que uma
proposta de manuteno mais adequada seja registrada.
Uma caracterstica do sistema de controle de chamados a
interao que oferece entre mantenedor/cliente. Essa interao
ocorre da seguinte maneira: quando o cliente registra alguma
necessidade de manuteno, automaticamente a equipe de
suporte e o analista responsvel pelos cronogramas e testes,
Pendente
Sim
Em execuo
Sim
Cancelado
Sim
Em testes
No
Em homologao
Sim
Concludo
Sim
Controle de Verses
Os clientes tm sua disposio uma rea privativa no
site da organizao, atravs do qual podem realizar o
37
38
Evidentemente entre a data de estabelecimento de cronograma para os chamados pendentes e a data de liberao da nova
verso, surgem normalmente chamados novos e urgentes, que
no podem esperar at prxima verso. No geral, procura-se
evitar essa situao, mas quando ocorrem, verses intermedirias modificadas a partir da ltima verso oficial, somente
com a alterao urgente ora solicitada, so disponibilizadas e
apenas para o cliente que precisou da manuteno urgente.
Um padro para nomenclatura das verses foi adotado, buscando atrelar a verso ao seu ms de lanamento, bem como
informar o nmero da reviso atual da verso (caso a verso
oficial tenha necessitado de alguma alterao emergencial).
Na Figura 3 ilustrado um exemplo do padro de numerao
adotado.
Os dois ltimos dgitos so incrementados em uma unidade,
medida que a verso for passando por manutenes emergenciais (aquelas que no podem ser acumuladas para a verso do
ms seguinte). No exemplo da Figura 3, a verso em questo
a oficial (reviso 00), do ms de abril de 2007.
A verso de homologao, uma vez testada pelo perodo
de uma semana nos clientes selecionados, e com eventuais
problemas detectados e corrigidos, oficialmente convertida
em uma verso final (oficial), e disponibilizada no site para
todos os clientes, na primeira semana do ms seguinte ao de
testes. Na Figura 4 ilustrado esse processo.
Durante a fase de manuteno no cdigo-fonte, utilizado
um software de controle de verso (Microsoft Source Safe),
que trabalha da seguinte forma: cada desenvolvedor que for
alterar algum arquivo (que faz parte do projeto do software)
realiza uma operao de check-out desse arquivo do repositrio (o qual armazena o projeto todo), ficando nesse momento
responsvel pelo arquivo, impedindo que qualquer outra
pessoa possa realizar check-out do mesmo arquivo. Diz-se
que o arquivo fica travado para o programador x. Somente
quando a manuteno for concluda, o arquivo submetido a
um check-in, voltando para o repositrio e ficando livre para
uso por outro programador.
medida que alteraes vo sendo entregues e disponibilizadas
no repositrio, o analista responsvel, realiza o check-out dos
arquivos alterados e procede com testes preliminares. Uma vez
que a data de liberao da nova verso para homologao se aproxima, esse analista realiza um check-out completo de todo o projeto
do software, e realiza testes gerais, a fim de compor a verso de
homologao para envio aos clientes pr-estabelecidos.
Durante a homologao, eventualmente esses clientes so
acompanhados pessoalmente por algum consultor, ou remotamente via apoio por telefone, e-mail, VNC (software que
permite conexo ao desktop remoto do cliente), entre outros.
Na medida em que problemas so verificados, se forem erros
nas manutenes realizadas para a verso que ser disponibilizada, esses erros so imediatamente corrigidos e a verso de
homologao atualizada. Se forem problemas novos (novas
necessidades de alteraes ainda no previstas), eles so registrados e ento programados para disponibilizao em verses
posteriores do software.
M anuten o
Metodologia
A metodologia utilizada para a execuo do estudo de caso
buscou, por um lado, estudar a base de dados na qual esto
os registros de manuteno, e, por outro lado, entrevistar os
profissionais responsveis pela tarefa de manuteno. A forma
como cada etapa foi conduzida est descrita a seguir.
Valor
Objetivo
Os registros de solicitaes de manuteno incluem desde operaes simples, que resultam em poucos dias para a
implementao, at solicitaes mais complexas, que podem
levar semanas, e at meses, para serem concludas. Solicitaes
desse porte normalmente exigem que o projeto de um ou mais
mdulos seja reestruturado, o que justifica o tempo gasto para
entrega ao cliente.
A distribuio, em termos de dias gastos para a implementao de manutenes, mostrada na Figura 6.
Um estudo do grfico revela que as manutenes de menor
grau de complexidade ocupam a maior parte do tempo dos
mantenedores. No entanto, existem manutenes com complexidade suficiente para exigir mais de dois meses de trabalho.
Observou-se que a grande quantidade de manutenes de
menor complexidade acaba por interferir no tempo de entrega das manutenes mais complexas, gerando atrasos. Isso
ocorre em funo da grande expectativa do cliente no sentido
de obter respostas rpidas, o que fora os mantenedores a
liberar primeiro as manutenes mais simples. Na Figura 7
mostrado qual o grau de prioridade indicado pelo cliente ao
fazer as suas solicitaes de manuteno.
39
40
M anuten o
Problemas Identificados
Aps obter e analisar os dados, foi possvel montar a Tabela 4,
que envolve os principais problemas de manuteno identificados na organizao.
Os problemas, como pode ser observado, foram classificados de
acordo com sua natureza em problemas gerenciais e tcnicos.
Concluses Parciais
Problemas Gerenciais
41
da lista relativamente extensa, optou-se por dividi-la em categorias para promover melhor organizao e facilidade de
leitura. A numerao seqencial atribuda a cada problema
tem o intuito nico de facilitar as referncias posteriores,
no guardando qualquer outro significado. Faz-se necessrio dizer que a separao dos problemas a seguir no
rigorosamente exata, uma vez que muitos deles poderiam
ser classificados em mais de uma categoria.
A relao anterior, embora seguramente no exaustiva,
apresenta de forma geral os principais problemas que
recaem sobre a atividade de manuteno de software.
Outros problemas que eventualmente existam e no foram
citados, so demasiados especficos de certo domnio,
ou fortemente relacionados a algum dos problemas j
citados. Dessa forma, acredita-se que a listagem anterior
seja representativa das dificuldades mais importantes
em manuteno de software, no se prendendo a nenhum
domnio especfico de software.
A norma ISO/IEC 12207 representa um padro internacionalmente adotado que engloba processos para o ciclo de vida
de software. Neste tpico, a norma utilizada para criar uma
relao de causa e conseqncia com os problemas de manuteno de software apresentados anteriormente.
Essa relao se estabelece da seguinte maneira: a norma
apresenta grupos de processos (que por sua vez englobam
diversos outros processos), que visam atingir alguma fase
do ciclo de vida de software, guiando-o com as melhores
prticas. Assim, a no verificao de um grupo de processos,
acarretar problemas para a respectiva fase (e conseqncias
para as futuras).
Dessa maneira, foi possvel a construo da Tabela 7, na qual
so relacionados os grupos de processos da norma, com os problemas de manuteno, procurando estabelecer uma relao de
causa (a no verificao do respectivo grupo) e consequncia
(problema derivado). Para essa distribuio, verificaram-se,
para cada grupo, seus processos e as
determinaes de suas respectivas
Problemas apontados por Lientz e Swanson (1980)
Problemas atuais
tarefas. O no atendimento a uma das
- Registro inexistente ou superficial de manutenes anteriores;
Baixa qualidade da documentao dos sistemas
tarefas do processo, automaticamente
- Documentao insuficiente ou superficial.
relaciona o problema ao processo, e em
Necessidade constante dos usurios por melhorias e novas - Grande expectativa dos usurios;
um nvel mais alto, ao grupo ao qual
funcionalidades
- Falhas de comunicao com o usurio.
esse processo pertence.
- Ausncia de um processo de manuteno de software;
A distribuio grfica das informa- Sobrecarga de tarefas;
Falta de uma equipe de manuteno
es
anteriores est representada na
- Ausncia de manuteno preventiva;
Figura
10.
- Ausncia de um ambiente computacional especfico para manuteno.
Percebe-se,
pela figura anterior, que
- Estimativa de prazo no condizente com a complexidade do software;
Falta de comprometimentos com cronogramas
existe
uma
grande
concentrao de
- Atrasos na entrega.
problemas
relacionados
principal- Baixa motivao entre profissionais de manuteno;
mente
com
fatores
de
ordem
gerencial,
Treinamento inadequado do pessoal de manuteno
- Validao insuficiente de manutenes efetuadas;
ligados
interao
com
pessoas
e
- Falta de compreenso do software e suas estruturas.
processos,
respondendo
por
47,1%
dos
Rotatividade dos profissionais
- Elevada rotatividade de membros e funes dentro da equipe.
problemas.
Tabela 5. Comparao entre problemas de manuteno de software
Dentre os dez grupos de processos,
cinco ficaram sem nenhum problema
relacionado. Os grupos de aquisio e
de fornecimento apresentam uma razo
clara: esto relacionados criao de
um produto de software novo, portanto
fortemente ligadas ao desenvolvimento,
o que no foi considerado. O grupo de
melhoria de processo pode ser visto sob
duas perspectivas, que consideram a
existncia ou no de processos implantados na organizao. Na primeira das
vises, assumindo que a organizao
possua processos implantados, os problemas de manuteno poderiam ser
associados a falhas nesses processos,
alegando-se que seriam essas falhas as
responsveis diretamente pela maioria
dos problemas de manuteno. Isso, no
Figura 10. Distribuio dos problemas nos grupos de processos
42
M anuten o
Fatores de Gerncia
Problema
Referncias
Lientz e Swanson (1980); Dekleva (1992); Dart et al. (2001); Estudo de Caso
04. Viso organizacional diferenciada para a equipe de desenvolvimento e para a equipe de manuteno
06. Software desenvolvido visto pela gerncia como no construdo para a manuteno
08. Contratao de temporrios para auxlio na manuteno leva ao menor controle sobre a atividade
09. Experincias com manutenes anteriores no so disseminadas dentro da prpria organizao e entre novos
Dart et al. (2001); Estudo de Caso
membros da equipe
10. Dificuldade na medio do desempenho da equipe de manuteno
Dekleva (1992)
Dekleva (1992)
Estudo de Caso
Estudo de Caso
Estudo de Caso
Fatores de Infraestrutura
Problema
Referncias
Referncias
Estudo de Caso
Lientz e Swanson (1980); Dekleva (1992) ; Dart et al. (2001); Estudo de Caso
Fatores humanos cliente
Problema
Referncias
29. Falta de compreenso dos usurios a respeito de suas reais necessidades de software
Estudo de Caso
Dekleva (1992)
Fatores de software
Problema
Referncias
Lientz e Swanson (1980); Dekleva (1992); Dart et al. (2001); Estudo de Caso
43
Problemas
Categoria Processos Fundamentais
Grupo de Processos de Aquisio
Grupo de Processos de Fornecimento
Grupo de Processos de Engenharia
(25)
44
Consideraes Finais
Embora tenha se produzido neste artigo uma relao de
problemas com base em apontamentos feitos por outros
autores, e tambm pelo estudo de caso realizado, entende-se que no se trata de uma relao fixa e exaustiva. Em
diferentes abordagens futuras, nomes diferentes podem
ser utilizados para se referirem s mesmas dificuldades.
razovel pensar ainda que novos problemas surjam,
constituindo novas categorias de problemas, distintas
das aqui definidas.
Esse fato, porm, no invalida ou torna de todo desatualizado o que foi exposto, j que a literatura, e tambm
o estudo de caso apresentado, apontam uma relativa
estabilidade entre os problemas mais relevantes ao
longo do tempo.
admissvel, tambm, que o surgimento de novas
tcnicas de programao, novas tecnologias e metodologias, influenciem a forma como as organizaes
trabalham, e nesse caso poderiam reduzir os problemas
aqui apresentados.
Outra observao necessria se faz com relao aos
problemas e os tamanhos de software sobre os quais
incidem. O que ocorre, de fato, que os problemas
apresentados incidem de maneira geral sobre qualquer
tamanho de software, variando apenas a nfase que o
problema representa para cada tamanho de software.
Feedback
eu
edio
ta
www.devmedia.com.br/esmag/feedback
Referncias
Bennett, K. H.; Rajlich, V. T. (2000) Software maintenance and evolution: a roadmap, In: Conference
on The Future of Software Engineering, Limerick, Ireland, June.
Bennett, K. H.; Ramage, M.; Munro, M. (1999) Decision Model for Legacy Systems, IEEE Proceedings
on Software (TSE), v.146, n. 3, p. 153-159.
Bhatt, P.; Shroff, G.; Misra, A. K. (2004) Dynamics of software maintenance, ACM SIGSOFT Software
Engineering Notes, v. 29, n. 5, p. 1-5.
Basili, V. (1990) Viewing Maintenance as Reuse-Oriented Software Development, IEEE Software,
v. 7, n. 1, p. 19-25.
Chapin, N. (1986) Software maintenance: A different view, In: Conference on Software
Maintenance, Orlando, FL, USA, November.
Dart, S.; Christie, A. M.; Brown, A. W. (2001) A Case Study in Software Maintenance, Technical
Report, Carnegie Mellon University.
Dekleva, S. M. (1990)Annual Software Maintenance Survey: Survey Results,Software Maintenance
Association, Vallejo, California, USA.
________. (1992) Delphi study of software maintenance problems, In: Conference on Software
Maintenance, Orlando, FL, USA, November.
De Lucia, A., Pompella, E., Stefanucci, S. (2004) Effort estimation for corrective software
maintenance. In: 14th International Conference on Software Engineering and Knowledge
Engineering, Ischia, Italy, July.
IEEE (1998) Std 1219 IEEE Standard for Software Maintenance, Institute of Electrical and
Eletronic Engineers, New York, NY, USA.
ISO/IEC 12207 (1998) Standard for Information Technology - Software Lifecycle Processes,
International Standard Organization, New York, NY, USA.
ISO/IEC 15504 (2003) Software Process Assessment, International Standard Organization, New
York, NY, USA.
Koskinen, J.; Salminen, A.; Paakki, J. (2004) Hypertext support for the information needs of
software maintainers, Journal of Software Maintenance and Evolution: Research and Practice, v.
16, n. 3 , p. 187-215.
Kung, H.; Hsu, C. (1998) Software Maintenance Life Cycle Model, In: International Conference on
Software Maintenance, Bethesda, Maryland, USA.
Lehman, M. M. (1974) Programs, Cities, Students, Limits to Growth?, In: Imperial College of Science
Technology, London, England, May.
________. (1980) On Understanding Laws, Evolution and Conservation in the Large Program
Life Cycle, Journal of Systems and Software (JSS), v. 1, n. 3, p. 213-221.
________. (1991) Software Engineering, the Software Process and their Support, IEEE
Software Engineering Journal: Special Issues on Software Environments and Factories, v. 1, n. 3,
p. 213-221.
________. (1996) Laws of Software Evolution Revisited. In: 5th European Workshop on
Software Process Technology, Nancy, France, October.
Lientz, B. P.; Swanson, E. B. (1980) Software Maintenance Management,Reading, MA, Addison-Wesley.
Niessink, F. (1999) Software Maintenance Research in the Mire?,In: Annual Workshop on Empirical
Studies of Software Maintenance (WESS99), Oxford, United Kingdom, September.
Pfleeger, S. L. (2001) Software Engineering: theory and practice. Second Edition, New Jersey,
Prentice Hall.
Pigoski, T. M. (1996) Practical Software Maintenance: Best Practices for Managing Your Software
Investment,Willey Computer Publishing.
Polo, M.; Piattini, M.; Ruiz, F.; Calero, C. (1999) Roles in the maintenance process, ACM SIGSOFT
Software Engineering Notes, v. 24, n. 4, p. 84-86.
Polo, M.; Piattini, M.; Ruiz, F. (2003) Using a qualitative research method for building a software
maintenance methodology, Software Practice and Experience, v.32, n. 13, p. 12391260.
Pressman, R. S. (2005) Software Engineering: a practitioners approach, 6.ed., McGrawHill Higher
Education.
Singh, R. (1996). International Standard ISO/IEC 12207 Software Life Cycle Processes, Software
Process Improvement and Practice, vol. 2, p. 3550.
Sneed, H. M. (2003) Critical Success Factors in Software Maintenance, In: International Conference
on Software Maintenance, Amsterdam, The Netherlands, September.
Sommerville, I. (2003) Engenharia de Software, 6.ed., So Paulo, Addison Wesley.
Silva, L.de P.; Santander,V.F.A.(2004)Uma Anlise Crtica dos Desafios para Engenharia de Requisitos em
Manuteno de Software,In:Workshop em Engenharia de Requisitos,Tandil, Argentina, Dezembro.
Souza, S. C. B. de; Neves, W. C. G. das; Anquetil, N.; Oliveira, K. M. de. (2004) Documentao Essencial
para Manuteno de Software II, In: I Workshop de Manuteno de Software Moderna, Braslia,
DF, Brasil, Outubro.
Ulrich, W. M. (1990) The evolutionary growth of software reengineering and the decade ahead.
American Programmer, v. 3, n. 10, p. 14-20.
Visaggio, G. (2001)Assessing the Maintenance Process Through Replicated, Controlled Experiment.
Journal of Systems and Software, v. 44, n. 3, p. 187-197.
Yourdon, e. (1992) Anlise Estruturada Moderna,traduo da terceira edio, Rio de Janeiro, Campus.
45
sobre e
s
Por fim, a relao estabelecida entre os problemas e os grupos da norma, permite uma viso inicial das caractersticas
do processo de ciclo de vida de software que devem ser
tomadas com maior ateno para o contexto de minimizao
de problemas de manuteno de software.
D
s
M anuten o
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
46
Proje to
47
48
A reengenharia
A reengenharia envolve basicamente duas etapas: alguma
forma de engenharia reversa (para se alcanar um nvel mais
alto de abstrao) e a engenharia avante ou reestruturao.
Proje to
O processo de segmentao
Segmentao o processo de reengenharia com mudana
da orientao de procedimental para orientao a objetos,
preservando-se as funcionalidades do software e a linguagem
de programao. Assim, realizada a adaptao do cdigofonte, de acordo com os recursos disponveis na linguagem,
de forma a implement-lo com caractersticas orientadas a
objetos.
A segmentao, como visto anteriormente, pode ser conduzida seguindo-se o mtodo Fusion/RE, sendo o ltimo passo
desse mtodo. Esse passo foi subdividido em quatro partes,
executadas gradualmente e ao fim de cada uma so realizados
testes funcionais com o objetivo de garantir a preservao das
funcionalidades do software. Podemos descrever a segmentao resumidamente, da seguinte forma:
1. So criadas as classes de acordo com o Modelo de Objetos
obtido na terceira fase do Fusion/RE (obteno do MAS). Os
mtodos sem anomalias so diretamente inseridos nas classes
correspondentes. Os mtodos anmalos tm escolhidas as
classes que melhor os representam e, ento, feita a insero.
Alm disso, so inseridas referncias a esses procedimentos
nas classes que esses mtodos alteram e/ou observam;
2. feita a quebra dos mtodos anmalos em vrios sendo
que cada um passa a alterar ou observar apenas uma classe,
qual posteriormente associado;
3. So criados os mdulos que contm as descries das classes
e os prottipos de mtodos associados a elas. Da so criados os
mdulos que contm a implementao de cada classe;
4. So criadas as classes dependentes do tipo de implementao usada, como: pilhas, listas ou rvores.
O processo de segmentao varia de acordo com a linguagem
procedimental utilizada, em relao ao modo de implementao de suas estruturas de dados e dos recursos computacionais
a serem utilizados com o objetivo de tornar o cdigo pseudoorientado a objetos.
Contextualizando a manuteno
A manuteno de software uma das fases mais problemticas de seu ciclo de vida, caracterizando-se por um alto custo
e baixa velocidade de implementao. Porm, uma atividade
inevitvel, principalmente tratando-se de softwares teis, para
os quais os usurios constantemente solicitam mudanas e
agregaes de novas funcionalidades.
Podemos classificar a manuteno de software em quatro
categorias principais:
Manuteno Corretiva: alterao de um software de forma
a corrigir seus defeitos e assim garantir a continuidade de
sua operao;
Manuteno Adaptativa: adio ou modificao de funcionalidades um software para adapt-lo s mudanas ocorridas
em seu ambiente;
49
Quando um importante software legado no pode mais evoluir naturalmente para satisfazer as mudanas nos requisitos
ele, frequentemente, submetido ao processo de reengenharia. Os padres de reengenharia apresentam novas solues
para uma soluo legada recorrente que j no apropriada e
Descrio
Primeiro Contato
Os padres desse grupo descrevem os procedimentos a serem tomados pelo engenheiro de software no primeiro contato com o sistema legado
Entendimento Inicial
Os padres desse grupo descrevem como o engenheiro de software pode obter o entendimento inicial do software, documentado principalmente na forma de diagramas
de classes
Captura de detalhes do modelo Os padres desse grupo descrevem como o engenheiro de software pode obter o entendimento detalhado de um particular componente do software
Preparao da reengenharia
Como a engenharia reversa precede a reengenharia, este grupo inclui alguns padres que auxiliam na preparao dos passos subsequentes da engenharia avante
50
Proje to
Item
Descrio
Nome do Padro
Utiliza-se uma pequena sentena contendo um verbo que enfatiza o tipo de transformao de reengenharia
Intuito
Uma descrio do processo, juntamente com o resultado e por que o mesmo desejvel
Aplicabilidade
Motivao
Estrutura
Processo
Discusso
Questes Especficas da Linguagem
A seo Dificuldades discute situaes em que a reengenharia impossvel ou sua aplicao comprometida por outros problemas existentes.
Nesta seo, avaliada a relao entre o custo e o benefcio da aplicao do padro. A soluo legada comentada para mostrar por que tal soluo era boa num dado
perodo de tempo, mas insuficiente ou inadequada para o problema atual. Discute-se qual o custo para detectar este problema, sua magnitude e o benefcio da aplicao
do padro. Esta discusso deve ajudar o engenheiro de software a decidir se a aplicao do padro ou no vivel neste caso especfico
Lista o que, especificamente, deve ser solucionado para cada linguagem, verificando-se quais as dificuldades e facilidades encontradas em cada uma
51
D
s
www.devmedia.com.br/esmag/feedback
Referncias
1. (CHIKOFSKY, 1990) CHIKOFSKY, J. E.; CROSS, J. H. Reverse Engineering and Design Recovery: A
Taxonomy. IEEE Software. Volume 7, nmero 1, pginas 13-17. 1990.
2. (COLEMAN, 1994) COLEMAN, D.; ARNOLD, P.; BODOFF, S.; DOLLIN, C.; GILCHRIST, H. and HAYES, F.
Object-Oriented Development The Fusion Method. Prentice Hall. ISBN 0133388239. 1994.
3. (CORTES, 2001) CORTS, M. L.; CHIOSSI, T. C. S. Modelos de Qualidade de Software. Srie Ttulos em
Engenharia de Software. Editora da Unicamp. Instituto de Computao. 2001.
4. (COSTA, 1996) COSTA, R. J.; SANCHES, R. Ferramentas de Engenharia Reversa no Apoio Qualidade
de Software. Relatrio Tcnico n 45, ICMC-USP So Carlos. 1996.
5. (DEMEYER et al., 1999) DEMEYER, S.; DUCASSE, S.; NIERSTRASZ, O. A Pattern Language for Reverse
Engineering. Proceedings of the 4th European 5th European Conference on Pattern Languages
of Programming and Computing. Paul Dyson (Ed.) Universittsverlag Konstanz GmbH, Konstanz,
Germany. July 1999.
6. (DEMEYER et al., 2000) DEMEYER, S.; DUCASSE, S.; NIERSTRASZ, O. A Pattern Language for Reverse
Engineering. Proceedings of the 5th European Conference on Pattern Languages of Programming
and Computing. Andreas Rping (Ed.). 2000.
7. (DEMEYER et al., 2000b) DEMEYER, S.; DUCASSE, S.; NIERSTRASZ, O. Tie Code and Questions: a
Reengineering Pattern. Proceedings of the 5th European Conference on Pattern Languages of
Programming and Computing. Andreas Rping (Ed.). Pginas 209-217. 2000b.
8. (DUCASSE, 1999) DUCASSE, S.; RICHNER, N.; NEBBE, Two Reengineering Patterns: Eliminating Type
Checking. In Proceedings of 4th European Conference on Pattern Languages of Programming and
Computing. Paul Dyson (Ed.). UVK Universittsverlag Konstanz GmbH, Konstanz, Germany. July 1999.
9. (DUCASSE, 1999) DUCASSE, S.; RICHNER, N.; NEBBE, Type Checking Elimination: Two Object
Oriented Reengineering Patterns. In Proceedings of 6th Working Conference on Reverse
Engineering). IEEE Computer Society Press, pginas 157-168. 1999.
10. (JACOBSON, 1991) JACOBSON, I.; LINDSTRM, F. Re-engineering of Old Systems to an Object
Oriented Architecture. SIGPLAN Notices. Volume 26, nmero 11, pginas 340-350. 1991.
11. (LEMOS, 2002) LEMOS, G. S. PRE/OO Um Processo de Reengenharia Orientada A Objetos com
52
13. (PENTEADO, 1998b) PENTEADO, R. A. D.; BRAGA, R. T. V.; MASIERO, P. C. Improving the Quality of
Legacy Code by Reverse Engineering. IV International Conference on Information Systems Analysis
and Synthesis. Orlando, Flrida. Pginas 364-370. 1998b.
14. (PENTEADO, 1998) PENTEADO, R. A. D.; MASIERO, P. C.; BRAGA, R. T. V.; PRADO, A. F. Reengineering
of Legacy Systems Based on Transformations Using the Object Oriented Paradigm. V Working
Conference on Reverse Engineering IEEE. Honolulu, Hawaii. Pginas 144-153. 1998.
15. (PENTEADO, 1999) PENTEADO, R. A. D.; MASIERO, P. C.; CAGNIN, M. I. An Experiment of Legacy
Code Segmentation to Improve Maintainability. III European Conference on Software Maintenance
and Reengineering IEEE. Amsterd, Holanda. Pginas 111-119. 1999.
16. (POOLEY, 1998) POOLEY, R.; STEVENS, P. Software Reengineering Patterns. 1 SEBPC Legacy
Systems Workshop. Grey College, University of Durham, February 1998.
17. (PRESSMAN, 2006) PRESSMAN, R. S. Engenharia de Software. McGraw-Hill Higher Education. 2006.
18. (RECCHIA, 2002) RECCHIA, E. L. Engenharia Reversa e Reengenharia Baseada em Padres.
Dissertao (Mestrado em Cincia da Computao). Programa de Ps-Graduao em Cincia da
Computao, Universidade Federal de So Carlos So Carlos/SP. Junho 2002.
19.(RECCHIA, 2002) RECCHIA, E.L.; PENTEADO, R.A.D.FaPRE/OO: Uma Famlia de Padres para Reengenharia
Orientada a Objetos de Sistemas Legados Procedimentais.SugarloafPLoP2002 The Second Latin American
Conference on Pattern Languages of Programming.Itaipava, Rio de Janeiro.Agosto, 2002.
20. (REKOFF, 1985) REKOFF, M. G. Jr. On Reverse Engineering. IEEE Trans. Systems, Man, and
Cybernetics. Volume maro-abril, pginas 244-252. 1985.
21. (SOMMERVILLE, 2007) SOMMERVILLE, I. Engenharia de Software. 8 Edio. Addison Wesley
Publishing Co. 2007.
sobre e
s
No existe na literatura um processo nico, definido e documentado para a conduo da reengenharia orientada a objetos.
Dessa forma, a partir dos trabalhos [6] [19], observou-se que
padres podem ser elaborados para direcionar o engenheiro
de software na conduo desse processo por tratar-se de uma
forma til e didtica de descrever seus passos e atividades.
A importncia da engenharia reversa dentro do processo de
reengenharia para o aumento da manutenibilidade de sistemas legados, pelo fato de se gerar toda a sua documentao,
muitas vezes inexistente ou desatualizada. Com a recuperao
da documentao de sistemas legados atravs da engenharia
reversa, pode-se obter ganhos significativos de entendimento
do software auxiliando na etapa de manuteno. Em seguida,
com o processo de engenharia avante do produto possvel
prover a sua implementao em plataformas, ambientes e/ou
paradigmas mais modernos.
A qualidade de processo, atualmente bastante referenciada
em se tratando do processo de desenvolvimento de software,
deve ser considerada pelo fato da importncia de se garantir
edio
ta
Concluso
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Contedo Multimdia!
Neste artigo voc encontra o vdeo:
Engenharia de Requisitos
www.devmedia.com.br/esmag
www.devmedia.com.br/esmag
Edio 33 - Engenharia de Software Magazine
53
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Doutor em Cincia da Computao pelo Instituto de Cincias Matemticas e de Computao (ICMC) da Universidade de So Paulo
(USP). Pesquisador ativo na comunidade
de Engenharia de Software, tendo como
temas principais: processo de software, linha de produto de software, arquitetura de
software e avaliao, mtricas de produto
e processo, engenharia de software experimental, modelos e metamodelos UML e
Model-Driven Engineering (MDE). Possui
vrios artigos em peridicos e conferncias
de destaque na rea. Possui as certificaes
Java: SCJA, SCJP, SCJD e SCWCD.
Contedo Multimdia!
Neste artigo voc encontra o vdeo:
Reutilizao de Software
www.devmedia.com.br/esmag
www.devmedia.com.br/esmag
54
reutiliz a o
55