quarta-feira, 25 de agosto de 2010

[ATPS 1] - Engenharia de Software

-Definições-

“Uma disciplina da Engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, depois que ele entrou em operação.”[ Sommerville ]

“Abrange o estabelecimento e o uso de sólidos princípios de engenharia, para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”[ Pressman ]

“Baseia-se no estudo e aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software.”[ IEEE Instituto de Engenheiros Eletricistas e Eletrônicos ]

“É 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”[ Fritz Bauer ]

“È 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.”[ Paula filho ]

De acordo com as definições apresentadas , não vejo muita divergência entre o objetivo de cada uma das definições , a não ser pelos modelos de processo que sim vão muito das necessidades explicitadas no projeto a finalidade final para todos ,no entanto ,em comum é uma técnica de sucesso para projetos de software e devem se apoiar num compromisso de qualidade.

-Atividades na Engenharia de Software-

O Processo de Software pode ser visto como um gerador de produtos, sendo que o produto final, ou principal, é o Software em si. É importante perceber que existem subprodutos que são gerados para cada fase -- ao final da fase de Especificação, por exemplo, é comum ter sido desenvolvido e entregue um ou mais documentos que detalham os requisitos do sistema.

Todo modelo de software deve levar em consideração as fases descritas; no entanto, cada um organiza estas fases de uma forma particular de acordo com sua filosofia de organização. Na próxima seção são analisados alguns modelos mencionados na literatura.

Um processo de desenvolvimento de software pode ser visto como um conjunto de atividades organizadas, usadas para definir, desenvolver, testar e manter um software. A seguir, alguns objetivos do processo de desenvolvimento:

  • · Definição das atividades a serem executadas;
  • · Quando determinada atividade deve ser executada;
  • · Pessoa ou grupo a executar tais atividades;
  • · Padronização no processo de desenvolvimento.

Existem diversos processos de desenvolvimento de software, no entanto há algumas atividades básicas comuns à grande parte dos processos existentes, nesse artigo será descrito algumas dessas atividades, como: Especificação; Projeto; Implementação; Testes; Implantação

Especificação

Esta atividade tem como objetivo, compreender o problema, dando aos desenvolvedores e usuários, a mesma visão do que deve ser construído para resolução do problema. Desenvolvedores e clientes, em conjunto, buscam levantar e priorizar as necessidades dos futuros usuários do software (necessidades essas denominadas como requisitos). O Levantamento de Requisitos é a etapa mais importante, no que diz respeito ao retorno de investimentos no projeto. Vários projetos são abandonados pelo baixo levantamento de requisitos, ou seja, membros da equipe não disponibilizaram tempo suficiente para essa fase do projeto, em compreender as necessidades dos clientes em relação ao sistema a ser desenvolvido. E como um sistema de informações geralmente é utilizado para automatizar processos de negócio em uma organização, esses processos da organização devem ser bem compreendidos para que o restante das atividades do processo de desenvolvimento flua de acordo com as reais necessidades do cliente.

Validação: tem por objetivo, assegurar que o sistema de software está atendendo às reais necessidades do cliente;

Verificação: verifica se os modelos construídos na análise estão em conformidade com os requisitos do cliente.

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 etapa, o sistema é codificado a partir da descrição computacional da fase de projeto em uma outra linguagem, onde se torna possível a compilação e geração do código-executável para o software.

Em um processo de desenvolvimento orientado a objetos, a implementação se dá, definindo as classes de objetos do sistema em questão, fazendo uso de linguagens de programação como, por exemplo: Delphi (Object Pascal), C++, Java, etc. Pode-se também utilizar na implementação ferramentas de software e bibliotecas de classes preexistentes para agilizar a atividade, como também o uso de ferramentas CASE, que dinamizam o processo de desenvolvimento, nas várias atividades, onde inclui-se geração de código-fonte, documentação, etc.

Testes

Diversas atividades de testes são executadas a fim de se validar o produto de software, testando cada funcionalidade de cada módulo, buscando, levando em consideração a especificação feita na fase de projeto. Onde o principal resultado é o relatório de testes, que contém as informações relevantes sobre erros encontrados no sistema, e seu comportamento em vários aspectos. Ao final dessa atividade, os diversos módulos do sistema são integrados, resultando no produto de software.

Implantação

Por fim a implantação compreende a instalação do software no ambiente do usuário. O que inclui os manuais do sistema, importação dos dados para o novo sistema e treinamento dos usuários para o uso correto e adequado do sistema. Em alguns casos quando da existência de um software anterior, também é realizada a migração de dados anteriores desse software.

-Vantagens e Desvantagens-

Especificação :

  • Vantagem- É de fundamental importância a compreensão total dos requisitos dos software para se obter sucesso
  • Desvantagem- Má interpretação dos requisitos ,leva a maior parte dos erros encontrados durante os testes e a operação dos sistemas são derivados de um pouco entendimento

