21
Engenharia de Software Engenharia de Software Conceitos Conceitos Prof. MSc Wagner Siqueira Cavalcante Prof. MSc Wagner Siqueira Cavalcante

Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Embed Size (px)

Citation preview

Page 1: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Engenharia de SoftwareEngenharia de SoftwareConceitosConceitos

Prof. MSc Wagner Siqueira CavalcanteProf. MSc Wagner Siqueira Cavalcante

Page 2: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Engenharia de Engenharia de Software (Software Engineering)Software (Software Engineering)::

É uma disciplina da engenharia que se ocupa de todos os É uma disciplina da engenharia que se ocupa de todos os aspectos da produção de aspectos da produção de softwaresoftware, desde os estágios iniciais de , desde os estágios iniciais de especificação do sistema até a manutenção e após o início de sua especificação do sistema até a manutenção e após o início de sua operação, sendo que:operação, sendo que:• Os engenheiros de Os engenheiros de softwaresoftware devem fazer com que os produtos devem fazer com que os produtos

funcionem, aplicando teorias, métodos e ferramentas funcionem, aplicando teorias, métodos e ferramentas apropriadas e, de modo seletivo, procuram descobrir soluções apropriadas e, de modo seletivo, procuram descobrir soluções para os problemas, mesmo quando não existem teorias para os problemas, mesmo quando não existem teorias aplicáveis e métodos de apoio.aplicáveis e métodos de apoio.

• Engenharia de Software não se dedica somente aos processos Engenharia de Software não se dedica somente aos processos técnicos de desenvolvimento, mas também às atividades, técnicos de desenvolvimento, mas também às atividades, como:como:

gerenciamento de projetos de software, gerenciamento de projetos de software,

desenvolvimento de ferramentas, métodos e teorias desenvolvimento de ferramentas, métodos e teorias que dão apoio que dão apoio à sua produção.à sua produção.

Page 3: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Engenharia de Engenharia de SoftwareSoftware x Ciência da Computação x Ciência da Computação

• Ciência da computação Ciência da computação teoria e fundamentosteoria e fundamentos

• Engenharia de Engenharia de SoftwareSoftware prática = desenvolver/fornecer prática = desenvolver/fornecer softwaresoftware útil útil

Engenharia de Engenharia de SoftwareSoftware ×× Engenharia de Sistemas Engenharia de Sistemas

• Engenharia de Sistemas: Engenharia de Sistemas: todos os aspectos relacionados ao todos os aspectos relacionados ao desenvolvimento de sistemas com base em computadores, desenvolvimento de sistemas com base em computadores, incluindo incluindo hardwarehardware, , softwaresoftware e engenharia de processos e engenharia de processos

Engenharia de Engenharia de SoftwareSoftware faz parte deste processo. faz parte deste processo.

Page 4: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Engenharia de SistemasEngenharia de Sistemas

O envolvimento interdisciplinar da engenharia de sistemas O envolvimento interdisciplinar da engenharia de sistemas envolve equipes com diferentes formações técnicas, necessárias envolve equipes com diferentes formações técnicas, necessárias por causa do amplo conhecimento exigido, considerando-se todas por causa do amplo conhecimento exigido, considerando-se todas as implicações de decisões referentes ao projeto do sistema:as implicações de decisões referentes ao projeto do sistema:

1.1. Definição dos requisitosDefinição dos requisitos

2.2. Projeto do sistemaProjeto do sistema

3.3. Desenvolvimento de subsistemaDesenvolvimento de subsistema

4.4. Integração do sistemaIntegração do sistema

5.5. Instalação do sistemaInstalação do sistema

6.6. Operação do sistemaOperação do sistema

7.7. Evolução do sistemaEvolução do sistema

8.8. Desativação do sistemaDesativação do sistema

Page 5: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante
Page 6: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Ciclo de Vida da Engenharia da InformaçãoCiclo de Vida da Engenharia da Informação

Page 7: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Processo de Processo de SoftwareSoftware

É um conjunto de atividades, cuja meta é o desenvolvimento É um conjunto de atividades, cuja meta é o desenvolvimento ou a evolução de um ou a evolução de um softwaresoftware, possui , possui quatroquatro atividades de atividades de processo fundamentais, comuns a todos os processos de processo fundamentais, comuns a todos os processos de softwaresoftware::• Especificação do Especificação do softwaresoftware

Define as funcionalidades do Define as funcionalidades do softwaresoftware suas restrições e suas restrições e operações;operações;

