SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
UNIVERSIDADE FEDERAL DO CEARÁ
CAMPUS QUIXADÁ
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
RELATÓRIO AVALIATIVO
ARTHUR ANTUNES NOGUEIRA DA SILVA
DÉCIO GONÇALVES DE AGUIAR NETO
JOÃO VICTOR CHAVES DE OLIVEIRA
RAUL ARAÚJO LIMA
RONILDO OLIVEIRA DA SILVA
FASES DO DESENVOLVIMENTO DE SOFTWARE BASEADO
NO CÓDIGO DE ÉTICA DO ENGENHEIRO DE SOFTWARE
QUIXADÁ - CEARÁ
2014
1
Sumário
Levantamento de Requisitos..........................................................................................................................
Fase de Projeto................................................................................................................................................
Fase de Implementação..................................................................................................................................
Testes de Software...........................................................................................................................................
Manutenção de Software................................................................................................................................
Anexos...........................................................................................................................................................
Referências....................................................................................................................................................
2
Levantamento de Requisitos
O processo de levantamento de requisitos é primordial para o desenvolvimento de um
software pois o desenvolvedor deve compreender bem o desejo do cliente para construir
verdadeiramente aquilo que o cliente espera. Projetos de softwares que não utilizam desta
etapa correm sérios riscos de não atenderem à necessidade real do cliente ou não realizarem
com precisão e facilidade aquilo que o cliente esperava.
Durante a construção de um projeto de software é necessário que o analista se
comunique com o cliente para saber o que ele realmente deseja. Essa etapa chama-se
levantamento de requisitos e pode ser realizada de diferentes formas.
No levantamento de requisitos o
analista ou desenvolvedor “conversa” com
o cliente a respeito do software e dos
requisitos básicos e principais que ele
necessita. Essa conversa pode ser uma
entrevista ou um diálogo e pode utilizar
alguns artifícios adicionais caso necessário,
tais como: desenvolver um questionário
para recolher informações sobre o software,
recolher documentos, formulários ou algum
material que o cliente utilizava para realizar
seu trabalho antes de dispor do software
desejado.
A tirinha ao lado apresenta um
contexto em que a importância da etapa do
levantamento de requisitos é dada como
primordial no desenvolvimento de um
projeto, podendo causar danos seríssimos a
todos os envolvidos.
3
Fase de Projeto
Projeto
A fase de projeto decide como o sistema irá operar, em termos de: hardware, software
e infraestrutura de rede; a interface de usuário, formulários e relatórios; os programas
específicos, bancos de dados e arquivos que serão necessários.
Definição do ambiente de aprendizagem
O desenvolvimento do software educacional possui características específicas e a
especificação dos requisitos de qualidade inclui o modelo de ensino/aprendizagem
selecionado, isto é, a filosofia de aprendizagem subjacente ao software. Este é o único padrão
a ser especificado " a priori" no desenvolvimento do software educacional e que vai
determinar seu desenvolvimento. A experiência tem mostrado que o processo de
desenvolvimento de software adequado à hipermídia educacional deve ser composto do
modelo de ciclo de vida de prototipagem evolutiva, acrescido da etapa inicial da escolha do
ambiente educacional e avaliação por parte de professores e alunos, para que novos requisitos
sejam incorporados ao hiperdocumento.
Análise de viabilidade
Os projetos podem variar em função do objetivo pelo qual o sistema é constituído, do
hardware sobre o qual pode ser implantado e também em função da filosofia de
desenvolvimento. Para que o projeto da hipermídia seja realizado é necessário a definição de
algumas estimativas entre elas recursos, custos e cronogramas. Deve-se fornecer dados sobre
os usuários, restrições externas, limitações do produto e outros fatores relevantes.
É necessário avaliar a possibilidade do reuso de componentes e identificar,
acompanhar e eliminar itens de risco antes que eles possam comprometer o sucesso do projeto
ou que se tornem a principal fonte de trabalhos refeitos.
Seleção do método para autoria
Os métodos de autoria, de um modo geral, estão divididos em duas classes: os
métodos embutidos em alguma ferramenta de autoria e os métodos que possibilitam a análise
e projeto independente da ferramenta a ser utilizada na implementação. Existem diversos
métodos propostos para modelagem de aplicações hipertexto/hipermídia tanto para aplicações
gerais quanto para a educação.
Ética no Desenvolvimento de Software
O desenvolvimento de software envolve grande responsabilidade, pois não é apenas
aplicar habilidades técnicas, mas sim um conjunto de atividades sociais e legais, oque muitas
vezes limita a liberdade das pessoas que trabalham nesta área. Desta forma, o engenheiro de
software deve se comportar de forma ética e moralmente responsável se deseja ser respeitado
como um engenheiro profissional..
Os engenheiros de software devem estar convictos a fazer do conjunto da análise, da
especificação, do projeto, do desenvolvimento, do teste e da manutenção de software, uma
profissão benéfica e respeitada. De acordo com o seu comprometimento com a saúde,
segurança, e bem-estar do público, os engenheiros de software devem adotar os oito
4
princípios.
Público. Engenheiros de Software devem atuar consistentemente com os interesses públicos.
Clientes e empregados. Engenheiros de Software devem atuar de modo a atender os melho-
res interesses dos seus clientes e empregados, consistentemente com os interesses públicos.
Produto. Engenheiros de Software devem assegurar que seus produtos e modificações relaci-
onadas atendam os melhores padrões profissionais possíveis.
Julgamento. Engenheiros de Software devem manter a integridade e independência nos seus
julgamentos profissionais.
Administração. Administradores e líderes de Engenharia de Software devem aderir e promo-
ver uma abordagem ética ao gerenciamento do desenvolvimento e manutenção de software.
Profissão. Engenheiros de Software devem desenvolver a integridade e reputação da profis-
são consistentemente com os interesses do público.
Coleguismo. Engenheiros de Software devem ser justos e dispostos a auxiliar seus colegas.
Identidade. Engenheiros de Software devem participar do aprendizado de suas vidas valo-
rizando a prática da sua profissão e devem promover uma abordagem ética à prática da pro-
fissão.”
5
Fase de Implementação
Implementação de Software
Uma das partes mais conhecidas do processo de desenvolvimento de software é a
implementação, ou codificação. Nessa etapa o produto é construído baseado nos requisitos e
projetos desenhados e escritos nas fases anteriores.
O profissional que atua diretamente com essa fase é o programador, com a ajuda da equipe e
do cliente, é ele vai produzir de acordo com os requisitos estipulados.
Requisitos
“Os requisitos de um sistema são descrições dos serviços fornecidos pelo sistema e as suas
restrições operacionais. Esses requisitos refletem as necessidades dos clientes de uma sistema que
ajuda a resolver algum problema, por exemplo, controlar um dispositivo, enviar um pedido ou
encontrar informações.” (IAN SOMMERVILLE, 2007, p.79).
Ferramentas e documentos
Dessas normas a serem obedecidas, o profissional deverá escolher a linguagem
(programação, consulta, marcação, estilização,etc), frameworks e ferramentas que utilizará no
decorrer da implementação. Um projeto pode ser iniciado do zero, ou ser baseado na técnica e
reuso de software ou padrões de projeto por exemplo.
A reformulação do software se torna muitas vezes eficaz (dependendo da portabilidade da
aplicação) e da clara documentação de software, pois toda a equipe, ou outras pessoas deverão
conhecer o produto caso forem dar continuidade ao trabalho.
Essas informações utilíssimas podem estar contidas tanto dentro do código (comentários)
quanto num documento externo que acompanhe toda a codificação.
Qualidade de software
O programador terá de ter consciência de que ele está criando um produto que normalmente
será utilizado por pessoas que talvez não tenha tanto conhecimento na área da computação, ou seja,
uma boa prática, será utilizar da clareza e de boa usabilidade. Todo mundo gosta de intuitividade e
acessibilidade.
Além da qualidade ao usuário, o implementador deverá estar atento a eficácia do código,
como evitar estruturas estáticas, e expressões extensas, utilizar chamada de métodos ao invés de
vários fluxos de repetição, utilizar compiladores que possam fornecer otimizações, técnicas de
dinamismo de dados (alocação de memória) entre outras.
Ética no Desenvolvimento de Software
“A consciência é o melhor livro de moral e o que menos se consulta.
”
Blaise Pascal
Entre os anos 2005-2007, foi relatado um escândalo do sistema de proteção de cópias de
CDs da Sony e BMG que diz respeito a medidas de proteção contra cópia ilegais e potencialmente
prejudiciais implementadas em cerca de 22 milhões de CDs.
Quando inserido em um computador, os CDs instalavam dois softwares que forneciam uma
forma de gestão de direitos digitais, modificando o sistema operacional para interferir com a cópia
do CD. Ambos os programas não podiam ser facilmente desinstalados, e eles criaram
vulnerabilidades consideradas malwares. Segundo um usuário, um dos programas instalados,
apresentou relatórios sobre escuta particulares; o outro continha o código de várias partes de
software de código aberto em uma aparente violação de direitos autorais, e configurou o sistema
6
operacional para ocultar a existência desse software, levando a ambos os programas a serem
classificados como rootkits.
Visando o bom comportamento dos profissionais, a imagem , integridade da empresa e a
confiabilidade dos produtos, a ACM/IEEE-CS (Association for Computing Machinery / Institute for
Electrical and Eletronics Engineers - Computer Society) escreve um código que servirá como guia
para o desenvolvimento de um profissional respeitado e que possa trazer benefícios a empresa, a
sociedade e o meio ambiente.
Segue um exemplo do código de ética citado acima que evidencia a má prática adotada pela
Sony :
Público
“Aprovar software somente se o mesmo estiver absolutamente convicto que seja seguro, de acordo
com suas especificações, passe nos testes apropriados, e não diminua a qualidade de vida, diminua a
privacidade, ou prejudique o meio ambiente. O efeito final do trabalho deve ser pelo bem público.”
Testes de Software
Testes de softwares tem como objetivo, testar a qualidade e forçar o software ao máximo
para buscar encontrar possíveis erros, para que essas falhas após identificadas possam ser corrigidas
pela equipe de desenvolvimento de software.
Testar um software significa verificar através de uma execução controlada se o seu
comportamento corre de acordo com o especificado. O objetivo principal desta tarefa é revelar o
número máximo de falhas dispondo do mínimo de esforço, ou seja, mostrar aos que desenvolvem se
os resultados estão ou não de acordo com os padrões estabelecidos.
O teste de software pode ser visto como uma parcela do processo de qualidade de software.
A qualidade da aplicação pode e, normalmente, varia significativamente de sistema para sistema.
Inicialmente, precisamos conhecer a diferença entre Defeitos, Erros e Falhas. As definições que
iremos usar aqui seguem a terminologia padrão para Engenharia de Software do IEEE – Institute of
Electrical and Electronics Engineers – (IEEE 610, 1990).
 Defeito é um ato inconsistente cometido por um indivíduo ao tentar entender uma
