introdução a es_final

23
Uma Introdução a Engenharia de Software Slides originais elaborados por Ian Sommerville O autor permite o uso e a modificação dos slides para fins didáticos.

Upload: roberci-ferreira-de-sa

Post on 09-Sep-2015

216 views

Category:

Documents


2 download

DESCRIPTION

Suncita introduçãoa Engenharia de software

TRANSCRIPT

  • Uma Introduo a Engenharia de Software

    Slides originais elaborados por Ian SommervilleO autor permite o uso e a modicao dos slides

    para ns didticos.

  • Engenharia de software As economias de TODAS as naes desenvolvidas

    so dependentes de software.

    Cada vez mais sistemas so controlados por software.

    A engenharia de software se dedica s teorias, mtodos e ferramentas para desenvolvimento de software profissional

    Sistemas no-triviais Com base em um conjunto de requisitos

    2

  • Custos de software Os custos de software dominam os custos de

    sistemas computacionais. Em geral, software custa mais que hardware

    Manter um software custa mais que desenvolv-lo A engenharia de software dedica-se ao

    desenvolvimento de software com custos adequados Respeitando o cronograma acordado Satisfazendo as necessidades dos clientes Minimizando o custo de manuteno

    3

  • Definies Disciplina gerencial e tecnolgica que lida

    com a produo e manuteno sistemtica de produtos de software desenvolvidos dentro de estimativas de custo e tempo

    Multi-person construction of multi-version software

    4

  • FAQs sobre engenharia de software O que software? O que engenharia de software? Qual a diferena entre engenharia de

    software e cincia da computao? Qual a diferena entre engenharia de

    software e engenharia de sistemas? O que processo de software? O que um modelo de processo de

    software?

    5

  • FAQs sobre engenharia de software Quais so os custos da engenharia de

    software? Quais so os mtodos da engenharia de

    software? O que CASE (Computer-Aided Software

    Engeneering)? Quais so os atributos de um bom software? Quais so os desafios-chave enfrentados

    pela engenharia de software?

    6

  • O que software? Programas de computador e artefatos associados Produtos de software podem ser:

    Genricos desenvolvidos para serem vendidos para uma grande variedade de clientes (e.g., Excel e Word)

    Personalizados desenvolvidos para um nico cliente de acordo com as suas especificaes.

    Um software novo pode ser criado atravs de desenvolvimento de novos programas; configurao de sistemas de software genricos; ou reutilizao de um software existente.

    7

  • O que engenharia de software? Engenharia de software uma disciplina relacionada

    com todos os aspectos da produo de software. ... e prope ferramentas, tcnicas e processos para:

    Entender com preciso qual o problema (as necessidades associadas ao sistema que deve ser construdo/modificado)

    Produzir uma soluo adequada para esse problema (umsistema pronto para usar, levando-se em considerao asnecessidades das partes interessadas)

    Levando-se em conta restries de desenvolvimento e recursos disponveis

    8

  • Qual a diferena entre engenharia de software e cincia da computao?

    A cincia da computao dedica-se teoria e aos fundamentos; Engenharia de software dedica-se aos aspectos

    prticos de desenvolvimento e de entrega de software

    "O que" vs. "Como" Teorias de cincia da computao so ainda

    insuficientes para atuar como uma base completa para a engenharia de software (diferente de, por exemplo, fsica e engenharia eltrica). Em outras palavras: no h receitas prontas!

    9

  • Qual a diferena entre engenharia de software e engenharia de sistemas?

    Engenharia de sistemas: Mais ampla Muita nfase em aspectos de hardware e infra-

    estrutura Abstrao do hardware Organizao fsica das partes do sistema Aspectos de comunicao

    Engloba a engenharia do software Os engenheiros de sistema esto envolvidos

    em diversas atividades da engenharia de software Projeto da arquitetura Elicitao e especificao de requisitos

    10

  • O que processo de software? Um conjunto estruturado de atividades, prticas,

    artefatos e ferramentas necessrios para o desenvolvimento de um sistema de software Especificao; Desenvolvimento; Validao; Evoluo.

    Exemplos: Processo Unificado (RUP), Programao Extrema, UML Components

    Diferente da definio do livro!!! "processo", "modelo de processo", "mtodo" e

    "metodologia"

    11

  • O que processo de software? Alguns elementos de um processo:

    Modelos de sistema: Modelos grficos que podem/devem ser produzidos e

    as notaes que devem ser empregadas; Restries aplicadas aos modelos de sistema;

    Recomendaes de boas prticas de projeto; Atividades que devem ser seguidas em

    determinada ordem s vezes tambm prescrevem ferramentas

    Um processo adere a um ou mais modelos de processo

    12

  • O que um modelo de processo de software?

    Uma representao simplificada de um processo de software, apresentado sob uma perspectiva especfica Incluindo algumas atividades e sua organizao de alto

    nvel Modelos gerais de processo

    Cascata; Desenvolvimento iterativo; Engenharia de software baseada em componentes.

    Dois modelos no so necessariamente mutuamente excludentes!

    Representaes de modelos de processo: Modelo de workflow seqncia de atividades; Modelo de fluxo de dados fluxo de informaes; Modelo de papel/ao quem faz o qu.

    13

  • Quais so os custos da engenharia de software?

    60% dos custos so custos de desenvolvimento 40% so custos de testes Para software sob encomenda, os custos de

    evoluo normalmente excedem os de desenvolvimento.

    Os custos variam dependendo do tipo de sistema que est sendo desenvolvido e dos requisitos do sistema, tais como desempenho e confiabilidade

    A distribuio de custos depende do modelo de desenvolvimento que usado.

    14

  • Distribuio de custos nas atividades

    15

  • O que CASE (Computer-Aided Software Engineering)

    Sistemas de software que se destinam a fornecer apoio automatizado para as atividades de desenvolvimento de software.

    Sistemas CASE so usados freqentemente para apoiar um mtodo especfico

    Upper-CASE Ferramentas para apoiar as atividades iniciais de

    processo de requisitos e de projeto; Lower-CASE

    Ferramentas para apoiar as atividades finais tais como programao, debugging e teste.

    16

  • Quais so os atributos de um bom software?

    O software deve fornecer a funcionalidade e odesempenho requeridos para o usurio e deveapresentar certas caractersticas

    Facilidade de manuteno Deve ser fcil e barato fazer com que o sistema, depois de

    implantado, evolua para atender s necessidades dos clientes

    Confiabilidade O software deve funcionar de maneira que o usurio possa

    depender dele. No caso de falha, no traz danos fsicos oueconmicos

    Eficincia O software deve usar o mnimo de recursos e prover mxima

    funcionalidade Usabilidade

    O software deve ser compreensvel e fcil de usar

    17

  • Quais so os desafios-chave enfrentados pela engenharia de software?

    Heterogeneidade Sistemas de software devem ser capaz de lidar com diferentes

    plataformas de hardware e ambientes de execuo;

    Entrega O sistema deve ser entregue ao cliente no menor tempo

    possvel, com o menor custo possvel;

    Confiana O usurio deve poder justificadamente depositar sua confiana

    no sistema

    Escala O sistema deve funcionar adequadamente mesmo quando um

    grande nmero de usurios o est usando

    18

  • Responsabilidade profissional e tica

    A engenharia de software envolve responsabilidades mais amplas do que simplesmente a aplicao de habilidades tcnicas.

    Os engenheiros de software devem se comportar de modo honesto e eticamente responsvel para serem respeitados como profissionais.

    O comportamento tico mais do que simplesmente a sustentao de leis.

    19

  • Questes de responsabilidade profissional

    20

    Confidencialidade Os engenheiros de software devem normalmente respeitar a

    confidencialidade de seus funcionrios ou clientes, independentemente de ter ou no assinado um acordo formal.

    Caso no aceitem essas condies, devem deixar isso expicito para seus contratantes

    Competncia Os engenheiros no devem conscientemente aceitar um

    trabalho que esteja fora de sua competncia.

  • Questes de responsabilidade profissional

    Direitos sobre propriedade intelectual

    Desenvolvedores devem estar cientes das leis locais que regem o uso de propriedade intelectual, tais como patentes, direitos autorais, etc.

    Eles devem tomar cuidado para assegurar que a propriedade intelectual dos funcionrios e clientes seja protegida.

    21

  • Dilemas ticos Discordncia, em princpio, das polticas

    da gerncia snior. Um funcionrio age de uma forma no

    tica e libera um sistema de segurana crtico sem finalizar o teste do sistema.

    Participao no desenvolvimento de sistemas de armamentos militares ou de sistemas nucleares

    22

  • Atividade para casa

    23

    Nmero do slide 1Engenharia de softwareCustos de softwareDefiniesFAQs sobre engenharia de softwareFAQs sobre engenharia de softwareO que software?O que engenharia de software?Nmero do slide 9Nmero do slide 10O que processo de software?O que processo de software?O que um modelo de processo de software?Nmero do slide 14Distribuio de custos nas atividadesNmero do slide 16Quais so os atributos de um bom software?Quais so os desafios-chave enfrentados pela engenharia de software?Nmero do slide 19Questes de responsabilidade profissionalQuestes de responsabilidade profissionalDilemas ticosAtividade para casa