• Desenvolvimento do Desenvolvimento do softwaresoftwareO O softwaresoftware deve ser produzido de modo que atenda as suas deve ser produzido de modo que atenda as suas especificações;especificações;

• Validação do Validação do softwaresoftwareO O softwaresoftware tem de ser validado para garantir que ele faz o que tem de ser validado para garantir que ele faz o que o cliente deseja, ou seja, o que foi especificado;o cliente deseja, ou seja, o que foi especificado;

• Evolução do Evolução do softwaresoftwareO O softwaresoftware deve evoluir para atender às necessidades deve evoluir para atender às necessidades mutáveis do cliente e do ambiente.mutáveis do cliente e do ambiente.

Page 8: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Modelo de Processo de Modelo de Processo de SoftwareSoftware

Representação simplificada de um processo de Representação simplificada de um processo de softwaresoftware, , apresentada à partir de um modelo. apresentada à partir de um modelo.

Pela sua natureza, os modelos são simplificações, portanto, Pela sua natureza, os modelos são simplificações, portanto, uma abstração do processo real que está sendo descrito. uma abstração do processo real que está sendo descrito.

Dentre os modelos de processo, destacam-se as atividades que Dentre os modelos de processo, destacam-se as atividades que são parte do processo de são parte do processo de softwaresoftware, produtos de , produtos de softwaresoftware e o e o papel das pessoas envolvidas na Engenharia de papel das pessoas envolvidas na Engenharia de SoftwareSoftware::

• Workflow – Seqüência de atividadesWorkflow – Seqüência de atividades• Fluxo de dados ou atividades – fluxo de informaçõesFluxo de dados ou atividades – fluxo de informações• Papel/Ação – representa os papéis das pessoas e quais suas Papel/Ação – representa os papéis das pessoas e quais suas

responsabilidades nas atividadesresponsabilidades nas atividades• Paradigmas de desenvolvimento de Paradigmas de desenvolvimento de softwaresoftware• Waterfall - Modelo em cascataWaterfall - Modelo em cascata• Desenvolvimento evolucionárioDesenvolvimento evolucionário• Transformação formal - produção de uma especificação formal Transformação formal - produção de uma especificação formal

do sistema.do sistema.• Desenvolvimento orientado ao reuso.Desenvolvimento orientado ao reuso.

Page 9: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Custos da Engenharia de Custos da Engenharia de SoftwareSoftware

Não existe uma resposta simples que defina “custos”, uma vez Não existe uma resposta simples que defina “custos”, uma vez que a distribuição precisa de custos ao longo do processo de que a distribuição precisa de custos ao longo do processo de softwaresoftware, depende do processo utilizado e do tipo de , depende do processo utilizado e do tipo de softwaresoftware que que será desenvolvido.será desenvolvido.

Custos de Desenvolvimento = 60%, e Testes = 40%, Custos de Desenvolvimento = 60%, e Testes = 40%, aproximadamente.aproximadamente.

Para o Para o softwaresoftware personalizado, os custos de evolução personalizado, os custos de evolução freqüentemente excedem os de desenvolvimento.freqüentemente excedem os de desenvolvimento.

Page 10: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Ferramentas CASEFerramentas CASE

O acrônimo de CASE significa Computer-Aided O acrônimo de CASE significa Computer-Aided SoftwareSoftware Engineering, ou Engenharia de Engineering, ou Engenharia de SoftwareSoftware auxiliada por auxiliada por computador. computador.

Ela se refere a uma ampla gama de programas utilizados para Ela se refere a uma ampla gama de programas utilizados para apoiar as atividades de processo de apoiar as atividades de processo de softwaresoftware, como , como análise de análise de requisitosrequisitos, , modelagem do sistemamodelagem do sistema, , depuraçãodepuração e e testestestes..Principais atributos de um bom Principais atributos de um bom softwaresoftware::

Às vezes chamados de “atributos não funcionais”, estes estão Às vezes chamados de “atributos não funcionais”, estes estão relacionados à sua relacionados à sua facilidade de manutençãofacilidade de manutenção, , nível de confiançanível de confiança, , eficiênciaeficiência e e facilidade de usofacilidade de uso..

Page 11: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Requisitos não funcionais

OrganizacionaisProduto

Eficiência Confiabilidade

Portabilidade

EspaçoDesempenho

Facilidade de uso

Entrega Implementação

Padrões

Externos

Privacidade

Segurança Éticos

LegaisInteroperabilidade