Projeto:

  • Vantagem- descreve "como" o software será implementado . É durante a fase de projeto que a estrutura geral e o estilo são definidos
  • Desvantagem- 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

Implementação:

  • Vantagem- Esta fase é uma simples questão de tradução do projeto para um código, já que as decisões mais difíceis já foram tomadas durante a fase de projeto.
  • Desvantagem- Caso não haja uma correta documentação do que esta sendo programado como um glossário , comentários etc ...

Teste :

  • Vantagem- Assegurar que o software está realmente em acordo com suas especificações e livre de erros.
  • Desvantagem-Não fazer tal validação de forma adequada pode comprometer a qualidade do projeto

Implantação :

  • Vantagem- Interação do usuário com software , treinamentos de utilização e manutenção de alguns prováveis erros.
  • Desvantagem- Se todas as partes do processo que antecedem essa não foram, de alguma forma bem sucedida , esse ultimo estagio pode ser bem mais demorado, consumido mais tempo e recursos financeiros.

-Relatório para Apreciação de Atividades-

Para apreciação de nosso Cliente ,cada fase do processo desenvolvido, existe uma série de atividades que são executadas. Estas atividades constituem um conjunto mínimo para se obter um produto de software.Observando as fases individuais e suas atividades associadas, combinando classificações é possível identificar as seguintes atividades:

  1. Especificação :
    1. Engenharia de Sistema: estabelecimento de uma solução geral para o problema, envolvendo questões extra-software.
    2. Análise de Requisitos: levantamento das necessidades do software a ser implementado. A Análise tem como objetivo produzir uma especificação de requisitos, que convencionalmente é um documento.
    3. Especificação de Sistema: descrição funcional do sistema. Pode incluir um plano de testes para verificar adequação.
  2. Projeto:
    1. Projeto Arquitetural: onde é desenvolvido um modelo conceitual para o sistema, composto de módulos mais ou menos independentes.
    2. Projeto de Interface: onde cada módulo tem sua interface de comunicação estudada e definida.
    3. Projeto Detalhado: onde os módulos em si são definidos, e possivelmente traduzidos para pseudo-código.
  3. Implementação :
    1. Codificação: a implementação em si do sistema em uma linguagem de computador.
  4. Validação :
    1. Teste de Unidade e Módulo: a realização de testes para verificar a presença de erros e comportamento adequado a nível das funções e módulos básicos do sistema.
    2. Integração: a reunião dos diferentes módulos em um produto de software homogêneo, e a verificação da interação entre estes quando operando em conjunto.
  5. Implementação ,Manutenção e Evolução:
    1. Nesta fase, o software em geral entra em um ciclo iterativo que abrange todas as fases anteriores.
    2. Compreende a instalação do software no ambiente do usuário. O que inclui os manuais do sistema, importação dos dados para o novo sistema e treinamento dos usuários para o uso correto e adequado do sistema.

“A importância da computação na sociedade moderna tem aumentado o significado do conceito de qualidade de software. Dessa forma, o desenvolvimento de softwares é hoje uma tarefa fundamental e, em muitos casos, de missão crítica”

Bibliografias Utilizadas

  1. Pressman, R.S. Engenharia de Software. São Paulo : Makron Books, 1995.
  2. Degoulet, P., Fieschi, M. Introduction to Clinical Informatics. New York : Springer-Verlag, 1997.
  3. Boehm, B.W. Software Engineering Economics. Englewood Cliffs : Prentice-Hall, 1981.
  4. Murphy, G.F., Hanken, M.A., Waters, K.A. Electronic Health Records : Changing the Vision. Philadelphia : W.B. Saunders Company, 1999.
  5. Ramamoorthy, C.V., Prakash, A., Tsai, W.T., Usuda, Y. Software Engineering : problems and perspectives. Computer. Outubro 1984. P.191-209.
  6. Adelhard, K., Eckel, R., Holzel, D., Tretter, W. A prototype of a computerized patient record. Comput Methods Programs Biomed 1995 sep-oct; 48:115-9.
  7. Davis, M.W. Computerizing Healthcare Information : Developing Electronic Patient Information Systems. Revised edition. New York: Mcgraw-Hill, 1998.
  8. Von Mayrhauser, A. Software Engineering: Methods and Management. San Diego : Academic Press, 1990.
  9. Dolin, R.H. Outcome analysis: considerations for an electronic health record. MD Comput 1997 jan-feb;14(1):50-6.


Thiago Cambiaghi dos Santos - 0850334

Marcelo Machado Gomes – 1801271201

José Dorival Jorge júnior – 1801281219


Nenhum comentário:

Postar um comentário