Escolar Documentos
Profissional Documentos
Cultura Documentos
O que pretendemos
Apresentar os conceitos bsicos de engenharia de software e as disciplinas que a compem Apresentar as questes mais relevantes que envolvem as prticas relacionadas ao desenvolvimento de software Refletir sobre a importncia da sistematizao e controle dos processos de desenvolvimento de software para a garantia de sua qualidade
A natureza do Software
ao mesmo tempo um produto e um veculo para distribuir um produto (informao) um transformador de informaes produz, gerencia, recupera, modifica, exibe dados e informaes que pode ser desde um bit a bilhes de terabytes Tem se tornado mais sofisticado e complexo a cada dia, em razes das constantes inovaes em hardware e nos softwares com os quais interage Constru-lo deixou de ser uma atividade solitria e passou a exigir equipes multidisciplinares, que precisam seguir sofisticados processos de trabalho
A natureza do Software
Questes que ainda permanecem...
Por que concluir um software leva tanto tempo? Por que os custos de desenvolvimento so to altos? Por que no conseguimos encontrar todos os erros antes de entregarmos o software aos clientes? Por que gastamos tanto tempo e esforo mantendo os softwares existentes? Por que continuamos a ter dificuldade em medir o progresso enquanto o software est sendo desenvolvido e mantido?
Definio de Software
So os programas de computador, a documentao associada e os dados de configurao necessrios para que esses programas operem corretamente.
Produtos genricos: produtos desenvolvidos para o mercado; pacotes de software. A especificao do software controlada pela organizao que o desenvolve. Produtos sob encomenda (personalizados): produtos desenvolvidos para um cliente especfico. Sua especificao controlada pelo cliente os desenvolvedores devem
Facilidade de manuteno o software deve ser escrito de modo que possa evoluir para atender as necessidades mutveis dos clientes Nvel de Confiana inclui confiabilidade, segurana e proteo Eficincia inclui rapidez de resposta, tempo de processamento, utilizao da memria, entre outros Facilidade de Uso (usabilidade) o software deve dispor de uma interface apropriada com o usurio e de documentao adequada; deve ser utilizvel sem esforos indevidos
Campos de aplicao de SW
Software de sistema Software de aplicao Software cientfico/de engenharia Software embutido/embarcado Software para linha de produtos Aplicaes para a web Software com inteligncia artificial Aplicaes para dispositivos mveis (ubquas e pervasivas) Software livre DESAFIOS!
Software legado
Softwares j existentes, ainda em operao, que tm sido continuamente modificados para se adequar a mudanas dos requisitos de negcio e plataformas computacionais
Costuma gerar muito custo para as organizaes, especialmente pela ausncia ou fragilidade da documentao dispendioso manter
e arriscado evoluir
s da os s ut p p ib bA We
Carga de processamento e de acesso no previsvel Sensibilidade no contedo e esttica Orientado a dados hipertexto Evoluo contnua Criticidade de segurana Curto prazo para o deployment
Engenharia de Software
uma disciplina da engenharia computacional que se ocupa de todos os aspectos da produo de software, desde os estgios iniciais de especificao do sistema at a manuteno desse sistema Geralmente, os engenheiros de software adotam uma abordagem sistemtica e organizada em seu trabalho, pois essa, com certeza, a maneira mais eficaz de produzir software de alta qualidade
Engenharia de Software
Tem como meta o desenvolvimento de sistemas de software com boa relao custo-benefcio O termo foi mencionado pela 1 vez em 1968 crise do software (hardware poderoso, portanto o software
resultante era maior e mais complexo)
Dessa forma, uma abordagem informal para a construo desses sistemas no era o bastante. Os projetos atrasavam, apresentavam custos elevados, no eram confiveis, eram de difcil manuteno e tinham desempenho ruim o desenvolvimento de software estava em crise
Engenharia de Software
Novas tcnicas e novos mtodos eram necessrios para controlar a complexidade inerente aos sistemas de software
Ainda existem problemas, porm houve um grande progresso desde 1968 e o desenvolvimento da ES melhorou de modo marcante o software produzido
Engenharia de Software
quando satisfaz as necessidades das pessoas que o usam, tem desempenho sem falhas por um longo perodo, fcil de modificar e ainda mais fcil de usar ele pode e efetivamente modifica as coisas para melhor
quando seus usurios ficam insatisfeitos, quando apresenta erros, quando difcil de modificar e ainda mais difcil de usar
Para obter sucesso, precisamos de disciplina quando o software projetado e construdo precisamos de uma abordagem de engenharia
Engenharia de Software
Pontos-chave
Compreender o problema antes de pensar na soluo Projetar uma atividade fundamental na engenharia de software Qualidade e facilidade de manuteno so resultantes de um projeto bem feito A engenharia de software engloba um processo, mtodos de gerenciamento e desenvolvimento de software, bem como ferramentas Atividades de apoio ocorrem ao longo do processo de software e se concentram, principalmente, no gerenciamento, acompanhamento e controle do projeto A adaptao do processo de software essencial para o sucesso de um projeto
Engenharia de Software
Mais do que uma simples disciplina ou ramo do conhecimento, engineering um verbo [engenhar, engedrar], uma palavra de ao, uma maneira de abordar um problema
Scott Whitmire
Cincia da computao ocupa-se da teoria e dos fundamentos referentes aos computadores e sistemas de software Engenharia de software dedica-se aos problemas prticos da produo de software
Teorias mais refinadas da cincia da computao nem sempre podem ser aplicadas a problemas reais e complexos, que requerem uma soluo de software
Engenharia de sistemas ocupa-se de todos os aspectos relacionados ao desenvolvimento de sistemas, incluindo hardware e software Engenharia de software parte desse processo
Engenharia de Sistemas
Engenharia de software
Processo de Software
um conjunto de atividades e resultados que geram um produto de software H 4 atividades fundamentais comuns a todos os processos de software
1. Especificao: definio das funcionalidades e restries 2. Desenvolvimento: o software deve ser produzido de forma a atender as especificaes 3. Validao: garantia de que o software faz o que o cliente deseja 4. Evoluo: o software deve evoluir para atender as necessidades mutveis dos clientes
Diferentes organizaes podem utilizar processos diferentes para produzir o mesmo tipo de produto
Processo de Software
uma representao simplificada de um processo de software, apresentada a partir de uma perspectiva especfica Um modelo de processo de software define a sequncia em que as atividades do processo sero realizadas Exemplos de Modelos de Processo de Software
Modelo em Cascata (Ciclo de Vida Clssico) Desenvolvimento Formal (Transformao formal) Desenvolvimento Evolucionrio Desenvolvimento Orientado a Reuso (Montagem de um
sistema a partir de componentes reutilizveis)
Modelo Cascata
Considera as atividades de especificao, desenvolvimento, validao e evoluo, que so fundamentais ao processo, e as representa como fases separadas do processo, como a especificao de requisitos, o projeto de software, os testes e assim por diante Aps cada estgio ter sido definido, ele aprovado e o desenvolvimento prossegue para o estgio seguinte
Desenvolvimento Evolucionrio
Tem como base a ideia de desenvolver uma implementao inicial, expor ao comentrio do usurio/cliente e fazer seu aprimoramento por meio de muitas verses, at que um sistema adequado tenha sido desenvolvido Em vez de ter as atividades de especificao, desenvolvimento e validao em separado, todo esse trabalho realizado concorrentemente
Desenvolvimento Evolucionrio
Atividades concorrentes
Especificao Verso inicial
Descrio do esboo
Desenvolvimento
Verses intermedirias
Validao
Verso final
Desenvolvimento Evolucionrio
Engenharia baseada em
de Software componentes
Baseia-se na existncia de um nmero significativo de componentes reutilizveis O processo de desenvolvimento de sistemas se concentra na integrao desses componentes em um sistema, em vez de partir do zero Desenvolvimento Baseado em Componentes
Engenharia baseada em
de Software componentes
A distribuio dos custos ao longo do processo de software depende do modelo de processo utilizado e do tipo de software que est sendo desenvolvido Aproximadamente 60% dos custos so relacionados ao desenvolvimento e 40% so referentes aos testes Para software personalizado (com um longo ciclo de durao), os custos de evoluo normalmente excedem os custos de desenvolvimento Software genrico normalmente tem custo de especificao baixo, porm devem ser extensivamente testados
Baseiam-se na ideia de desenvolver modelos de um sistema que possam ser representados graficamente e de utilizar esses modelos como uma especificao ou projeto de software Mtodos
Anlise Estruturada Orientados a Objetos (UML Unified Modeling Language Linguagem de Modelagem Unificada)
Ferramenta CASE
um software destinado a proporcionar apoio automatizado s atividades de processo de software, como a anlise de requisitos, modelagem do sistema, depurao e testes Alguns exemplos de ferramentas CASE RequisitePro DrCase Rational Rose Astah
tcnicas para construir softwares confiveis, que sejam flexveis para atender diferentes tipos de computadores e diferentes sistemas de apoio
J temos um livro sobre padres e procedimentos isso supre meu pessoal do que eles precisam saber Se o cronograma atrasar, poderemos acrescentar mais programadores e ficamos em dia horda mongol Se eu decidir terceirizar o projeto de software, posso simplesmente relaxar e deixar essa empresa realiz-lo
Uma definio geral dos objetivos suficiente para comear a escrever os programas podemos preencher detalhes posteriormente Os requisitos de software mudam continuamente, mas as mudanas podem ser facilmente
Uma vez desenvolvido o software e colocado em uso, nosso trabalho est terminado At que o software entre em operao, no h maneira de avaliar sua qualidade O nico produto passvel de entrega cdigo executvel A engenharia de software nos far criar documentao volumosa e desnecessria, e invariavelmente, produzir atraso no cronograma
Analista de Negcios Analista de Sistemas Programador / Analista de Desenvolvimento Analista de Testes Analista de Qualidade Analista de Suporte / Analista de infraestrutura Administrador de Banco de Dados Administrador de Rede Gerente de Projeto
Todo projeto de software motivado por alguma necessidade de negcio, por exemplo:
Automatizar determinado processo de negcio Corrigir defeitos numa aplicao existente Adaptar um sistema legado a um ambiente de negcios em constante transformao Estender funes/recursos de uma aplicao existente Criar novo produto ou servio
Sintetizando...
Software o elemento-chave na evoluo de produtos e sistemas baseados em computador e uma das mais importantes tecnologias no cenrio mundial. Ao longo dos ltimos 50 anos, o software evoluiu de uma ferramenta especializada em anlise de informaes e resoluo de problemas para uma indstria propriamente dita. Mesmo assim, ainda temos problemas para desenvolver software de boa qualidade dentro do prazo e oramento estabelecidos.
Sintetizando...
O software legado continuar a representar desafios especiais queles que precisam fazer sua manuteno. A engenharia de software engloba processos, mtodos e ferramentas que possibilitam a construo de sistemas complexos baseados em computador dentro do prazo e com qualidade. Inmeros mitos em relao a software e seu desenvolvimento continuam a levar gerentes e profissionais para o mau caminho, mesmo com todo o conhecimento coletivo de software e das tecnologias necessrias para constru-los.
...
Para refletir...
Ao afirmarmos que as atividade de modelagem se aplicam a todos os projetos, isso significa que as mesmas tarefas so aplicadas a todos os projetos, independentemente de seu tamanho e complexidade?
Para refletir...
medida que o software invade todos os setores, riscos ao pblico (devido a erros) passam a ser uma preocupao cada vez maior.
Que cenrios negativos poderiam se constituir, caso o software no tivesse sido desenvolvido seguindo os padres de qualidade?
Referncias
PRESMANN, R. Engenharia de Software: uma abordagem profissional. 7. ed. Rio de Janeiro: Mc Graw Hill, 2011. Cap. 1 SOMMERVILLE, I. Engenharia de Software. 8. ed. Rio de Janeiro: Pearson, 2007. Cap. 1 e 2.
Vdeos sugeridos
www.youtube.com/watch?v=u5aY2gObt0A