11
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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Fases do desenvolvimento de software baseado no código de ética

UNIVERSIDADE FEDERAL DO CEARÁCAMPUS QUIXADÁ

BACHARELADO EM CIÊNCIA DA COMPUTAÇÃORELATÓ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

Page 2: Fases do desenvolvimento de software baseado no código de ética

Sumário

Levantamento de Requisitos..........................................................................................................................

Fase de Projeto................................................................................................................................................

Fase de Implementação..................................................................................................................................

Testes de Software...........................................................................................................................................

Manutenção de Software................................................................................................................................

Anexos...........................................................................................................................................................

Referências....................................................................................................................................................

2

Page 3: Fases do desenvolvimento de software baseado no código de ética

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

Page 4: Fases do desenvolvimento de software baseado no código de ética

Fase de Projeto

ProjetoA 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 programasespecíficos, bancos de dados e arquivos que serão necessários.

Definição do ambiente de aprendizagemO desenvolvimento do software educacional possui características específicas e a

especificação dos requisitos de qualidade inclui o modelo de ensino/aprendizagemselecionado, isto é, a filosofia de aprendizagem subjacente ao software. Este é o único padrãoa ser especificado " a priori" no desenvolvimento do software educacional e que vaideterminar seu desenvolvimento. A experiência tem mostrado que o processo dedesenvolvimento de software adequado à hipermídia educacional deve ser composto domodelo de ciclo de vida de prototipagem evolutiva, acrescido da etapa inicial da escolha doambiente educacional e avaliação por parte de professores e alunos, para que novos requisitossejam incorporados ao hiperdocumento.

Análise de viabilidadeOs 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 dedesenvolvimento. Para que o projeto da hipermídia seja realizado é necessário a definição dealgumas estimativas entre elas recursos, custos e cronogramas. Deve-se fornecer dados sobreos 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 projetoou 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álisee projeto independente da ferramenta a ser utilizada na implementação. Existem diversosmétodos propostos para modelagem de aplicações hipertexto/hipermídia tanto para aplicaçõesgerais quanto para a educação.

Ética no Desenvolvimento de Software

O desenvolvimento de software envolve grande responsabilidade, pois não é apenasaplicar habilidades técnicas, mas sim um conjunto de atividades sociais e legais, oque muitasvezes limita a liberdade das pessoas que trabalham nesta área. Desta forma, o engenheiro desoftware deve se comportar de forma ética e moralmente responsável se deseja ser respeitadocomo um engenheiro profissional..

Os engenheiros de software devem estar convictos a fazer do conjunto da análise, daespecificação, do projeto, do desenvolvimento, do teste e da manutenção de software, umaprofissã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

Page 5: Fases do desenvolvimento de software baseado no código de ética

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 seusjulgamentos 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

Page 6: Fases do desenvolvimento de software baseado no código de ética

Fase de Implementação

Implementação de SoftwareUma 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 eprojetos desenhados e escritos nas fases anteriores.

O profissional que atua diretamente com essa fase é o programador, com a ajuda da equipe edo 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 queajuda a resolver algum problema, por exemplo, controlar um dispositivo, enviar um pedido ouencontrar informações.” (IAN SOMMERVILLE, 2007, p.79).

Ferramentas e documentosDessas normas a serem obedecidas, o profissional deverá escolher a linguagem

(programação, consulta, marcação, estilização,etc), frameworks e ferramentas que utilizará nodecorrer da implementação. Um projeto pode ser iniciado do zero, ou ser baseado na técnica ereuso de software ou padrões de projeto por exemplo.

A reformulação do software se torna muitas vezes eficaz (dependendo da portabilidade daaplicação) e da clara documentação de software, pois toda a equipe, ou outras pessoas deverãoconhecer 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 softwareO 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 eacessibilidade.

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 devários fluxos de repetição, utilizar compiladores que possam fornecer otimizações, técnicas dedinamismo 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 deCDs da Sony e BMG que diz respeito a medidas de proteção contra cópia ilegais e potencialmenteprejudiciais implementadas em cerca de 22 milhões de CDs.

Quando inserido em um computador, os CDs instalavam dois softwares que forneciam umaforma de gestão de direitos digitais, modificando o sistema operacional para interferir com a cópiado CD. Ambos os programas não podiam ser facilmente desinstalados, e eles criaramvulnerabilidades 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 desoftware de código aberto em uma aparente violação de direitos autorais, e configurou o sistema

6

Page 7: Fases do desenvolvimento de software baseado no código de ética

operacional para ocultar a existência desse software, levando a ambos os programas a seremclassificados como rootkits.

Visando o bom comportamento dos profissionais, a imagem , integridade da empresa e aconfiabilidade dos produtos, a ACM/IEEE-CS (Association for Computing Machinery / Institute forElectrical and Eletronics Engineers - Computer Society) escreve um código que servirá como guiapara o desenvolvimento de um profissional respeitado e que possa trazer benefícios a empresa, asociedade e o meio ambiente.

Segue um exemplo do código de ética citado acima que evidencia a má prática adotada pelaSony :

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 aprivacidade, 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áximopara buscar encontrar possíveis erros, para que essas falhas após identificadas possam ser corrigidaspela equipe de desenvolvimento de software.