Page 12: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

ProjetoProjeto

É um empreendimento temporário que tem por finalidade criar É um empreendimento temporário que tem por finalidade criar um produto, serviço ou resultado único...um produto, serviço ou resultado único...

têm natureza temporária = data de início e fim definidostêm natureza temporária = data de início e fim definidos

concluídosconcluídos quando as respectivas metas e objetivos forem quando as respectivas metas e objetivos forem cumpridoscumpridos

canceladoscancelados quando não será possível cumprir suas metas e quando não será possível cumprir suas metas e objetivosobjetivos As atividades de operação de um projeto abrangem As atividades de operação de um projeto abrangem um trabalho contínuo, sem uma data de término, e geralmente um trabalho contínuo, sem uma data de término, e geralmente repetem o mesmo processo.repetem o mesmo processo.Gerenciamento de ProjetosGerenciamento de Projetos

Processo que exige várias atividadesProcesso que exige várias atividades

• planejar, planejar,

• colocar em ação o plano do projeto e colocar em ação o plano do projeto e

• acompanhar o seu progresso e desempenho. acompanhar o seu progresso e desempenho.

O O planejamentoplanejamento é uma das funções mais importantes do é uma das funções mais importantes do projeto, pois é o processo em que se define o padrão a ser 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 aplicado ao longo do ciclo devido e será usado para rastrear o desempenho futuro do projeto.desempenho futuro do projeto.

Page 13: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

Muitas organizações nomeiam seus técnicos especialistas Muitas organizações nomeiam seus técnicos especialistas como gerentes de projeto, mas as habilidades e a experiência que como gerentes de projeto, mas as habilidades e a experiência que os tornam estrelas em suas áreas técnicas, supostamente se os tornam estrelas em suas áreas técnicas, supostamente se traduzem em aptidões para a gerência de projetos, mas não é traduzem em aptidões para a gerência de projetos, mas não é necessariamente assim.necessariamente assim.

Os gerentes de projetos são Os gerentes de projetos são profissionais generalistasprofissionais generalistas, com , com muitas habilidades em seu repertório. muitas habilidades em seu repertório.

São solucionadores de problemas que usam várias São solucionadores de problemas que usam várias competências. Na realidade, eles podem ter aptidões técnicas, competências. Na realidade, eles podem ter aptidões técnicas, todavia isso não é pré-requisito para o gerenciamento de projetos. todavia isso não é pré-requisito para o gerenciamento de projetos.

Equipe de projeto com especialistas técnicos...Equipe de projeto com especialistas técnicos...

Page 14: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

1.1. Comunicação escrita e oralComunicação escrita e oral: :

Domínios imprescindíveis para:Domínios imprescindíveis para: a elaboração de documentos do projeto, a elaboração de documentos do projeto, atualizações de reuniões, atualizações de reuniões, relatórios de status, etc., relatórios de status, etc.,

assegura que as informações sejam explícitas, claras e assegura que as informações sejam explícitas, claras e completas, e que o público não tenha dificuldade de entender completas, e que o público não tenha dificuldade de entender o que está sendo transmitido.o que está sendo transmitido.

Page 15: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

2.2. Aptidões organizacionaisAptidões organizacionais: :

Aptidões para rastrear, criar e manter:Aptidões para rastrear, criar e manter: documentos do projeto, documentos do projeto, informações sobre requisitos, informações sobre requisitos, memorandos, memorandos, relatórios do projeto, relatórios do projeto, registros pessoais, registros pessoais, cotações, cotações, contratos, contratos, + organizar reuniões, + organizar reuniões, + gerenciar o tempo.+ gerenciar o tempo.

Page 16: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

3.3. Saber elaborar orçamentosSaber elaborar orçamentos: :

Fazer estimativas de custos para a elaboração do orçamento Fazer estimativas de custos para a elaboração do orçamento do projeto requer conhecimentos básicos de do projeto requer conhecimentos básicos de finanças e finanças e contabilidadecontabilidade, portanto, desejáveis., portanto, desejáveis.

Page 17: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

4.4. Negociar e influenciar:Negociar e influenciar:

Em termos simples, Em termos simples, negociarnegociar é trabalhar com os outros é trabalhar com os outros para se chegar a um acordo. para se chegar a um acordo.

