Fundamentos
da
Engenharia
de Software
Engenharia: Aplicação de conhecimentos científicos e empíricos, e certas habilidades para criação de estruturas.
Software: Programa de computador.
Engenharia de Software: Aplicação prática do conhecimento para a construção de programas.
Objetivos da ES
aumentar a produtividade
melhorar a qualidade
Importância do Software
uso no cotidiano
manipula informação (dado - informação - conhecimento - poder)
Características do software
não é FÍSICO
desenvolvido/projetado por engenharia
não se “desgasta”
A maioria é feita sob medida em vez de ser montada a partir de componentes
modificabilidade
Entendimento do problema
Definição inadequada
Deficiência no levantamento de necessidades
Deficiência na estruturação e planejamento do projeto
Deficiência na organização do projeto
Dificuldade no encerramento do projeto
Diálogo entre usuários e analistas
Documentação inadequada
Modelos diversos para representação da solução
Passagem da representação da solução para o sistema de processamento de dados
Falta de padronização
1 - “Já temos um manual repleto de padrões e procedimentos para a construção de software. Isso já é suficiente para o pessoal do desenvolvimento”.
2 - “Meu pessoal tem ferramentas de última geração, afinal de contas compramos os mais novos computadores”.
3 - “Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso”.
4 - “Uma declaração geral dos objetivos é suficiente para se começar a escrever programas, podemos preencher os detalhes mais tarde”.
5 - “Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível”.
6 - “Assim que escrevermos o programa e o colocarmos em funcionamento, nosso trabalho estará completo”.
7 - “Enquanto não tiver o programa ´funcionando´, eu não terei realmente nenhuma maneira de avaliar sua qualidade”.
8 - “A única coisa a ser entregue em um projeto bem-sucedido é o programa funcionando”.
Metas da Engenharia de Software
A Engenharia de Software procura fornecer métodos, técnicas e ferramentas para que se possa desenvolver softwares que:
alcancem produtividade no processo de desenvolvimento;
tenham qualidade e confiabilidade;
sejam fáceis de utilizar;
sejam de fácil manutenção.
qualidade
e confiabilidade
manutenção
produtividade facilidade
de uso
Metas da Engenharia de Software
Manutenção:
quantidade de software a manter tende a crescer
tornar o software fácil de ser mantido (modificabilidade)
Qualidade e Confiabilidade:
conformidade com requisitos definidos
ausência de defeitos
robustez
Produtividade:
custos e prazos
gerenciamento do processo
inteligibilidade
equipes de desenvolvimento
Facilidade de uso:
performance
interface com usuário
Paradigmas de Engenharia de Software
Método é uma palavra que vem do grego méthodos, que significa “caminho para se chegar a um fim”.
O Aurélio [FER75] define método como sendo “programa que regula previamente uma série de operações que se devem realizar, apontando erros evitáveis, em vista de um resultado determinado”.
Técnica é uma palavra que vem do grego technikós, que significa "relativo à arte".
O Aurélio [FER75] define técnica como sendo “a parte material ou o conjunto de processos de uma arte”.
Ferramenta é uma palavra que vem do latim ferramentum.
O Aurélio [FER75] define ferramenta como sendo “qualquer utensílio empregado nas artes e ofícios”.
Estes três elementos devem ser envolvidos em um único conjunto de etapas.
O arcabouço deste conjunto é conhecido como ciclo de vida ou paradigma de engenharia de software.
A definição do paradigma, dos métodos, das ferramentas e técnicas para aplicação em desenvolvimento de software cria uma metodologia de desenvolvimento de sistemas (MDS).
Ciclo de vida do software é um modelo que orienta as principais atividades no desenvolvimento de um sistema / software. Ele é fundamental para a definição de uma MDS.
Apresentaremos os enfoques mais comuns de modelos de ciclo de vida do sistema / software.
Este abordagem baseia-se no modelo cascata ou método linear de desenvolvimento (figura 2).
Podem ser utilizados conceitos de Engenharia de Software, a qual prevê atividade de verificação (estamos fazendo o produto de forma correta?), validação (estamos fazendo o produto certo?) e de controle de qualidade.
O ciclo é representado pelas seguintes fases :
Viabilidade : definição preliminar do escopo do sistema, restrições e conceitos alternativos;
Análise : especificação funcional do sistema (Projeto Lógico);
Projeto: especificação completa da arquitetura de hardware e software, estruturas de controle, estruturas de dados do sistema, interfaces;
Implementação: codificação e teste individual dos programas;
Teste : teste dos componentes integrados do sistema;
Implantação : implantação de maneira gradativa, a fim de evitar insatisfação e possibilitando a recorreção do sistema. Implantação piloto / paralela e definitiva;
O
Viabilidade
Análise
Projeto
Implementação
Testes
Implantação
Operação
e Manutenção
O modelo cascata é apropriado para sistemas transacionais onde as rotinas e procedimentos a serem automatizados são altamente estruturados.
A principal desvantagem desta abordagem é o alto custo de correção das especificações quando nas fases de Teste e Implantação.
Conjunto de técnicas e ferramentas de software para o desenvolvimento de modelos “vivos” de sistemas.
Objetivo: Antecipar ao usuário final um modelo de sistema para que ele possa avaliar sua finalidade, identificar erros e omissões, quando em utilização, efetuando de imediato correções e ajustes.
Protótipos
são produtos de experimentação rápida,
onde uma versão simplificada do software é projetada,
desenvolvida, testada e colocada em operação. Os
protótipos são modelos que visam a permitir : que
o projetista analise certas características do projeto que
as especificações escritas no papel não são
capazes de mostrar; que
o modelo seja testado sem o risco de comprometer toda uma produção
em larga escala ou nas proporções reais; e que
o futuro usuário entenda mais facilmente o produto que está
sendo gerado.
A filosofia de protótipos possui as seguintes vantagens :
maior garantia de sucesso técnico e psicológico;
redução no fator tempo : "o usuário gosta de ver o sistema funcionando";
ideal para sistemas gerenciais e de apoio a decisão.
Como desvantagens temos :
exige elevada capacitação gerencial por parte da equipe do projeto;
aparentemente, mais dispendioso (a longo prazo esta desvantagem tende a desaparecer);
exige uma ferramenta apropriada de prototipação.
Modelo de ciclo de vida que se utiliza de protótipos por se adequar muito bem com esta filosofia de desenvolvimento. Cada passo através do ciclo inclui: planejamento, análise e projeto, prototipação e avaliação. Os passos vão sendo repetidos até que um produto seja obtido .
Este é um modelo que atende os seguintes casos:
o problema a ser resolvido não está totalmente entendido;
a realidade pode mudar enquanto o sistema está sendo desenvolvido;
a própria solução adotada pode ter algum efeito colateral desconhecido;
a preocupação está centrada mais na qualidade e funcionalidade do que se produz.
Com base na experiência adquirida com a primeira versão, estabelecem-se novos requisitos para o sistema, e uma nova versão é concebida e implementada.
A prototipação no ciclo de vida espiral tem como objetivos :
estabelecer um diálogo intensivo entre usuários e analistas/projetistas;
encurtar ao máximo o ciclo "concepção-implementação-utilização-avaliação" do sistema;
possibilitar a evolução do sistema através de vários ciclos ou refinamentos sucessivos;
avaliar constantemente o sistema.
Engenharia de Software - Prof. Marcel Hugo
43 CONTABILIDAD DE COSTOS I MODULO I – FUNDAMENTOS
457693DOC PÁGINA 45 DE 45 FUNDAMENTOS DE LA CONSTITUCION
52 CAPÍTULO 2 2 FUNDAMENTOS TEÓRICOS PARA SISTEMAS DE
Tags: engenharia de, sistema. engenharia, engenharia, aplicação, software, fundamentos