determinada informação, resolver um problema ou utilizar um método ou uma ferramenta.
Por exemplo, uma instrução ou comando incorreto.
 Erro é uma manifestação concreta de um defeito num artefato de software. Diferença entre
o valor obtido e o valor esperado, ou seja, qualquer estado intermediário incorreto ou
resultado inesperado na execução de um programa constitui um erro.
 Falha é o comportamento operacional do software diferente do esperado pelo usuário. Uma
falha pode ter sido causada por diversos erros e alguns erros podem nunca causar uma falha.
Realizar um bom teste requer a execução de uma série de atividades para o planejamento,
projeto e execução do teste. Informações importantes devem ser registradas para permitir a
solução dos problemas e também o aprimoramento das práticas de teste. Criar testes
aleatoriamente é desperdício de tempo e de esforço; técnicas de teste selecionam situações
representativas para o teste, permitindo descobrir problemas com um esforço razoável. Só
assim, bem fundamentado, o teste pode permitir que se ganhe confiança no software.
7
Manutenção de Software
Manutenção de Software é o processo geral de modificação de um sistema depois de ter
sido colocado em uso. Corrigir defeitos de código, de projeto, de especificação, acrescentar
funcionalidades. Normalmente não envolvem alteração da arquitetura do sistema.
Manutenção de software
Ao corrigir erros no software podemos ter pequenos trabalho como corrigir um pequeno erro
como algo mais trabalhoso que pode envolver um equipe inteira. Portanto, cuidar do patrimônio
informacional (conteúdos que estão no software que a empresa usa) é essencial e importante para
que gastos maiores não sejam necessários.
A manutenção de software é um processo geral de mudanças de um sistema depois que ele é
entregue. O tempo geralmente é aplicado ao software sob encomenda no qual grupos de
desenvolvimento separados são envolvidos antes e depois da entrega do sistema. As mudanças
feitas no software podem ser mudanças simples para corrigir erros de codificação, podem ser
mudanças mais extensas para corrigir erros de projetos ou melhorias significantes para corrigir erros
de especificação ou para acomodar novos requisitos. As mudanças são implementadas por meio de
modificações de componentes de sistemas existentes e, quando necessário, por meio da adição de
novos componentes ao sistema.
Exitem três tipos diferentes de manutenção de software:
Manutenção para reparo de defeitos de software: A correção de erros de codificação é
normalmente barata; os erros de projetos são mais caros, pois podem envolver a reescrita de vários
componentes dos programas. Erros de requisitos são mais onerosos para serem reparados, pois pode
ser necessário o reprojeto do sistema existente.
Manutenção para adaptar o software a um ambiente operacional diferente: Esse tipo de
manutenção é necessária quando algum aspecto do ambiente do sistema, como o hardware,
plataforma do sistema operacional ou outro software de apoio mudam. O sistema da aplicação deve
ser modificado para lidar com essas mudanças de ambiente.
Manutenção para adicionar funcionalidade ao sistema ou modificá-la: Esse tipo de
manutenção é necessária quando os requisitos do sistema mudam em resposta às mudanças
organizacionais ou de negócios. A escala de mudanças necessárias para o software é muito maior do
que em outros tipos de manutenção.
Na prática, não fica muito clara a distinção entre esse tipos de manutenção. Quando você
adapta o sistema a um novo ambiente, isso pode ser feito pela adição de funcionalidade para
aproveitar as características do novo ambiente. Os defeitos de software frequentemente são
expostos porque os usuários usam o sistema de maneiras imprevisíveis. Mudanças no sistema para
acomodar o modo de trabalho é o melhor meio de corrigir esses defeitos.
Propriedades de um sistema
Antes do projetista pensar em manutenção do sistemas, seria mais viável pensar nos
requisitos do sistema para que seu software possa funcionar e que não haja por acaso algum erro, ou
dano.
Algumas propriedades são:
VOLUME: O volume de um sistema (espaço total ocupado) varia dependendo de como a
montagem dos componentes está organizada e conectada.
CONFIABILIDADE: A confiabilidade do sistema depende da confiabilidade dos
8
componentes, mas interações inesperadas podem causar novos tipos de falha e, portanto, afetar a
confiabilidade do sistema.
PROTEÇÃO: A proteção do sistema (sua capacidade de resistir a ataques) é uma
propriedade complexa que não pode ser facilmente medida. Podem ocorrer ataques não previstos
pelos projetistas do sistema e, dessa maneira, as proteções internas podem ser vencidas.
FACILIDADE DE REPAROS:Esta propriedade reflete a facilidade com que um problema
no sistema no sistema é resolvido, após sua descoberta. Isso depende da capacidade de diagnosticar
o problema, acessar os componentes defeituosos e modificar ou substituir esses componentes.
USABILIDADE: Esta propriedade reflete a facilidade com que o sistema pode ser usado.
Isso depende dos componentes técnicos do sistema, seus operadores e seu ambiente operacional.
Custo de manutenção
Quando é desenvolvido um software é necessário estar preparado para os gastos extras, pois
a construção do software é apenas uma parte, pois retoques no programa ou melhorias sistemas
podem vir a serem necessários, e gastos são exigidos tanto na melhoria quanto na manutenção.
Os custos de manutenção como parte dos custos de desenvolvimento variam de um domínio
de aplicação para outro, (Guimarães, 1983) sugere que os custos de manutenção de sistemas de
aplicação de negócios são bastante comparáveis aos custos de desenvolvimento de sistemas. Para
sistemas de tempo real incorporados, aos custos de manutenção podem ser até quatro vezes mais
altos do que os custos de desenvolvimento. Os requisitos de alta robustez e desempenho desses
sistemas fazem com que seus módulos tenham de ser muito acoplados e, por isso, difíceis de serem
modificados.
Geralmente é benéfico investir esforço no projeto e na implementação de um sistema para
reduzir os custos de manutenção para compreender o sistema e analisar o impacto das mudanças
propostas. Assim, o trabalho executado durante o desenvolvimento para tornar o software mais fácil
de ser compreendido e alterado contribui para reduzir os custos de manutenção. Boas técnicas de
engenharia de software, como especificações precisas, uso da orientação a objetos no
desenvolvimento e gerenciamento de configurações, contribuem para a redução dos custos de
manutenção.
Responsabilidade profissional e ética
O comportamento ético e profissional do projetista de software é essencial para o cliente.
Saber as limitações daquilo que é permitido ou não, são muito importantes na tomada de decisões.
Como outras disciplinas de engenharia, a engenharia de software está dentro de uma
estrutura de condições legais e sociais que limita a liberdade dos engenheiros que, por sua vez,
devem admitir que o seu trabalho implica responsabilidades mais amplas do que a plicação de
habilidades técnicas. Devem também se comportar de forma responsável ética e moralmente, para
serem respeitados como profissionais.
9
Anexos:
Nome E-mail
Arthur Antunes Nogueira da Silva arthur.antunes.aa@hotmail.com
Décio Gonçalves de Aguiar Neto decioaguiarneto@hotmail.com
João Vitor Chaves de Oliveira mrjvco@gmail.com
Raul Araújo Lima raul.araujo3212@gmail.com
Ronildo Oliveira da Silva ro.nildooliveira@hotmail.com
10
Referências
ACM: Software Engineering Code of Ethics and Professional Practice, ACM/IEEE joint task force,
consultado em Maio de 2014. Disponível em: http://www.acm.org/serving/se/code.htm
Collins, W. Robert et al How Goog is Good Enough? An Ethical Analysis of Software
Construction and Use. Communications of the ACM. Vol 37. Nº 1 January. 1994.
Engenharia de Software: http://paginas.fe.up.pt/~aaguiar/es/artigos%20finais/es_final_10.pdf
GOTTERBARN, Don. How the New Software Engineering Code of Ethics Affects You.
IEEE Software Engineering. p 58 – 64, nov/dec. 1999
Introdução a teste de software: Consultado em Junho de 2014. Disponível em:
http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de-software/8035
Manutenção de Software: http://www.ic.unicamp.br/~ranido/mc626/Manutencao.pdf
PRESSMAN, Roger S. Engenharia de software. 6ª ed. Porto Alegre: Bookman, 2006.
Teste de software: http://www.softwarepublico.gov.br/5cqualibr/xowiki/Teste-item7
Teste de Software: Junho de 2014. Disponível em: http://pt.wikipedia.org/wiki/Teste_de_software
SOMMERVILLE, Ian. Engenharia de software. 8ª ed. São Paulo: Pearson Addison-Wesley,
2007.
Sony BMG copy protection rootkit scandal, consultado em Junho de 2014. Disponível em:
http://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootkit_scandal
11