InfluenciarInfluenciar é a habilidade de convencer as pessoas, tanto é a habilidade de convencer as pessoas, tanto a tomarem atitudes que, de outra forma, não tomariam, a tomarem atitudes que, de outra forma, não tomariam, quanto também de mudar de idéia e alterar o rumo dos quanto também de mudar de idéia e alterar o rumo dos acontecimentos, o que se reflete nos resultados.acontecimentos, o que se reflete nos resultados.

Page 18: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

5.5. Capacidade de liderança e de gerenciamentoCapacidade de liderança e de gerenciamento: :

Estes não são termos sinônimos. Os líderes expressam Estes não são termos sinônimos. Os líderes expressam sua visão, obtém consenso para as metas estratégicas, sua visão, obtém consenso para as metas estratégicas, estabelecem diretrizes, inspiram e motivam outras pessoas.estabelecem diretrizes, inspiram e motivam outras pessoas.

Page 19: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Habilidades Necessárias a um Gerente de ProjetoHabilidades Necessárias a um Gerente de Projeto

6.6. Saber formar equipes e gerenciar recursos humanosSaber formar equipes e gerenciar recursos humanos: :

É muito utilizada em conjunto com as habilidades de É muito utilizada em conjunto com as habilidades de negociação, influência e gerenciamento, pois sempre será negociação, influência e gerenciamento, pois sempre será necessária a formação de equipes, o gerenciamento de necessária a formação de equipes, o gerenciamento de recursos humanos, a motivação dos integrantes, mesmo que recursos humanos, a motivação dos integrantes, mesmo que estes não sejam seus subordinados diretos. estes não sejam seus subordinados diretos.

Page 20: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Pontos principaisPontos principais

A A Engenharia de Engenharia de SoftwareSoftware é uma disciplina da engenharia que é uma disciplina da engenharia que se ocupa de todos os aspectos da produção de se ocupa de todos os aspectos da produção de softwaresoftware. Os . Os produtos de produtos de softwaresoftware constituem-se de programas desenvolvidos constituem-se de programas desenvolvidos e da documentação associada. Os atributos essenciais dos e da documentação associada. Os atributos essenciais dos produtos são a produtos são a facilidade de manutençãofacilidade de manutenção, , confiabilidadeconfiabilidade, , eficiênciaeficiência e e facilidade de usofacilidade de uso..

O processo de O processo de softwaresoftware consiste em atividades envolvidas no consiste em atividades envolvidas no desenvolvimento de produtos de desenvolvimento de produtos de softwaresoftware. As atividades básicas . As atividades básicas são a são a especificaçãoespecificação, o , o desenvolvimentodesenvolvimento, a , a validaçãovalidação e a e a evoluçãoevolução de de softwaresoftware..

MétodosMétodos são meios organizados de produzir são meios organizados de produzir softwaresoftware. Eles . Eles incluem incluem sugestõessugestões sobre o processo a ser seguido, as sobre o processo a ser seguido, as anotaçõesanotações a a serem utilizadas, as serem utilizadas, as regrasregras que regem as descrições de sistemas que regem as descrições de sistemas produzidas e as produzidas e as diretrizesdiretrizes do projeto. do projeto.

Page 21: Engenharia de Software Conceitos Prof. MSc Wagner Siqueira Cavalcante

Pontos principaisPontos principais

As As ferramentas CASEferramentas CASE são sistemas de são sistemas de softwaresoftware projetados para projetados para dar apoio às atividades de rotina no processo de dar apoio às atividades de rotina no processo de softwaresoftware, tais , tais como como editar diagramas de projetoeditar diagramas de projeto, , verificar diagramasverificar diagramas, , manter o manter o controlecontrole do projeto. do projeto.

ProjetosProjetos são atividades com são atividades com início e fim determinadosinício e fim determinados, com a , com a finalidade de criar um produto, serviço ou resultado único.finalidade de criar um produto, serviço ou resultado único.

O O gerenciamento de projetosgerenciamento de projetos é um processo que exige várias é um processo que exige várias atividades, incluindo atividades, incluindo planejarplanejar, , colocar em ação o plano do projetocolocar em ação o plano do projeto e e acompanhar o progresso e o desempenhoacompanhar o progresso e o desempenho..

Um bom Um bom gerente de projetosgerente de projetos deve possuir ou lapidar suas deve possuir ou lapidar suas habilidades nas áreas de habilidades nas áreas de comunicaçãocomunicação, , organizacionalorganizacional, , negociaçãonegociação, , liderançaliderança e e criatividadecriatividade, para poderem resolver os , para poderem resolver os problemas durante a vida de um projeto.problemas durante a vida de um projeto.