segunda-feira, 16 de agosto de 2010

[ATPS 1] Engenharia de Software

Definições:
Sommerville (1992) a engenharia de software é uma disciplina de engenharia relacionada a todos os aspectos de produção de software, envolve questões técnicas e não técnicas, tais como a especificação do conhecimento, técnicas de projeto e implementação, conhecimentos dos fatores humanos pelo engenheiro de software e ainda, gestão de projetos.
Maffeo (1992) a engenharia de software é: “a área interdisciplinar que engloba vertentes tecnológica e gerencial visando abordar de modo sistemático, processos de construção, implantação e manutenção de produtos de software com qualidade assegurada por construção segundo cronogramas e custos previamente definidos”.
Paula filho (2001) a engenharia de software é complexa, porem distinta e envolve múltiplas variáveis, tais como a arte, atendimento das necessidades humanas, conhecimentos científicos, conhecimentos empíricos, habilidades específicas, recursos naturais, formas adequadas, dispositivos, estruturas e processos. Não deve ser confundida com ciência da computação como um todo, pois ela usa resultados da ciência e fornece problemas para seus estudos.
Carvalho e Chiossi (2001) a engenharia de software é uma disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a percepção do problema ate o momento que o sistema desenvolvido deixa de ser operacional, visando resolver problemas inerentes ao processo de desenvolvimento e ao produto de software.
Roger S. Pressman engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientemente em maquinas reais.
Podemos perceber claramente uma concordância de todos os estudiosos acima quanto à questão do uso de técnicas de engenharia na construção de software, muitos deles fazem referencia ao uso de técnicas já existentes, no entanto um vai mais além e fala da criação de princípios, o que pode ser considerado uma técnica valiosa, partindo do pressuposto que cada problema tem uma solução diferente e cada solução poderá ter um tratamento diferente para sua implementação. Podemos verificar também a concordância de alguns deles quanto à presença de fatores não humanos, justificando que a preocupação com fatores não técnicos também deve ser uma regra na construção de um software, porém há quem omita em sua definição a importância dos fatores humanos para o sucesso na construção de um software.

Atividades de desenvolvimento de software
Levantamento de requisitos:
A análise de requisitos é simplesmente o levantamento de todos os requisitos determinantes para o bom funcionamento de um software. Requisitos dividem-se em funcionais e não-funcionais.
Funcionais: determinam como o software irá funcionar, como deve se comportar a entrada de dados e qual serão as informações fornecidas como saída do processo:
Tipos de dados de entrada, Tipos de dados de saída, tipos de relatórios a serem emitidos, no geral são especificações que ajudam o analista na definição do que o sistema irá fazer.
Não funcionais não são necessários para o funcionamento do software:
A cor da tela, o tipo da letra usada nas telas, tamanho das telas, se serão de tamanho fixo ou não etc..
Analise dos requisitos
Nesta parte e feito um minuciosa analise dos dados colhidos na fase anterior para a validação dos requisitos, assim definido saberíamos o que o sistema devera fazer. É quando são definidas as classes necessárias para o desenvolvimento do software e determinantes para que este atenda as necessidades do cliente, também e feita a parte de diagramação do software definindo o relacionamento das classes, seqüência em que os dados serão processados, estados do objeto, diagramas de colaboração e outros, caso sejam necessários. A partir desses diagramas ficaria mais visível o modo que os sistema solucionaria o problema do cliente. No caso do nosso cliente definiremos quais classes o atenderia melhor e quais dados seriam necessários armazenar.
Projeto
Nesta fase é que deve ser considerado, como o sistema funcionará internamente, para que os requisitos do cliente possam ser atendidos. Alguns aspectos devem ser considerados nessa fase de projeto do sistema, como: arquitetura do sistema, linguagem de programação utilizada, Sistema Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica, entre outros.
No projeto é gerada uma descrição computacional, mencionando o que o software deve fazer, e deve ser coerente com a descrição realizada na fase de análise de requisitos.
O projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e projeto detalhado (ou projeto de baixo nível).
Em um processo de desenvolvimento orientado a objetos, o projeto da arquitetura normalmente é realizado por um arquiteto de software. O projeto da arquitetura visa distribuir as classes de objetos relacionados do sistema em subsistemas e seus componentes, distribuindo também esses componentes pelos recursos de hardware disponíveis.
Já no projeto detalhado, são modeladas as relações de cada módulo com o objetivo de realizar as funcionalidades do módulo. Além de desenvolver o projeto de interface com o usuário e o projeto de banco de dados.

Implementação:
Nessa parte ocorre a implementação de tudo o que pesquisado e desenvolvido nos passos anteriores agora o sistema será efetivamente desenvolvido através da codificação na linguagem escolhida, ou em outras palavras escrever o código do software.
Testes
É hora de testar o funcionamento do programa, verificar qual o comportamento do sistema quanto à entrada de dados, saídas, tratamentos de erros, tempo de processamento e busca no banco, segurança e integridade. Não devemos esquecer que os testes não deverão ser feitos pelos programadores, pois se criam vícios de programação, o que poderia comprometer a qualidade do teste e conseqüentemente do software.
Implantação
Implantação do sistema consiste em colocar o software para funcionar no ambiente do cliente, instalação do sistema e do banco de dados e também contem a parte de treinamento de usuários, migração de dados caso seja necessário e suporte técnico.


