Banco de Dados - Wagner Siqueira Cavalcante

Propaganda
Engenharia de Software
Conceitos
Prof. MSc Wagner Siqueira Cavalcante
Engenharia de Software (Software Engineering):
É 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 e após o início de sua operação, sendo que:
• Os engenheiros de software devem fazer com que os produtos
funcionem, aplicando teorias, métodos e ferramentas apropriadas e, de
modo seletivo, procuram descobrir soluções para os problemas, mesmo
quando não existem teorias aplicáveis e métodos de apoio.
• Engenharia de Software não se dedica somente aos processos técnicos
de desenvolvimento, mas também às atividades, como:
 gerenciamento de projetos de software,
 desenvolvimento de ferramentas, métodos e teorias que dão apoio
à sua produção.
Engenharia de Software x Ciência da Computação
• Ciência da computação  teoria e fundamentos
• Engenharia de Software  prática = desenvolver/fornecer software útil
Engenharia de Software × Engenharia de Sistemas
• Engenharia de Sistemas:
todos os aspectos relacionados ao
desenvolvimento de sistemas com base em computadores, incluindo
hardware, software e engenharia de processos
 Engenharia de Software faz parte deste processo.
Engenharia de Sistemas
O envolvimento interdisciplinar da engenharia de sistemas envolve
equipes com diferentes formações técnicas, necessárias por causa do
amplo conhecimento exigido, considerando-se todas as implicações de
decisões referentes ao projeto do sistema:
1.
2.
3.
4.
5.
6.
7.
8.
Definição dos requisitos
Projeto do sistema
Desenvolvimento de subsistema
Integração do sistema
Instalação do sistema
Operação do sistema
Evolução do sistema
Desativação do sistema
Ciclo de Vida da Engenharia da Informação
Processo de Software
É um conjunto de atividades, cuja meta é o desenvolvimento ou a
evolução de um software, possui quatro atividades de processo
fundamentais, comuns a todos os processos de software:
• Especificação do software
Define as funcionalidades do software suas restrições e operações;
• Desenvolvimento do software
O software deve ser produzido de modo que atenda as suas
especificações;
• Validação do software
O software tem de ser validado para garantir que ele faz o que o cliente
deseja, ou seja, o que foi especificado;
• Evolução do software
O software deve evoluir para atender às necessidades mutáveis do
cliente e do ambiente.
Modelo de Processo de Software
Representação simplificada de um processo de software, apresentada à
partir de um modelo.
Pela sua natureza, os modelos são simplificações, portanto, uma
abstração do processo real que está sendo descrito.
Dentre os modelos de processo, destacam-se as atividades que são
parte do processo de software, produtos de software e o papel das pessoas
envolvidas na Engenharia de Software:
• Workflow – Seqüência de atividades
• Fluxo de dados ou atividades – fluxo de informações
• Papel/Ação – representa os papéis das pessoas e quais suas
•
•
•
•
•
responsabilidades nas atividades
Paradigmas de desenvolvimento de software
Waterfall - Modelo em cascata
Desenvolvimento evolucionário
Transformação formal - produção de uma especificação formal do
sistema.
Desenvolvimento orientado ao reuso.
Custos da Engenharia de Software
Não existe uma resposta simples que defina “custos”, uma vez que a
distribuição precisa de custos ao longo do processo de software, depende
do processo utilizado e do tipo de software que será desenvolvido.
Custos de Desenvolvimento = 60%, e Testes = 40%, aproximadamente.
Para o software personalizado, os custos de evolução freqüentemente
excedem os de desenvolvimento.
Ferramentas CASE
O acrônimo de CASE significa Computer-Aided Software Engineering, ou
Engenharia de Software auxiliada por computador.
Ela se refere a uma ampla gama de programas utilizados para apoiar as
atividades de processo de software, como análise de requisitos, modelagem
do sistema, depuração e testes.
Principais atributos de um bom software:
Às vezes chamados de “atributos não funcionais”, estes estão
relacionados à sua facilidade de manutenção, nível de confiança, eficiência
e facilidade de uso.
Requisitos não
funcionais
Organizacionais
Produto
Facilidade de uso
Portabilidade
Eficiência
Desempenho
Confiabilidade
Espaço
Entrega
Implementação
Padrões
Externos
Interoperabilidade
Segurança
Privacidade
Legais
Éticos
Projeto
É um empreendimento temporário que tem por finalidade criar um
produto, serviço ou resultado único...
 têm natureza temporária = data de início e fim definidos
 concluídos quando as respectivas metas e objetivos forem cumpridos
 cancelados quando não será possível cumprir suas metas e objetivos
