Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
com
Objetivos da aula
Apresentar os conceitos de Engenharia de Software e explicar a sua importncia. Explicar as questes chaves sobre Engenharia de Software. Apresentar os principais processos de desenvolvimento de software.
Sumrio
Introduo Engenharia de Software Princpios de Engenharia de Software Processos de Engenharia de Software Questes de reviso Referncias bibliogrficas
Motivao
A economia de todos pases dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os custos de software superam os custos de hardware. A manuteno de software onde se tem os maiores gastos. Principalmente em sistemas de vida longa.
4
Conceitos
O que software?
Sistemas genricos, produzidos e vendidos no mercado a qualquer pessoa que queira compr-los. Sistemas especficos, encomendados especificamente por um determinado cliente.
Conceitos
Sistemas legados. Sistemas de tempo real. Sistemas embarcados (embutidos). Sistemas cientficos. Sistemas para WEB. Comea na concepo do problema (solicitao do usurio). Termina quando o sistema sai de uso.
6
Conceitos
uma das reas da Engenharia que trata dos aspectos de produo de software. O seu objetivo estabelecer uma sistemtica abordagem de desenvolvimento, atravs de ferramentas e tcnicas apropriadas, dependendo do problema a ser abordado, considerando restries e recursos disponveis.
Conceitos
Pesquisas mostram que 60% dos custos para o desenvolvimento e 40% para os testes. O custo de evoluo do software, normalmente, excede o custo de desenvolvimento. O custo depende do tipo de sistema a ser desenvolvido e suas restries. A distribuio dos custos depende do modelo 8 de desenvolvimento adotado.
Conceitos
A Cincia da Computao tem como objetivo o desenvolvimento de teorias e fundamentaes, enquanto que a Engenharia de Software se preocupa com as prticas de desenvolvimento de software.
Conceitos
A Engenharia de Sistemas trata dos sistemas baseados em computadores, que inclui hardware e software. Enquanto a Engenharia de Software trata apenas dos aspectos de desenvolvimento de software.
10
Conceitos
Formalidade: produtos mais confiveis, controlar seu custo e mais confiana no seu desempenho. Abstrao: identificar os aspectos importantes, ignorando os detalhes. Decomposio: subdividir o processo em atividades especficas, atribudas a diferentes especialistas. Generalizao: sendo mais geral, bem possvel que a soluo possa ser reutilizada. Flexibilizao: modificao com facilidade.
11
Conceitos
Os processos seguem os mtodos e estes se utilizam de ferramentas. Visam resolver problemas inerentes:
Ao processo. Ao produto.
12
Conceitos
So abordagens estruturadas para o desenvolvimento de software que incluem os modelos de software, notaes, regras e maneiras de desenvolvimento.
13
Conceitos
So programas de computador que tm o objetivo fornecer um suporte automatizado para as atividades de processo de software. Operam em dois nveis:
Alto nvel: ferramentas que suportam as atividades iniciais de requisitos e projetos. Baixo nvel: ferramentas que suportam as atividades de programao, depurao e testes.
14
Conceitos
uma representao simplificada de um processo de software, apresentada sobre uma perspectiva especfica. Os principais modelos so:
Cascata ou sequencial. Modelo evolutivo. Transformao formal. Integrao de componentes reusveis. Espiral.
15
Conceitos
Modelos de processo
Especificam as atividades e a ordem em que, de acordo com o modelo, devem ser executadas. Produtos de software podem ser construdos utilizando-se de diferentes modelos de processo. Alguns modelos so mais adequados que outros para determinados tipos de aplicao. A opo por um determinado modelo deve ser feita levando-se em considerao o produto a ser desenvolvido.
16
Conceitos
Auxiliar no processo de produo -> produtos de alta qualidade, produzidos mais rapidamente e a um custo cada vez menor. Atributos: complexidade, visibilidade, aceitabilidade, confiabilidade, manutenibilidade, segurana etc. Possibilitam:
Ao gerente: controlar o processo de desenvolvimento de sistemas de software. Ao desenvolvedor: obter a base para produzir, de maneira eficiente, software que satisfaa os requisitos pr-estabelecidos.
17
Conceitos
Um conjunto de atividades que objetivam o desenvolvimento e a evoluo de software. De maneira geral, as principais atividades so:
Especificao: define o que o sistema dever fazer, considerando as suas restries. Desenvolvimento: produo do software. Validao: checagem se o software faz o que o usurio deseja. Evoluo: mudanas no software para atender s novas demandas.
18
Processos de Desenvolvimento
Definio:
Conjunto de atividades para especificar, projetar, implementar e testar sistemas de software. As atividades necessrias para o desenvolvimento de software so:
Processos de Desenvolvimento
Diferentes fases da especificao e desenvolvimento. Especificao e desenvolvimento so alternados. Uso de modelo matemtico formalmente transformado em uma implementao.
Desenvolvimento evolutivo
Desenvolvimento formal
Desenvolvimento de sistemas baseado em reuso O sistema montado a partir de componentes. Desenvolvimento em espiral
Desenvolvimento evolutivo.
20
Mtodo sistemtico e sequencial. O resultado de uma fase constitui na entrada de outra. Tambm conhecido como cascata. Cada fase estruturada como um conjunto de atividades que podem ser executadas por pessoas diferentes, simultaneamente.
21
Fases:
Anlise e definio de requisitos. Projeto de software. Implementao e teste unitrio. Integrao e teste de sistema. Operao e manuteno.
22
Problemas:
Utiliza modelo sistemtico e sequencial, em que a entrada de uma fase o resultado da anterior. O reincio do modelo a dificuldade de acomodar mudanas depois que o processo est no final. Dificuldade em atender s mudanas exigidas posteriormente pelo cliente. Modelo mais adequado quando os requisitos esto muito bem entendidos.
23
Desenvolvimento Evolutivo
Desenvolvimento Exploratrio
O objetivo desenvolver o sistema com o contnuo acompanhamento dos clientes desde da especificao. Os requisitos precisam ser bem entendidos. O objetivo entender os requisitos do sistema.
Prototipao Descartvel
24
Desenvolvimento Evolutivo
Prototipao
25
Desenvolvimento Evolutivo
Especificao
Verso inicial
Descrio do sistema
Desenvolvimento
Verso intermediria
Validao
Verso final
26
Desenvolvimento Evolutivo
Problemas:
Ausncia de visibilidade do processo. Sistemas so fracamente estruturados. Necessidades de ferramentas de rpido desenvolvimento. Sistemas de pequeno e mdio porte. Como parte de um sistema grande. Sistema de curta durao.
27
Aplicabilidade:
Baseado na transformao de uma especificao matemtica, atravs de diferentes representaes para um programa executvel. Consegue alcanar os requisitos da especificao mais facilmente.
28
Problemas:
Dificuldade em encontrar profissionais especializados. Dificuldade em especificar determinados aspectos como a interface do usurio. Principalmente para sistemas crticos, onde no so toleradas falhas.
Aplicabilidade:
29
Anlise do componente. Modificao dos requisitos. Projeto do sistema com reuso. Desenvolvimento e integrao.
30
Modelo Espiral
Engloba as caractersticas do ciclo de vida clssico e evolutivo, ao mesmo tempo que adiciona um novo elemento a anlise de risco.
31
Modelo Espiral
Fases
Definio dos objetivos, alternativas e restries. Anlise de risco. Desenvolvimento e validao. Planejamento.
32
Conceitos
Sistemas legados: os sistemas antigos devem ser mantidos e atualizados. Heterogeneidade: sistemas so uma combinao de hardware e software. Prazos de entrega: presso para um menor prazo de entrega.
33
A Engenharia de Software uma disciplina da Engenharia que se preocupa com todos os aspectos da produo de software. Produtos de software consistem no desenvolvimento de programas e documentao associada. Manutenibilidade, independncia, validao e evoluo so os atributos essenciais.
34
O processo de software consiste de atividades que so envolvidas no desenvolvimento de produtos de software. As atividades bsicas deste desenvolvimento so: especificao, desenvolvimento, validao e evoluo. Mtodos so formas organizadas de produzir software.
35
Ferramentas CASE so programas que so projetados para auxiliar nas atividades rotineiras no processo de desenvolvimento de software, tais como: desenho de diagramas, checagem da consistncia dos diagramas e manuteno do programa.
36
Questes de reviso
Qual a importncia da Engenharia de Software no desenvolvimento de sistemas? Faa um estudo comparativo entre o modelo de desenvolvimento de software tradicional e o evolutivo. Comente os princpios da Engenharia de Software. Qual a importncia do software no cotidiano das pessoas?
37
Referncias Bibliogrficas
Carvalho, Ariadne M. B. Rizzoni & Chiossi, Thelma C. dos Santos. Introduo Engenharia de Software. Unicamp, 2001. Paulo Filho, Wilson de Pdua. Engenharia de Software. LTC, 2003. Pressaman, Roger S. Engenharia de Software. 6a edio. McGraw-Hill, 2006. Sommerville, Ian. Engenharia de Software. 8a edio. Pearson Education, 2007.
38