UNIVERSIDADE FEDERAL DO CEARÁ
CAMPUS QUIXADÁ
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
RELATÓRIO AVALIATIVO
ARTHUR ANTUNES NOGU...
Sumário
Levantamento de Requisitos...........................................................................................
Levantamento de Requisitos
O processo de levantamento de requisitos é primordial para o desenvolvimento de um
software poi...
Fase de Projeto
Projeto
A fase de projeto decide como o sistema irá operar, em termos de: hardware, software
e infraestrut...
princípios.
Público. Engenheiros de Software devem atuar consistentemente com os interesses públicos.
Clientes e empregado...
Fase de Implementação
Implementação de Software
Uma das partes mais conhecidas do processo de desenvolvimento de software ...
operacional para ocultar a existência desse software, levando a ambos os programas a serem
classificados como rootkits.
Vi...
Manutenção de Software
Manutenção de Software é o processo geral de modificação de um sistema depois de ter
sido colocado ...
componentes, mas interações inesperadas podem causar novos tipos de falha e, portanto, afetar a
confiabilidade do sistema....
Anexos:
Nome E-mail
Arthur Antunes Nogueira da Silva arthur.antunes.aa@hotmail.com
Décio Gonçalves de Aguiar Neto decioagu...
Referências
ACM: Software Engineering Code of Ethics and Professional Practice, ACM/IEEE joint task force,
consultado em M...
Próximos SlideShares
Carregando em…5
×

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

881 visualizações

Publicada em

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

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
881
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
19
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×