segunda-feira, 16 de agosto de 2010

[ATPS 1] Introdução a Engenharia de Software


Definições

Friedrich Ludwig Bauer
Define Engenharia de Software como sendo a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais". O próprio significado de engenharia já traz os conceitos de criação, construção, análise, desenvolvimento e manutenção.

IEEE, 1993
A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. O estudo de abordagens e princípios a fim de obter economicamente softwares confiáveis e que executem de forma eficiente nas máquinas reais”
Krakowak,1985
Engenharia de software pode ser definida como sendo o conjunto de métodos, técnicas e ferramentas necessárias à produção de software de qualidade para todas as etapas do ciclo de vida do produto.

Anneliese Mayrhause 1990
Uma disciplina da Ciência da Computação que oferece Métodos, Técnicas e Ferramentas para desenvolver e manter softwares com alta qualidade para a resolução de problemas.

Arndt Von Staa, 1987
O desenvolvimento e a aplicação de ciência matemática, técnicas, métodos e ferramentas para o desenvolvimento e a manutenção econômica de software de qualidade preditível e controlável, operando de modo econômico em máquinas e ambientes reais.

Segundo as definições acima é indispensável que façamos uso das técnicas que a Engenharia de software apresenta com elas é possível criar projetos de sucesso e aprendemos que a qualidade de um produto é profundamente determinada pela qualidade do processo de desenvolvimento e de manutenção usado para construí-lo. Para isso basta seguirmos as etapas abaixo:
Análise do Sistema: define o papel de cada elemento num sistema baseado em computador, atribuindo em última análise, o papel que o software desempenhará.

Planejamento do Projeto de Software: assim que o escopo do software é estabelecido, os riscos são analisados, os recursos são alocados, os custos são estimados e, tarefas e programação de trabalho definidas.

Análise de Requisitos: o escopo definido para o software proporciona uma direção, mas uma definição detalhada do domínio da informação e da função do software é necessária antes que o trabalho inicie.

Projeto de Software: traduz os requisitos do software num conjunto de representações (algumas gráficas, outras tabulares ou baseadas em linguagem) que descrevem a estrutura de dados, a arquitetura do software, os procedimentos algorítmicos e as características de interface.
Codificação: as representações do projeto devem ser convertidas numa linguagem artificial (a linguagem pode ser uma linguagem de programação convencional ou uma linguagem não procedimental) que resulte em instruções que possam ser executadas pelo computador.

Realização de Testes do Software: logo que o software é implementado numa forma executável por máquina, ele deve ser testado para que se possa descobrir defeitos de função, lógica e implementação.

Correção: mesmo com as melhores atividades de garantia de qualidade de software, é provável que o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir defeitos.

Adaptação: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional e periféricos) para o qual o software foi desenvolvido provavelmente mudará. A manutenção adaptativa muda o software para acomodar mudanças em seu ambiente.
Melhoramento Funcional: a medida que o software é usado, o cliente/usuário reconhecerá funções adicionais que oferecerão benefícios.

A manutenção perfectiva estende o software para além de suas exigências funcionais originais.
Atividades de Proteção: as fases e etapas correlatas descritas são complementadas por uma série de atividades de proteção.
Revisões: efetuadas para garantir que a qualidade seja mantida à medida que cada etapa é concluída.

Documentação: é desenvolvida e controlada para garantir que informações completas sobre o software estejam disponíveis para uso posterior.
Controle das Mudanças: é instituído de forma que as mudanças possam ser aprovadas e acompanhadas.


Aprendemos que utilizando a Engenharia de Software, devemos seguir alguns passos que será indispensável para o sucesso total do software, começando pela divisão das tarefas onde permite identificar se o projeto esta atrasado ou detectar falhas de qualidade no desenvolvimento. No entanto para que o objetivo deste software de controle de produção e venda de calçados se torne viável, competitivo, e atinja todos os requisitos mínimos agregando valor e fazendo com que os seus investidores tenham controle total sobre todo o processo, será indispensável que todas as fases aqui sugeridas sejam devidamente cumpridas.

Um comentário: