Buscar

Prévia do material em texto

ENGENHARIA DE SOFTWARE
Introdução à Engenharia de Software
Ramo da engenharia cujo foco é o desenvolvimento dentro de custos adequados de sistemas de software de qualidade. Software é abstrato, intangível, não é limitado por matérias, ou controlado por leis físicas ou por processos manufaturas. (Sommerville, 2003).
Engenharia de software é uma abordagem sistemática e disciplinada para o desenvolvimento de software (PRESSMAN, 2006).
Uma das grandes dificuldades da engenharia do software é resolver o problema e deixar o cliente satisfeito com o software (JALOTE, 2005).
É um conceito que está baseado em camadas:
Ferramentas
Métodos
Processos
Foco em Qualidade
Descrevendo cada:
 Qualidade: Toda engenharia deve se fundamentar no comprometimento com a qualidade;
 Processo: É a base da engenharia de software. É o processo que “cola” as ferramentas e os métodos;
 Métodos: Fornecem a definição do “como fazer” o desenvolvimento de software;
 Ferramentas: Realizam o suporte automatizado ou semi automatizado para os processos e métodos (exemplo: ferramentas CASE);
A Engenharia de Software (ES) surgiu na década de 1960 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos.
Mas qual crise era essa?
Amadorismo no desenvolvimento
Projetos estourando o orçamento
Projetos estourando o prazo
Software de baixa qualidade
Software muitas vezes não atendendo os requisitos
Projetos não gerenciáveis e código difícil de manter
Exercício
Tenho um terreno de 5 x 10 na cidade de Icó e desejo construir um edifício de 225m², porem a cidade de Icó é considerada patrimônio histórico, ou seja o IPHAN proíbe que qualquer imóvel tenha altura superior a 3 andares.
Ciclos de vida do desenvolvimento de Software
Entende-se como sendo o tempo em que determinado produto ou objeto está em condições satisfatória de uso ou consumo. Dependendo do item que estamos falando esse tempo pode ser medido em números, como dias, horas, anos ou outros, mas no caso de sistemas de informação ele é medido por ciclos que podem variar bastante de caso para caso.
O ciclo de vida de um sistema de informação é composto por:
Criação 
Evolução 
Decadência 
Morte
Embora não existem medidores precisos para estabelecer em que ponto o sistema se encontra, é possível ter uma boa idéia se analisarmos os fatores:
Criação
O sistema é criado com a utilização de um projeto que estabelece os objetivos que o sistema deverá alcançar. Toda a expectativa em relação ao sistema deve ser declarada no projeto. Essa criação envolve todo o processo de análise, refinamento de requisitos, declaração de projeto, documentação, desenvolvimento, testes, implantação e treinamento. É um período longo e trabalhoso.
Evolução
Mudanças nas organizações, no mercado ou ações governamentais forçam os sistemas a evoluírem para atender as novas necessidades das empresas. A mudança no ciclo de vida dos sistemas de informação de criação para evolução ocorre quando os sistemas começam a receber recursos que não estavam previsto no projeto original. Essas mudanças ou evoluções como alguns chamam são benéficas quando bem implementadas e são necessárias em muitos casos para dar um impulso no sistema a fim de adequá-lo a novas realidades que vão surgindo. Novas leis, práticas de consumo, posicionamento da concorrência, entre outros fatores geralmente forçam mudanças nos sistemas a fim de adequá-lo à nova realidade.
Decadência
Um sistema de informação nem sempre consegue acompanhar as evoluções tecnológicas, organizacionais ou exigências de governos. Há situações em que se torna muito oneroso realizar adaptações nos sistemas para atender tais necessidades. Com o tempo o sistema começa entrar em decadência, isto pode ser observado quando as necessidades do mercado começam a distanciar-se dos sistemas de informação.
Morte
A morte de um sistema de informação nem sempre é declarada, mas ela ocorre quando o sistema já não atende mais as necessidades da empresa ou dos usuários. Há casos que a empresa mantém o sistema apenas para consulta de dados antigos ou para operações básicas que ainda sobrevivem.
O ciclo de vida de um sistema passa por três estágios que são
bastante distintos e determinados pelo analista.
Visão TOP
 Concepção - Estágio inicial que surge na primeira ideia da necessidade do sistema
 Desenvolvimento - Engloba desenvolver e implantar o sistema.
 Sua vida útil - Engloba a manutenção do sistema até que a manutenção torne-se menos viável que a implantação de um novo sistema.
Ciclo de vida de um Sistema de Informação
Concepção -> Estudo de Viabilidade -> Processo de Análise -> Projeto do Sistema -> Projeto Detalhado -> Implementação -> Manutenção -> Concepção...
Cada uma dessas fases são distintas e permitem um desenvolvimento gradual e coordenado da construção de um sistema.
Concepção do Sistema
 Essa fase pode ser considerada como o embrião do sistema e requer que a alta administração da empresa esteja empenhada em resolver o problema existente, caso contrário, o nosso sistema não consegue sair do papel.
 Nessa fase, o analista faz uma estimativa grosseira de custos, pois, como o processo, está na fase inicial, é impossível provisionar o custo do investimento.
 É imprescindível que o analista defina com bastante clareza quais são os principais objetivos a serem atingidos com o seu projeto para que o sistema não pare por aqui.
Estudo de Viabilidade
 Essa fase tem por objetivo mostrar à alta administração da empresa se vale a pena ou não prosseguir o trabalho de solução do problema detectado, significando, portanto, demonstrar sucintamente se é conveniente continuar o projeto.
 Trata-se de uma fase em que o analista tem de “vender” a sua ideia à empresa, e por isso a habilidade de tal profissional é de extrema importância. Para a construção de todo e qualquer sistema, a empresa terá de investir e logicamente buscará o retorno do investimento. Estudar a viabilidade significa apresentar alternativas para a empresa tomar importantes decisões.
Esse estudo deve ser realizado pelo analista em conjunto com o usuário e a administração da empresa que sem vias de dúvidas, deverão estar emprenhados na solução do problema. A equipe de análise deverá apresentar um relatório detalhado, demonstrando custos e benefícios que suas alternativas trarão à empresa.
Processo de Análise
 Consiste em fazer um levantamento de dados e fatos para descobrir o que realmente precisa ser feito. É o conhecimento do problema pelo analista.
 Nesta fase, o usuário vai discutir o seu problema diretamente com o pessoal de análise e ao mesmo tempo fazer uma avaliação do sistema existente.
 A partir do momento que o analista conhece o problema do usuário, basta transformar as suas necessidades em especificações técnicas para continuar o seu trabalho.
 Requisitos
 Modelo lógico do sistema
 Diagramação
Projeto do Sistema e Projeto Detalhado
 Durante a fase do projeto, o analista vai assimilando exatamente o que deve ser feito, começando a sair do lógico para o físico.
 Essas alternativas precisam levar em conta, principalmente, os custos e benefícios que serão provocados pelo desenvolvimento e operação do novo sistema.
Implementação
 A fase de implementação é, na prática, a construção física do sistema proposto.
 A partir das definições detalhadas dos programas, o programador passará a codificá-lo na linguagem de programação escolhida.
Manutenção
 A manutenção de um sistema é a operação permanente que consiste na correção de possíveis erros e na melhoria do seu desempenho.
 Portanto, manutenção de sistemas significa apoio continuado ao usuário. Um sistema sem manutenção tem vida curta.
Ciclo de Vida de Desenvolvimento Software
Ciclos de vida do software descrevem como um software deve ser desenvolvido. Basicamente definem a ordem global das atividades envolvidas em um contexto de projeto de software e propõe uma estratégiade desenvolvimento que pode ser aplicada a um determinado contexto de projeto de software.
O processo de software
Um conjunto estruturado de atividades necessárias para desenvolver um sistema de software. Existem vários processos de desenvolvimento de software diferentes mas todos envolvem:
 Especificação – definição do quê o sistema deve fazer;
 Projeto e implementação – definição da organização do sistema e implementação do sistema;
 Validação – checagem de que o sistema faz o que o cliente deseja;
 Evolução – evolução em resposta a mudanças nas necessidades do cliente.
PROCESSO DE SOFTWARE X MODELO DE PROCESSO
PROCESSO DE SOFTWARE - Um conjunto estruturado de atividades necessárias para desenvolver um sistema de software.
MODELO DE PROCESSO - Um modelo de processo de desenvolvimento de software é uma representação abstrata de um processo. Ele apresenta uma descrição do processo de uma perspectiva em particular.
Modelos de processos formais
Processos são basicamente divididos em quatro atividades básicas:
 Especificação;
 Desenvolvimento;
 Validação;
 Evolução.
Partindo disso, muitos modelos já foram propostos:
Modelo Cascata
Retrata um desenvolvimento gradual e possui sequência de passos em ordem que devem ser seguidos.
Análise e Definição de Requisitos: as funções, as restrições e os objetivos do sistema são estabelecidos por meio de consulta aos usuários do sistema. Em seguida, são definidos em detalhes e servem como uma especificação do sistema.
Projeto de Sistemas e Software: o processo de projeto de sistemas agrupa os requisitos em sistemas de hardware e software. Envolve a identificação e a descrição das abstrações do sistema de software e suas relações.
Implementação e Testes de Unidade: Durante este estágio, o projeto do software é compreendido como um conjunto de programas ou unidades de programa. O teste de unidade envolve verificar se cada unidade atende sua especificação.
Integração e Teste de sistemas: as unidades de programa ou programas individuais são integrados e testados como um sistema completo para garantir que os requisitos foram atendidos. Depois do teste, o software é entregue ao cliente.
Operação e manutenção: O sistema é instalado e colocado em operação. Envolve corrigir erros que não foram descobertos em estágios anteriores, melhorando a implementação e descobrindo novos requisitos.
Problemas:
Divisão inflexível do projeto em estágios distintos torna difícil responder às mudanças nos requisitos do cliente, por isso esse modelo só é apropriado quando os requisitos são bem entendidos e as mudanças durante o processo de projeto serão limitadas. Poucos sistemas de negócio possuem requisitos estáveis. O principal inconveniente do modelo cascata é a dificuldade de acomodação de mudanças depois que o processo já foi iniciado. Em princípio, uma fase precisa ser completada antes de se mover para a próxima fase.
Modelo Incremental
Tem com base a ideia de desenvolver uma implementação inicial, expor o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões, até que tenha sido desenvolvido. A especificação, desenvolvimento e validação são executados simultaneamente para gerar um retorno rápido.
Problemas:
O processo não é visível: como o sistema é desenvolvido rapidamente, não há tempo de documentar as versões; Os sistemas são mal estruturados: mudanças constantes podem corromper a estrutura do software; Requer ferramentas e técnicas especiais: que nem sempre são disponíveis ou são aplicáveis ao caso.
Aplicabilidade:
Para sistemas interativos pequenos ou de médio porte; Para partes de sistemas grandes (p.ex., a interface com o usuário); Para sistemas de vida curta.
Modelo Espiral
O processo é representado como uma espiral ao invés de uma sequência de atividades com retornos. Cada loop na espiral representa uma fase do processo. Os riscos são avaliados explicitamente e resolvidos no decorrer do processo.
Definição de objetivos – São identificados os objetivos específicos para cada fase.
Avaliação e redução de riscos – Os riscos são avaliados e atividades executadas para reduzir os principais riscos.
Desenvolvimento e validação – Um modelo de desenvolvimento para o sistema é escolhido, pode ser qualquer um dos modelos genéricos.
Planejamento – O projeto é revisto e a próxima fase da espiral é planejada.
Desvantagens do Modelo Espiral
Pode ser difícil convencer grandes clientes ( particularmente em situações de contrato) de que a abordagem evolutiva é controlável. A abordagem deste tipo de modelo exige considerável experiência na avaliação dos riscos e fia-se nessa experiência para o sucesso. Se um grande risco não for descoberto, poderão ocorrer problemas. É importante ter em conta que podem existir diferenças entre o protótipo e o sistema final. O protótipo pode não cumprir os requisitos de desempenho, pode ser incompleto, e pode refletir somente algumas facetas do sistema a desenvolver.
Vantagens do Modelo Espiral
O modelo em espiral permite que ao longo de cada iteração se obtenham versões do sistema cada vez mais completas, recorrendo à prototipagem para reduzir os riscos. Este tipo de modelo permite a abordagem do refinamento seguido pelo modelo em cascata, mas que incorpora um enquadramento iterativo que reflete de uma forma bastante realística, o processo de desenvolvimento.

Mais conteúdos dessa disciplina