Você está na página 1de 38

Engenharia de Software: conceitos e aplicaes Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.

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?

Programas de computador e documentao associadas. O software pode ser classificado em:

Sistemas genricos, produzidos e vendidos no mercado a qualquer pessoa que queira compr-los. Sistemas especficos, encomendados especificamente por um determinado cliente.

Conceitos

Tipos de sistema de software:


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

Ciclo de vida do produto de software

Conceitos

O que Engenharia de Software?

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

Quais so os custos da Engenharia de Software?

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

Qual a diferena entre a Engenharia de Software e a Cincia da Computao?

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

Qual a diferena entre Engenharia de Software e Engenharia de Sistemas?

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

Princpios da Engenharia de Software

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

A Engenharia de Software uma disciplina que rene:


Processos. Mtodos. Ferramentas.

Os processos seguem os mtodos e estes se utilizam de ferramentas. Visam resolver problemas inerentes:

Ao processo. Ao produto.
12

Conceitos

Quais so os mtodos da Engenharia de Software?

So abordagens estruturadas para o desenvolvimento de software que incluem os modelos de software, notaes, regras e maneiras de desenvolvimento.

13

Conceitos

O que so ferramentas CASE?

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

O que um modelo de processo de software?

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

Objetivos dos modelos

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

O que um processo de software?

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:

Especificao. Projeto. Validao. Evoluo.


19

Processos de Desenvolvimento

Ciclo de vida clssico (Modelo Cascata)

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

Ciclo de vida clssico

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

Ciclo de vida clssico

Fases:

Anlise e definio de requisitos. Projeto de software. Implementao e teste unitrio. Integrao e teste de sistema. Operao e manuteno.

22

Ciclo de vida clssico

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:

Desenvolvimento Formal de Sistemas

Baseado na transformao de uma especificao matemtica, atravs de diferentes representaes para um programa executvel. Consegue alcanar os requisitos da especificao mais facilmente.

28

Desenvolvimento Formal de Sistemas

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

Desenvolvimento baseado em reuso

Os sistemas so baseado em componentes j existentes, semelhantes ao desenvolvimento de hardware. Fases do processo:


Anlise do componente. Modificao dos requisitos. Projeto do sistema com reuso. Desenvolvimento e integrao.

Mtodo que vem crescendo bastante nos ltimos tempos.

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

Quais so as questes atuais?

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

Principais aspectos da aula

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

Principais aspectos da aula

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

Principais aspectos da aula

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

Você também pode gostar