Mais conteúdo relacionado

Mais procurados

LIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACES
LIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACESLIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACES
LIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACESOs Fantasmas !
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Analise de Requisitos de Software
Analise de Requisitos de SoftwareAnalise de Requisitos de Software
Analise de Requisitos de SoftwareRobson Silva Espig
 
Ap i unidade 3 - levantamento de requisitos
Ap i   unidade 3 - levantamento de requisitosAp i   unidade 3 - levantamento de requisitos
Ap i unidade 3 - levantamento de requisitosGlauber Aquino
 
JAD e levantamento de requisitos
JAD e levantamento de requisitosJAD e levantamento de requisitos
JAD e levantamento de requisitosEduardo Castro
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Erivelton Silva Rocha
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASOs Fantasmas !
 
Engenharia Requisitos - Método RON
Engenharia Requisitos - Método RONEngenharia Requisitos - Método RON
Engenharia Requisitos - Método RONEduardo Castro
 
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...Rogério Batista
 
Aula processo de reuso de software
Aula processo de reuso de softwareAula processo de reuso de software
Aula processo de reuso de softwareTatiana Tavares
 
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREKéllyson Gonçalves da Silva
 
Palestra no auditório do IBGE - Arquitetura de Informação
Palestra no auditório do IBGE - Arquitetura de InformaçãoPalestra no auditório do IBGE - Arquitetura de Informação
Palestra no auditório do IBGE - Arquitetura de InformaçãoLuiz Agner
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 