As atividades de operação de um projeto abrangem um trabalho
contínuo, sem uma data de término, e geralmente repetem o mesmo
processo.
Gerenciamento de Projetos
Processo que exige várias atividades
• planejar,
• colocar em ação o plano do projeto e
• acompanhar o seu progresso e desempenho.
O planejamento é uma das funções mais importantes do projeto, pois é
o processo em que se define o padrão a ser aplicado ao longo do ciclo
devido e será usado para rastrear o desempenho futuro do projeto.
Habilidades Necessárias a um Gerente de Projeto
Muitas organizações nomeiam seus técnicos especialistas como gerentes
de projeto, mas as habilidades e a experiência que os tornam estrelas em
suas áreas técnicas, supostamente se traduzem em aptidões para a
gerência de projetos, mas não é necessariamente assim.
Os gerentes de projetos são profissionais generalistas, com muitas
habilidades em seu repertório.
São solucionadores de problemas que usam várias competências. Na
realidade, eles podem ter aptidões técnicas, todavia isso não é prérequisito para o gerenciamento de projetos.
Equipe de projeto com especialistas técnicos...
Habilidades Necessárias a um Gerente de Projeto
1. Comunicação escrita e oral:
Domínios imprescindíveis para:
 a elaboração de documentos do projeto,
 atualizações de reuniões,
 relatórios de status, etc.,
 assegura que as informações sejam explícitas, claras e completas, e
que o público não tenha dificuldade de entender o que está sendo
transmitido.
Habilidades Necessárias a um Gerente de Projeto
2. Aptidões organizacionais:
Aptidões para rastrear, criar e manter:
 documentos do projeto,
 informações sobre requisitos,
 memorandos,
 relatórios do projeto,
 registros pessoais,
 cotações,
 contratos,
 + organizar reuniões,
 + gerenciar o tempo.
Habilidades Necessárias a um Gerente de Projeto
3. Saber elaborar orçamentos:
Fazer estimativas de custos para a elaboração do orçamento do projeto
requer conhecimentos básicos de finanças e contabilidade, portanto,
desejáveis.
Habilidades Necessárias a um Gerente de Projeto
4. Negociar e influenciar:
Em termos simples, negociar é trabalhar com os outros para se
chegar a um acordo.
Influenciar é a habilidade de convencer as pessoas, tanto a tomarem
atitudes que, de outra forma, não tomariam, quanto também de mudar
de idéia e alterar o rumo dos acontecimentos, o que se reflete nos
resultados.
Habilidades Necessárias a um Gerente de Projeto
5. Capacidade de liderança e de gerenciamento:
Estes não são termos sinônimos. Os líderes expressam sua visão,
obtém consenso para as metas estratégicas, estabelecem diretrizes,
inspiram e motivam outras pessoas.
Habilidades Necessárias a um Gerente de Projeto
6. Saber formar equipes e gerenciar recursos humanos:
É muito utilizada em conjunto com as habilidades de negociação,
influência e gerenciamento, pois sempre será necessária a formação de
equipes, o gerenciamento de recursos humanos, a motivação dos
integrantes, mesmo que estes não sejam seus subordinados diretos.
Pontos principais
A Engenharia de Software é uma disciplina da engenharia que se ocupa
de todos os aspectos da produção de software. Os produtos de software
constituem-se de programas desenvolvidos e da documentação associada.
Os atributos essenciais dos produtos são a facilidade de manutenção,
confiabilidade, eficiência e facilidade de uso.
O processo de software consiste em atividades envolvidas no
desenvolvimento de produtos de software. As atividades básicas são a
especificação, o desenvolvimento, a validação e a evolução de software.
Métodos são meios organizados de produzir software. Eles incluem
sugestões sobre o processo a ser seguido, as anotações a serem utilizadas,
as regras que regem as descrições de sistemas produzidas e as diretrizes
do projeto.
Pontos principais
As ferramentas CASE são sistemas de software projetados para dar
apoio às atividades de rotina no processo de software, tais como editar
diagramas de projeto, verificar diagramas, manter o controle do projeto.
Projetos são atividades com início e fim determinados, com a finalidade
de criar um produto, serviço ou resultado único.
O gerenciamento de projetos é um processo que exige várias atividades,
incluindo planejar, colocar em ação o plano do projeto e acompanhar o
progresso e o desempenho.
Um bom gerente de projetos deve possuir ou lapidar suas habilidades
nas áreas de comunicação, organizacional, negociação, liderança e
criatividade, para poderem resolver os problemas durante a vida de um
projeto.
Download