Testar um software significa verificar através de uma execução controlada se o seucomportamento corre de acordo com o especificado. O objetivo principal desta tarefa é revelar onúmero máximo de falhas dispondo do mínimo de esforço, ou seja, mostrar aos que desenvolvem seos 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 queiremos usar aqui seguem a terminologia padrão para Engenharia de Software do IEEE – Institute ofElectrical and Electronics Engineers – (IEEE 610, 1990).

Defeito é um ato inconsistente cometido por um indivíduo ao tentar entender umadeterminada 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 entreo valor obtido e o valor esperado, ou seja, qualquer estado intermediário incorreto ouresultado inesperado na execução de um programa constitui um erro.

Falha é o comportamento operacional do software diferente do esperado pelo usuário. Umafalha 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 asolução dos problemas e também o aprimoramento das práticas de teste. Criar testesaleatoriamente é desperdício de tempo e de esforço; técnicas de teste selecionam situaçõesrepresentativas 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

Page 8: Fases do desenvolvimento de software baseado no código de ética

Manutenção de Software

Manutenção de Software é o processo geral de modificação de um sistema depois de tersido colocado em uso. Corrigir defeitos de código, de projeto, de especificação, acrescentarfuncionalidades. 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 errocomo algo mais trabalhoso que pode envolver um equipe inteira. Portanto, cuidar do patrimônioinformacional (conteúdos que estão no software que a empresa usa) é essencial e importante paraque 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 dedesenvolvimento separados são envolvidos antes e depois da entrega do sistema. As mudançasfeitas no software podem ser mudanças simples para corrigir erros de codificação, podem sermudanças mais extensas para corrigir erros de projetos ou melhorias significantes para corrigir errosde especificação ou para acomodar novos requisitos. As mudanças são implementadas por meio demodificações de componentes de sistemas existentes e, quando necessário, por meio da adição denovos 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árioscomponentes dos programas. Erros de requisitos são mais onerosos para serem reparados, pois podeser necessário o reprojeto do sistema existente.

Manutenção para adaptar o software a um ambiente operacional diferente: Esse tipo demanutençã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 deveser modificado para lidar com essas mudanças de ambiente.

Manutenção para adicionar funcionalidade ao sistema ou modificá-la: Esse tipo demanutenção é necessária quando os requisitos do sistema mudam em resposta às mudançasorganizacionais ou de negócios. A escala de mudanças necessárias para o software é muito maior doque 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 paraaproveitar as características do novo ambiente. Os defeitos de software frequentemente sãoexpostos porque os usuários usam o sistema de maneiras imprevisíveis. Mudanças no sistema paraacomodar 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 nosrequisitos do sistema para que seu software possa funcionar e que não haja por acaso algum erro, oudano.

Algumas propriedades são:

VOLUME: O volume de um sistema (espaço total ocupado) varia dependendo de como amontagem dos componentes está organizada e conectada.

CONFIABILIDADE: A confiabilidade do sistema depende da confiabilidade dos8

Page 9: Fases do desenvolvimento de software baseado no código de ética

componentes, mas interações inesperadas podem causar novos tipos de falha e, portanto, afetar aconfiabilidade do sistema.

PROTEÇÃO: A proteção do sistema (sua capacidade de resistir a ataques) é umapropriedade complexa que não pode ser facilmente medida. Podem ocorrer ataques não previstospelos projetistas do sistema e, dessa maneira, as proteções internas podem ser vencidas.

FACILIDADE DE REPAROS:Esta propriedade reflete a facilidade com que um problemano sistema no sistema é resolvido, após sua descoberta. Isso depende da capacidade de diagnosticaro 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, poisa construção do software é apenas uma parte, pois retoques no programa ou melhorias sistemaspodem 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íniode aplicação para outro, (Guimarães, 1983) sugere que os custos de manutenção de sistemas deaplicação de negócios são bastante comparáveis aos custos de desenvolvimento de sistemas. Parasistemas de tempo real incorporados, aos custos de manutenção podem ser até quatro vezes maisaltos do que os custos de desenvolvimento. Os requisitos de alta robustez e desempenho dessessistemas fazem com que seus módulos tenham de ser muito acoplados e, por isso, difíceis de seremmodificados.

Geralmente é benéfico investir esforço no projeto e na implementação de um sistema parareduzir os custos de manutenção para compreender o sistema e analisar o impacto das mudançaspropostas. Assim, o trabalho executado durante o desenvolvimento para tornar o software mais fácilde ser compreendido e alterado contribui para reduzir os custos de manutenção. Boas técnicas deengenharia de software, como especificações precisas, uso da orientação a objetos nodesenvolvimento e gerenciamento de configurações, contribuem para a redução dos custos demanutençã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 umaestrutura 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 dehabilidades técnicas. Devem também se comportar de forma responsável ética e moralmente, paraserem respeitados como profissionais.

9

Page 10: Fases do desenvolvimento de software baseado no código de ética

Anexos:

Nome E-mail

Arthur Antunes Nogueira da Silva [email protected]

Décio Gonçalves de Aguiar Neto [email protected]

João Vitor Chaves de Oliveira [email protected]

Raul Araújo Lima [email protected]

Ronildo Oliveira da Silva [email protected]

10

Page 11: Fases do desenvolvimento de software baseado no código de ética

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 SoftwareConstruction 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