Mais procurados (20)

LIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACES
LIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACESLIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACES
LIVRO PROPRIETÁRIO - ENGENHARIA DE USABILIDADE E INTERFACES
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Dissertacao rev Becker
Dissertacao rev BeckerDissertacao rev Becker
Dissertacao rev Becker
 
Analise de Requisitos de Software
Analise de Requisitos de SoftwareAnalise de Requisitos de Software
Analise de Requisitos de Software
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Ap i unidade 3 - levantamento de requisitos
Ap i   unidade 3 - levantamento de requisitosAp i   unidade 3 - levantamento de requisitos
Ap i unidade 3 - levantamento de requisitos
 
JAD e levantamento de requisitos
JAD e levantamento de requisitosJAD e levantamento de requisitos
JAD e levantamento de requisitos
 
Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1Aula 03 de engenharia de software uespi 2011-1
Aula 03 de engenharia de software uespi 2011-1
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
 
Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
 
Engenharia Requisitos - Método RON
Engenharia Requisitos - Método RONEngenharia Requisitos - Método RON
Engenharia Requisitos - Método RON
 
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
 
Crise de software2
Crise de software2Crise de software2
Crise de software2
 
Aula processo de reuso de software
Aula processo de reuso de softwareAula processo de reuso de software
Aula processo de reuso de software
 
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
 
Palestra no auditório do IBGE - Arquitetura de Informação
Palestra no auditório do IBGE - Arquitetura de InformaçãoPalestra no auditório do IBGE - Arquitetura de Informação
Palestra no auditório do IBGE - Arquitetura de Informação
 
Reúso
ReúsoReúso
Reúso
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
29110 rioinfo painel_i v1
29110 rioinfo painel_i v129110 rioinfo painel_i v1
29110 rioinfo painel_i v1
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 

Semelhante a Fases do desenvolvimento de software baseado no código de ética.

Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfPDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfpedrina4
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxRoberto Nunes
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixCris Fidelix
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxMarcondesTiburcio
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)Tiago Vizoto
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3spawally
 
2 engenharia de software
2   engenharia de software2   engenharia de software
2 engenharia de softwareFelipe Bugov
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentaisWaldemar Roberti
 
TechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerTechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerAlan Carlos
 
AGILE UNIFIED PROCESS
AGILE UNIFIED PROCESSAGILE UNIFIED PROCESS
AGILE UNIFIED PROCESSEder Nogueira
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trataRoni Reis
 
Fabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.AprendidasFabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.AprendidasAnnkatlover
 
Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introduçãomiroslayer
 
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALTCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALAndre Luis de Andrade
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Érika Santos
 

Semelhante a Fases do desenvolvimento de software baseado no código de ética. (20)

Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdfPDSI.INT- S01 Introdução a Eng Software e Processo.pdf
PDSI.INT- S01 Introdução a Eng Software e Processo.pdf
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
 
aula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptxaula projeto e des sistemas 22 03 2021.pptx
aula projeto e des sistemas 22 03 2021.pptx
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
2 engenharia de software
2   engenharia de software2   engenharia de software
2 engenharia de software
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais
 
TechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerTechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test Manager
 
AGILE UNIFIED PROCESS
AGILE UNIFIED PROCESSAGILE UNIFIED PROCESS
AGILE UNIFIED PROCESS
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trata
 
Fabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.AprendidasFabrica.Software.Concepcao.Licoes.Aprendidas
Fabrica.Software.Concepcao.Licoes.Aprendidas
 
Engenharia de software
Engenharia de software Engenharia de software
Engenharia de software
 
Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introdução
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
Artigo jad utfpr
Artigo jad utfprArtigo jad utfpr
Artigo jad utfpr
 
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALTCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).
 

Mais de Ronildo Oliveira

Desenvolvimento de jogos Mobile - FliSol 2017
Desenvolvimento de jogos Mobile - FliSol 2017Desenvolvimento de jogos Mobile - FliSol 2017
Desenvolvimento de jogos Mobile - FliSol 2017Ronildo Oliveira
 
Towards a Computational Model of Melody Identification in Polyphonic Music
Towards a Computational Model of Melody Identification in Polyphonic MusicTowards a Computational Model of Melody Identification in Polyphonic Music
Towards a Computational Model of Melody Identification in Polyphonic MusicRonildo Oliveira
 
Relato de Experiência de Monitoria da Disciplina de Estrutura de Dados, Estr...
Relato de Experiência de Monitoria da Disciplina de  Estrutura de Dados, Estr...Relato de Experiência de Monitoria da Disciplina de  Estrutura de Dados, Estr...
Relato de Experiência de Monitoria da Disciplina de Estrutura de Dados, Estr...Ronildo Oliveira
 
Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...
Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...
Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...Ronildo Oliveira
 