Vantagens
Organização do processo de desenvolvimento:
Como vimos anteriormente o processo de produção de software seguindo a engenharia de sistemas define que passos bem definidos sejam cumpridos sem que outros sejam iniciados principalmente pela dependência entre eles.
Qualidade final:
Devido à grande organização técnica e especificação definida de processos de desenvolvimento, a qualidade do produto e indiscutível.
Facilidade de manutenção:
Devido a quantidade de documentação exigente e a distribuição de componentes e classes o sistema se torna mais fácil de manter.
Custo benefício:
Geralmente o custo benefício de um software desenvolvido usando técnicas de engenharia de são mais gratificantes, possuem vida mais longa e mais possibilidade de evolução

Desvantagens
Clientes desinformados:
Os clientes não estão familiarizados com as linguagens de especificação formal, o que pode conduzi-lo ao não financiamento de projetos com este tipo de especificação.
Engenheiros inexperientes:
Dificuldade de engenheiros de software em formalizar e desenvolver especificações devido à falta de experiência.


Custo elevado:
Dificuldade em demonstrar por que o cliente deve pagar por um custo mais alto devido a sua falta de informações técnicas.
Falta de ferramentas dirigidas voltadas para a implementação:
Poucas ferramentas dirigidas para a implementação, já que o grande foco da disciplina tem um nível altamente teórico voltado a documentação e especificação de processos.

RELATORIO DE IFORMAÇOES INICIAIS
À RSLB Consultoria S/A
Introdução
Este relatório serve para a apreciação das vantagens que a engenharia de software pode oferecer para desenvolvedores na construção de sistemas computacionais e também as principais atividades a serem desenvolvidas na construção do software.
1. A engenharia de software
Reunindo as definições de autores consagrados, poderíamos dizer que, a engenharia de software e a disciplina obrigatória na construção, gerenciamento e manutenção de sistemas computacionais visando à qualidade, economia e satisfação do cliente quanto ao produto final, pois devido as suas técnicas e métodos bem definidos quanto ao processo de produção de softwares.
2 A construção do sistema
Como atividade inicial, faremos uma visita vossa empresa no intuito de conhecer o ambiente de produção, venda e logística da empresa como beneficio desta visita poderíamos fazer um breve levantamento de processos existentes bem como estrutura de rede caso exista e o nível de familiarização dos funcionários com sistemas computacionais, tanto nível operacional, estratégico operacional, e estratégico gerencial. Logo após partiremos então para a realização de atividades voltadas a construção do novo sistema, algumas dela tem participação direta do cliente, as quais citarei abaixo:
2.1 Levantamento de requisitos:
A parte da análise de sistemas que busca reunir todas as informações necessárias para que produto final de software possa atingir as amplas expectativas do cliente. Não podemos deixar de incluir o hardware na lista de requisitos.
22.2 Análise de requisitos:
Os requisitos apresentados pelo cliente podem não serem necessários ou viáveis para a construção do sistema, cabe aos profissionais envolvidos no projeto a perfeita análise dos requisitos e validar aqueles realmente necessários para a perfeita conclusão do trabalho.
Demais processos não requerem a participação direta do cliente, portanto não serão descritos, principalmente pelo seu baseamento técnico e cientifico o que poderia ir alem do conhecimento do cliente.
III Apresentação da produção
Podemos definir junto ao cliente uma política de apresentação periódica do andamento da produção, como projeto de interfaces e módulos a medida em estes forem produzidos estabelecendo assim uma política de integridade e confiança já que a aprovação final do serviço será dada por ele.
VI. Conclusão
Podemos concluir neste estudo inicial, será imprescindível o uso de técnicas de engenharia de software na construção do sistema, visto que fazendo uma comparação das vantagens e desvantagens em se usar estas técnicas as desvantagens tornam-se praticamente ignoráveis, alem da cientificidade quanto a técnicas de organização de etapas de construção.
Poderíamos dizer que usar a engenharia de software como base para a produção do sistema e a garantia que o produto final será o melhor possível.
Gostaria de ressaltar também a grande importância do cliente nessa primeira etapa de levantamento e analise de requisitos, vendo que as informações passadas por ele provavelmente definirá o formato do produto final e não deixando de lembrar-los que todas as mudanças requeridas deverão ser comunicadas imediatamente a gerencia do projeto para que possam tomar as decisões de forma rápida e eficaz.
Bibliografia
Roger s Pressman (engenharia de software 6°edição, Mc Graw Hill, 2006);
Sommerville (engenharia de software 8° edição, Pearson Prentice Hall, 2007);
Denis Alcides Rezende (engenharia de software e sistemas de informação 3°edição, Brasport, 2005);
Shari Lawrence Pfleeger (engenharia de software teoria e pratica 2°edição, Pearson Prentice hall, 2004)
http://www.scribd.com/doc/33799321/Trabalho-Engenharia-de-Software-Davi


Claudio Márcio Gonçalves Ra:1816323420
Elizeti Nericke Ra: 0850254
Carlos Alessandro Soares Ra: 1801241420

Nenhum comentário:

Postar um comentário