A relevância da participação em centros acadêmicos para a formação complement...
A relevância da participação em centros acadêmicos para a formação complement...A relevância da participação em centros acadêmicos para a formação complement...
A relevância da participação em centros acadêmicos para a formação complement...Ronildo Oliveira
 
Resolução Parcial - Redes de Computadores - Kurose 6ª Edição
Resolução Parcial - Redes de Computadores - Kurose 6ª EdiçãoResolução Parcial - Redes de Computadores - Kurose 6ª Edição
Resolução Parcial - Redes de Computadores - Kurose 6ª EdiçãoRonildo Oliveira
 
Realidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em JogosRealidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em JogosRonildo Oliveira
 
Scape From Weirdland - O Jogo
Scape From Weirdland - O JogoScape From Weirdland - O Jogo
Scape From Weirdland - O JogoRonildo Oliveira
 
Documento de Requisitos do Sistema - Meu Telefone
Documento de Requisitos do Sistema - Meu TelefoneDocumento de Requisitos do Sistema - Meu Telefone
Documento de Requisitos do Sistema - Meu TelefoneRonildo Oliveira
 
Slide Encontros Universitários 2015 UFC - SOLID, Design de Software e Progra...
Slide Encontros Universitários 2015 UFC  - SOLID, Design de Software e Progra...Slide Encontros Universitários 2015 UFC  - SOLID, Design de Software e Progra...
Slide Encontros Universitários 2015 UFC - SOLID, Design de Software e Progra...Ronildo Oliveira
 
Calculo I - Uma Breve Introdução ao Estudo de Integrais
Calculo I - Uma Breve Introdução ao Estudo de IntegraisCalculo I - Uma Breve Introdução ao Estudo de Integrais
Calculo I - Uma Breve Introdução ao Estudo de IntegraisRonildo Oliveira
 
Apresentação de Slide - Deadlocks
Apresentação de Slide - DeadlocksApresentação de Slide - Deadlocks
Apresentação de Slide - DeadlocksRonildo Oliveira
 
Resolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisResolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisRonildo Oliveira
 
Conceitos básicos de sistemas operacionais
Conceitos básicos de sistemas operacionaisConceitos básicos de sistemas operacionais
Conceitos básicos de sistemas operacionaisRonildo Oliveira
 
Exercícios Resolvidos - Arquitetura e Organização de Computadores
Exercícios Resolvidos - Arquitetura e Organização de ComputadoresExercícios Resolvidos - Arquitetura e Organização de Computadores
Exercícios Resolvidos - Arquitetura e Organização de ComputadoresRonildo Oliveira
 
Minicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CEMinicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CERonildo Oliveira
 
Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...
Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...
Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...Ronildo Oliveira
 
Curso Android - 01 Introdução ao Android
Curso Android - 01 Introdução ao AndroidCurso Android - 01 Introdução ao Android
Curso Android - 01 Introdução ao AndroidRonildo Oliveira
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesRonildo Oliveira
 

Mais de Ronildo Oliveira (20)

Desenvolvimento de jogos Mobile - FliSol 2017
Desenvolvimento de jogos Mobile - FliSol 2017Desenvolvimento de jogos Mobile - FliSol 2017
Desenvolvimento de jogos Mobile - FliSol 2017
 
Towards a Computational Model of Melody Identification in Polyphonic Music
Towards a Computational Model of Melody Identification in Polyphonic MusicTowards a Computational Model of Melody Identification in Polyphonic Music
Towards a Computational Model of Melody Identification in Polyphonic Music
 
Relato de Experiência de Monitoria da Disciplina de Estrutura de Dados, Estr...
Relato de Experiência de Monitoria da Disciplina de  Estrutura de Dados, Estr...Relato de Experiência de Monitoria da Disciplina de  Estrutura de Dados, Estr...
Relato de Experiência de Monitoria da Disciplina de Estrutura de Dados, Estr...
 
Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...
Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...
Avaliação Heurística de um Ambiente Virtual para Análise de Rotas de Execução...
 
A relevância da participação em centros acadêmicos para a formação complement...
A relevância da participação em centros acadêmicos para a formação complement...A relevância da participação em centros acadêmicos para a formação complement...
A relevância da participação em centros acadêmicos para a formação complement...
 
Resolução Parcial - Redes de Computadores - Kurose 6ª Edição
Resolução Parcial - Redes de Computadores - Kurose 6ª EdiçãoResolução Parcial - Redes de Computadores - Kurose 6ª Edição
Resolução Parcial - Redes de Computadores - Kurose 6ª Edição
 
Realidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em JogosRealidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em Jogos
 
Scape From Weirdland - O Jogo
Scape From Weirdland - O JogoScape From Weirdland - O Jogo
Scape From Weirdland - O Jogo
 
Documento de Requisitos do Sistema - Meu Telefone
Documento de Requisitos do Sistema - Meu TelefoneDocumento de Requisitos do Sistema - Meu Telefone
Documento de Requisitos do Sistema - Meu Telefone
 
Slide Encontros Universitários 2015 UFC - SOLID, Design de Software e Progra...
Slide Encontros Universitários 2015 UFC  - SOLID, Design de Software e Progra...Slide Encontros Universitários 2015 UFC  - SOLID, Design de Software e Progra...
Slide Encontros Universitários 2015 UFC - SOLID, Design de Software e Progra...
 
Calculo I - Uma Breve Introdução ao Estudo de Integrais
Calculo I - Uma Breve Introdução ao Estudo de IntegraisCalculo I - Uma Breve Introdução ao Estudo de Integrais
Calculo I - Uma Breve Introdução ao Estudo de Integrais
 
Apresentação de Slide - Deadlocks
Apresentação de Slide - DeadlocksApresentação de Slide - Deadlocks
Apresentação de Slide - Deadlocks
 
Deadlocks (Resumo)
Deadlocks (Resumo)Deadlocks (Resumo)
Deadlocks (Resumo)
 
Resolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisResolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas Operacionais
 
Conceitos básicos de sistemas operacionais
Conceitos básicos de sistemas operacionaisConceitos básicos de sistemas operacionais
Conceitos básicos de sistemas operacionais
 
Exercícios Resolvidos - Arquitetura e Organização de Computadores
Exercícios Resolvidos - Arquitetura e Organização de ComputadoresExercícios Resolvidos - Arquitetura e Organização de Computadores
Exercícios Resolvidos - Arquitetura e Organização de Computadores
 
Minicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CEMinicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CE
 
Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...
Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...
Curso Android - 02 configuração do ambiente (Tutorial de Instalação Eclipse +...
 
Curso Android - 01 Introdução ao Android
Curso Android - 01 Introdução ao AndroidCurso Android - 01 Introdução ao Android
Curso Android - 01 Introdução ao Android
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos Chaves
 

Fases do desenvolvimento de software baseado no código de ética.

  • 1. UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO RELATÓRIO AVALIATIVO ARTHUR ANTUNES NOGUEIRA DA SILVA DÉCIO GONÇALVES DE AGUIAR NETO JOÃO VICTOR CHAVES DE OLIVEIRA RAUL ARAÚJO LIMA RONILDO OLIVEIRA DA SILVA FASES DO DESENVOLVIMENTO DE SOFTWARE BASEADO NO CÓDIGO DE ÉTICA DO ENGENHEIRO DE SOFTWARE QUIXADÁ - CEARÁ 2014 1
  • 2. Sumário Levantamento de Requisitos.......................................................................................................................... Fase de Projeto................................................................................................................................................ Fase de Implementação.................................................................................................................................. Testes de Software........................................................................................................................................... Manutenção de Software................................................................................................................................ Anexos........................................................................................................................................................... Referências.................................................................................................................................................... 2
  • 3. Levantamento de Requisitos O processo de levantamento de requisitos é primordial para o desenvolvimento de um software pois o desenvolvedor deve compreender bem o desejo do cliente para construir verdadeiramente aquilo que o cliente espera. Projetos de softwares que não utilizam desta etapa correm sérios riscos de não atenderem à necessidade real do cliente ou não realizarem com precisão e facilidade aquilo que o cliente esperava. Durante a construção de um projeto de software é necessário que o analista se comunique com o cliente para saber o que ele realmente deseja. Essa etapa chama-se levantamento de requisitos e pode ser realizada de diferentes formas. No levantamento de requisitos o analista ou desenvolvedor “conversa” com o cliente a respeito do software e dos requisitos básicos e principais que ele necessita. Essa conversa pode ser uma entrevista ou um diálogo e pode utilizar alguns artifícios adicionais caso necessário, tais como: desenvolver um questionário para recolher informações sobre o software, recolher documentos, formulários ou algum material que o cliente utilizava para realizar seu trabalho antes de dispor do software desejado. A tirinha ao lado apresenta um contexto em que a importância da etapa do levantamento de requisitos é dada como primordial no desenvolvimento de um projeto, podendo causar danos seríssimos a todos os envolvidos. 3
  • 4. Fase de Projeto Projeto A fase de projeto decide como o sistema irá operar, em termos de: hardware, software e infraestrutura de rede; a interface de usuário, formulários e relatórios; os programas específicos, bancos de dados e arquivos que serão necessários. Definição do ambiente de aprendizagem O desenvolvimento do software educacional possui características específicas e a especificação dos requisitos de qualidade inclui o modelo de ensino/aprendizagem selecionado, isto é, a filosofia de aprendizagem subjacente ao software. Este é o único padrão a ser especificado " a priori" no desenvolvimento do software educacional e que vai determinar seu desenvolvimento. A experiência tem mostrado que o processo de desenvolvimento de software adequado à hipermídia educacional deve ser composto do modelo de ciclo de vida de prototipagem evolutiva, acrescido da etapa inicial da escolha do ambiente educacional e avaliação por parte de professores e alunos, para que novos requisitos sejam incorporados ao hiperdocumento. Análise de viabilidade Os projetos podem variar em função do objetivo pelo qual o sistema é constituído, do hardware sobre o qual pode ser implantado e também em função da filosofia de desenvolvimento. Para que o projeto da hipermídia seja realizado é necessário a definição de algumas estimativas entre elas recursos, custos e cronogramas. Deve-se fornecer dados sobre os usuários, restrições externas, limitações do produto e outros fatores relevantes. É necessário avaliar a possibilidade do reuso de componentes e identificar, acompanhar e eliminar itens de risco antes que eles possam comprometer o sucesso do projeto ou que se tornem a principal fonte de trabalhos refeitos. Seleção do método para autoria Os métodos de autoria, de um modo geral, estão divididos em duas classes: os métodos embutidos em alguma ferramenta de autoria e os métodos que possibilitam a análise e projeto independente da ferramenta a ser utilizada na implementação. Existem diversos métodos propostos para modelagem de aplicações hipertexto/hipermídia tanto para aplicações gerais quanto para a educação. Ética no Desenvolvimento de Software O desenvolvimento de software envolve grande responsabilidade, pois não é apenas aplicar habilidades técnicas, mas sim um conjunto de atividades sociais e legais, oque muitas vezes limita a liberdade das pessoas que trabalham nesta área. Desta forma, o engenheiro de software deve se comportar de forma ética e moralmente responsável se deseja ser respeitado como um engenheiro profissional.. Os engenheiros de software devem estar convictos a fazer do conjunto da análise, da especificação, do projeto, do desenvolvimento, do teste e da manutenção de software, uma profissão benéfica e respeitada. De acordo com o seu comprometimento com a saúde, segurança, e bem-estar do público, os engenheiros de software devem adotar os oito 4
  • 5. princípios. Público. Engenheiros de Software devem atuar consistentemente com os interesses públicos. Clientes e empregados. Engenheiros de Software devem atuar de modo a atender os melho- res interesses dos seus clientes e empregados, consistentemente com os interesses públicos. Produto. Engenheiros de Software devem assegurar que seus produtos e modificações relaci- onadas atendam os melhores padrões profissionais possíveis. Julgamento. Engenheiros de Software devem manter a integridade e independência nos seus julgamentos profissionais. Administração. Administradores e líderes de Engenharia de Software devem aderir e promo- ver uma abordagem ética ao gerenciamento do desenvolvimento e manutenção de software. Profissão. Engenheiros de Software devem desenvolver a integridade e reputação da profis- são consistentemente com os interesses do público. Coleguismo. Engenheiros de Software devem ser justos e dispostos a auxiliar seus colegas. Identidade. Engenheiros de Software devem participar do aprendizado de suas vidas valo- rizando a prática da sua profissão e devem promover uma abordagem ética à prática da pro- fissão.” 5
  • 6. Fase de Implementação Implementação de Software Uma das partes mais conhecidas do processo de desenvolvimento de software é a implementação, ou codificação. Nessa etapa o produto é construído baseado nos requisitos e projetos desenhados e escritos nas fases anteriores. O profissional que atua diretamente com essa fase é o programador, com a ajuda da equipe e do cliente, é ele vai produzir de acordo com os requisitos estipulados. Requisitos “Os requisitos de um sistema são descrições dos serviços fornecidos pelo sistema e as suas restrições operacionais. Esses requisitos refletem as necessidades dos clientes de uma sistema que ajuda a resolver algum problema, por exemplo, controlar um dispositivo, enviar um pedido ou encontrar informações.” (IAN SOMMERVILLE, 2007, p.79). Ferramentas e documentos Dessas normas a serem obedecidas, o profissional deverá escolher a linguagem (programação, consulta, marcação, estilização,etc), frameworks e ferramentas que utilizará no decorrer da implementação. Um projeto pode ser iniciado do zero, ou ser baseado na técnica e reuso de software ou padrões de projeto por exemplo. A reformulação do software se torna muitas vezes eficaz (dependendo da portabilidade da aplicação) e da clara documentação de software, pois toda a equipe, ou outras pessoas deverão conhecer o produto caso forem dar continuidade ao trabalho. Essas informações utilíssimas podem estar contidas tanto dentro do código (comentários) quanto num documento externo que acompanhe toda a codificação. Qualidade de software O programador terá de ter consciência de que ele está criando um produto que normalmente será utilizado por pessoas que talvez não tenha tanto conhecimento na área da computação, ou seja, uma boa prática, será utilizar da clareza e de boa usabilidade. Todo mundo gosta de intuitividade e acessibilidade. Além da qualidade ao usuário, o implementador deverá estar atento a eficácia do código, como evitar estruturas estáticas, e expressões extensas, utilizar chamada de métodos ao invés de vários fluxos de repetição, utilizar compiladores que possam fornecer otimizações, técnicas de dinamismo de dados (alocação de memória) entre outras. Ética no Desenvolvimento de Software “A consciência é o melhor livro de moral e o que menos se consulta. ” Blaise Pascal Entre os anos 2005-2007, foi relatado um escândalo do sistema de proteção de cópias de CDs da Sony e BMG que diz respeito a medidas de proteção contra cópia ilegais e potencialmente prejudiciais implementadas em cerca de 22 milhões de CDs. Quando inserido em um computador, os CDs instalavam dois softwares que forneciam uma forma de gestão de direitos digitais, modificando o sistema operacional para interferir com a cópia do CD. Ambos os programas não podiam ser facilmente desinstalados, e eles criaram vulnerabilidades consideradas malwares. Segundo um usuário, um dos programas instalados, apresentou relatórios sobre escuta particulares; o outro continha o código de várias partes de software de código aberto em uma aparente violação de direitos autorais, e configurou o sistema 6
  • 7. operacional para ocultar a existência desse software, levando a ambos os programas a serem classificados como rootkits. Visando o bom comportamento dos profissionais, a imagem , integridade da empresa e a confiabilidade dos produtos, a ACM/IEEE-CS (Association for Computing Machinery / Institute for Electrical and Eletronics Engineers - Computer Society) escreve um código que servirá como guia para o desenvolvimento de um profissional respeitado e que possa trazer benefícios a empresa, a sociedade e o meio ambiente. Segue um exemplo do código de ética citado acima que evidencia a má prática adotada pela Sony : Público “Aprovar software somente se o mesmo estiver absolutamente convicto que seja seguro, de acordo com suas especificações, passe nos testes apropriados, e não diminua a qualidade de vida, diminua a privacidade, ou prejudique o meio ambiente. O efeito final do trabalho deve ser pelo bem público.” Testes de Software Testes de softwares tem como objetivo, testar a qualidade e forçar o software ao máximo para buscar encontrar possíveis erros, para que essas falhas após identificadas possam ser corrigidas pela equipe de desenvolvimento de software. Testar um software significa verificar através de uma execução controlada se o seu comportamento corre de acordo com o especificado. O objetivo principal desta tarefa é revelar o número máximo de falhas dispondo do mínimo de esforço, ou seja, mostrar aos que desenvolvem se os resultados estão ou não de acordo com os padrões estabelecidos. O teste de software pode ser visto como uma parcela do processo de qualidade de software. A qualidade da aplicação pode e, normalmente, varia significativamente de sistema para sistema. Inicialmente, precisamos conhecer a diferença entre Defeitos, Erros e Falhas. As definições que iremos usar aqui seguem a terminologia padrão para Engenharia de Software do IEEE – Institute of Electrical and Electronics Engineers – (IEEE 610, 1990).  Defeito é um ato inconsistente cometido por um indivíduo ao tentar entender uma determinada informação, resolver um problema ou utilizar um método ou uma ferramenta. Por exemplo, uma instrução ou comando incorreto.  Erro é uma manifestação concreta de um defeito num artefato de software. Diferença entre o valor obtido e o valor esperado, ou seja, qualquer estado intermediário incorreto ou resultado inesperado na execução de um programa constitui um erro.  Falha é o comportamento operacional do software diferente do esperado pelo usuário. Uma falha pode ter sido causada por diversos erros e alguns erros podem nunca causar uma falha. Realizar um bom teste requer a execução de uma série de atividades para o planejamento, projeto e execução do teste. Informações importantes devem ser registradas para permitir a solução dos problemas e também o aprimoramento das práticas de teste. Criar testes aleatoriamente é desperdício de tempo e de esforço; técnicas de teste selecionam situações representativas para o teste, permitindo descobrir problemas com um esforço razoável. Só assim, bem fundamentado, o teste pode permitir que se ganhe confiança no software. 7
  • 8. Manutenção de Software Manutenção de Software é o processo geral de modificação de um sistema depois de ter sido colocado em uso. Corrigir defeitos de código, de projeto, de especificação, acrescentar funcionalidades. Normalmente não envolvem alteração da arquitetura do sistema. Manutenção de software Ao corrigir erros no software podemos ter pequenos trabalho como corrigir um pequeno erro como algo mais trabalhoso que pode envolver um equipe inteira. Portanto, cuidar do patrimônio informacional (conteúdos que estão no software que a empresa usa) é essencial e importante para que gastos maiores não sejam necessários. A manutenção de software é um processo geral de mudanças de um sistema depois que ele é entregue. O tempo geralmente é aplicado ao software sob encomenda no qual grupos de desenvolvimento separados são envolvidos antes e depois da entrega do sistema. As mudanças feitas no software podem ser mudanças simples para corrigir erros de codificação, podem ser mudanças mais extensas para corrigir erros de projetos ou melhorias significantes para corrigir erros de especificação ou para acomodar novos requisitos. As mudanças são implementadas por meio de modificações de componentes de sistemas existentes e, quando necessário, por meio da adição de novos componentes ao sistema. Exitem três tipos diferentes de manutenção de software: Manutenção para reparo de defeitos de software: A correção de erros de codificação é normalmente barata; os erros de projetos são mais caros, pois podem envolver a reescrita de vários componentes dos programas. Erros de requisitos são mais onerosos para serem reparados, pois pode ser necessário o reprojeto do sistema existente. Manutenção para adaptar o software a um ambiente operacional diferente: Esse tipo de manutenção é necessária quando algum aspecto do ambiente do sistema, como o hardware, plataforma do sistema operacional ou outro software de apoio mudam. O sistema da aplicação deve ser modificado para lidar com essas mudanças de ambiente. Manutenção para adicionar funcionalidade ao sistema ou modificá-la: Esse tipo de manutenção é necessária quando os requisitos do sistema mudam em resposta às mudanças organizacionais ou de negócios. A escala de mudanças necessárias para o software é muito maior do que em outros tipos de manutenção. Na prática, não fica muito clara a distinção entre esse tipos de manutenção. Quando você adapta o sistema a um novo ambiente, isso pode ser feito pela adição de funcionalidade para aproveitar as características do novo ambiente. Os defeitos de software frequentemente são expostos porque os usuários usam o sistema de maneiras imprevisíveis. Mudanças no sistema para acomodar o modo de trabalho é o melhor meio de corrigir esses defeitos. Propriedades de um sistema Antes do projetista pensar em manutenção do sistemas, seria mais viável pensar nos requisitos do sistema para que seu software possa funcionar e que não haja por acaso algum erro, ou dano. Algumas propriedades são: VOLUME: O volume de um sistema (espaço total ocupado) varia dependendo de como a montagem dos componentes está organizada e conectada. CONFIABILIDADE: A confiabilidade do sistema depende da confiabilidade dos 8
  • 9. componentes, mas interações inesperadas podem causar novos tipos de falha e, portanto, afetar a confiabilidade do sistema. PROTEÇÃO: A proteção do sistema (sua capacidade de resistir a ataques) é uma propriedade complexa que não pode ser facilmente medida. Podem ocorrer ataques não previstos pelos projetistas do sistema e, dessa maneira, as proteções internas podem ser vencidas. FACILIDADE DE REPAROS:Esta propriedade reflete a facilidade com que um problema no sistema no sistema é resolvido, após sua descoberta. Isso depende da capacidade de diagnosticar o problema, acessar os componentes defeituosos e modificar ou substituir esses componentes. USABILIDADE: Esta propriedade reflete a facilidade com que o sistema pode ser usado. Isso depende dos componentes técnicos do sistema, seus operadores e seu ambiente operacional. Custo de manutenção Quando é desenvolvido um software é necessário estar preparado para os gastos extras, pois a construção do software é apenas uma parte, pois retoques no programa ou melhorias sistemas podem vir a serem necessários, e gastos são exigidos tanto na melhoria quanto na manutenção. Os custos de manutenção como parte dos custos de desenvolvimento variam de um domínio de aplicação para outro, (Guimarães, 1983) sugere que os custos de manutenção de sistemas de aplicação de negócios são bastante comparáveis aos custos de desenvolvimento de sistemas. Para sistemas de tempo real incorporados, aos custos de manutenção podem ser até quatro vezes mais altos do que os custos de desenvolvimento. Os requisitos de alta robustez e desempenho desses sistemas fazem com que seus módulos tenham de ser muito acoplados e, por isso, difíceis de serem modificados. Geralmente é benéfico investir esforço no projeto e na implementação de um sistema para reduzir os custos de manutenção para compreender o sistema e analisar o impacto das mudanças propostas. Assim, o trabalho executado durante o desenvolvimento para tornar o software mais fácil de ser compreendido e alterado contribui para reduzir os custos de manutenção. Boas técnicas de engenharia de software, como especificações precisas, uso da orientação a objetos no desenvolvimento e gerenciamento de configurações, contribuem para a redução dos custos de manutenção. Responsabilidade profissional e ética O comportamento ético e profissional do projetista de software é essencial para o cliente. Saber as limitações daquilo que é permitido ou não, são muito importantes na tomada de decisões. Como outras disciplinas de engenharia, a engenharia de software está dentro de uma estrutura de condições legais e sociais que limita a liberdade dos engenheiros que, por sua vez, devem admitir que o seu trabalho implica responsabilidades mais amplas do que a plicação de habilidades técnicas. Devem também se comportar de forma responsável ética e moralmente, para serem respeitados como profissionais. 9
  • 10. Anexos: Nome E-mail Arthur Antunes Nogueira da Silva arthur.antunes.aa@hotmail.com Décio Gonçalves de Aguiar Neto decioaguiarneto@hotmail.com João Vitor Chaves de Oliveira mrjvco@gmail.com Raul Araújo Lima raul.araujo3212@gmail.com Ronildo Oliveira da Silva ro.nildooliveira@hotmail.com 10
  • 11. Referências ACM: Software Engineering Code of Ethics and Professional Practice, ACM/IEEE joint task force, consultado em Maio de 2014. Disponível em: http://www.acm.org/serving/se/code.htm Collins, W. Robert et al How Goog is Good Enough? An Ethical Analysis of Software Construction and Use. Communications of the ACM. Vol 37. Nº 1 January. 1994. Engenharia de Software: http://paginas.fe.up.pt/~aaguiar/es/artigos%20finais/es_final_10.pdf GOTTERBARN, Don. How the New Software Engineering Code of Ethics Affects You. IEEE Software Engineering. p 58 – 64, nov/dec. 1999 Introdução a teste de software: Consultado em Junho de 2014. Disponível em: http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de-software/8035 Manutenção de Software: http://www.ic.unicamp.br/~ranido/mc626/Manutencao.pdf PRESSMAN, Roger S. Engenharia de software. 6ª ed. Porto Alegre: Bookman, 2006. Teste de software: http://www.softwarepublico.gov.br/5cqualibr/xowiki/Teste-item7 Teste de Software: Junho de 2014. Disponível em: http://pt.wikipedia.org/wiki/Teste_de_software SOMMERVILLE, Ian. Engenharia de software. 8ª ed. São Paulo: Pearson Addison-Wesley, 2007. Sony BMG copy protection rootkit scandal, consultado em Junho de 2014. Disponível em: http://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootkit_scandal 11