Engenharia do Software IManuel Menezes de SequeiraDCTI, ISCTE-IULManuel.Sequeira@iscte.pt, D6.02As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
SumárioContactosO que é a engenharia do software e qual a sua importância?Panorâmica da unidadeMateriaisAvaliaçãoInformações práticas2009/20102Engenharia do Software I
Contactos2009/20103Engenharia do Software I
Manuel Menezes de SequeiraManuel.Sequeira@iscte.pt: correio electrónico e MSNmanuel.sequeira.iscte.pt: SkypeGabinete: D6.02Telemóvel: 962 337 428http://www.google.com/profiles/MMSequeira2009/20104Engenharia do Software I
O que é a engenharia do software?2009/20105Engenharia do Software I
O que é o software?Programas e documentação associada, incluindo requisitos, modelos de desenho e manuais de utilização2009/20106Engenharia do Software I
O que é o software?Produtos de softwareGenéricos – Desenvolvidos para fornecer a diferentes clientes; e.g., Excel ou WordPersonalizados (custom) – Desenvolvidos para um cliente de acordo com os seus requisitos2009/20107Engenharia do Software I
O que é o software?Novo softwareDesenvolvimento de novos programasConfiguração de sistemas de software genéricosReutilização de software existente2009/20108Engenharia do Software I
Encontro da NATO em 1968 acerca da crise no softwareProblemas que ainda não foram resolvidos:Ultrapassagem do orçamentoBaixa produtividadesProdutos erradosBaixa qualidadeManutenção constante – “Se não se fizerem mudanças, tornar-se-á inútil”2009/20109Engenharia do Software I
CaosO software é como uma catedral – primeiro constrói-se, depois reza-se.SamRedwine2009/201010Engenharia do Software I
Engenharia do softwareDisciplina da engenharia focada em todos os aspectos da produção de software2009/201011Engenharia do Software I
Engenharia do softwareEngenheiros de softwareAbordam trabalho de forma sistemática e organizadaUtilizam ferramentas e técnicas apropriadas ao problema a resolver, às restrições existentes e aos recursos disponíveis2009/201012Engenharia do Software I
Engenharia do softwareNão é ciência!Constrói sistemas que outras pessoas usamThereis no silverbulletGoogle Search – Tem de ser rápidoGmail – Tem de ser fiável2009/201013Engenharia do Software I
Engenharia do softwareÉ um problema tramadoHá soluções melhores e soluções pioresNão há soluções certas e soluções erradasNão há medidas objectivas de sucesso2009/201014Engenharia do Software I
Comparação com outras engenhariasSoftware entities are more complex for their size than perhaps any other human construct, because no two parts are alike (at least above the statement level). If they are, we make the two similar parts into one… In this respect software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound.Fred Brooks, 19862009/201015Engenharia do Software I
Engenharia do software vs. informáticaInformática - Teoria e fundamentosEngenharia do software - Questão prática de desenvolver e fornecer software útilTeorias da informática insuficientes como fundamento da engenharia do softwarePelo contrário, física suficiente como fundamento da engenharia electrotécnica2009/201016Engenharia do Software I
Disciplina dominanteÀ medida que o tamanho do software aumenta, a disciplina dominante muda [Feldman]2009/201017Engenharia do Software I
Que ferramentas?Ferramentas intelectuaisOcultação de informaçãoPadrões de desenho… Mais relevantes que ferramentas de software!2009/201018Engenharia do Software I
Que ferramentas?Ferramentas de softwareAjudam a aplicar princípios, políticas e melhores práticasNão decidem por nós2009/201019Engenharia do Software I
CASE (Computer-Aided Software Engineering)Ferramentas de software suportando automaticamente actividades do processo de desenvolvimento de softwareUpper-CASE (actividades iniciais)Recolha de requisitosDesenhoLower-CASE (actividades posteriores)ProgramaçãoDepuraçãoTeste2009/201020Engenharia do Software I
Processo de softwareConjunto de actividades destinadas a desenvolver ou fazer evoluir o software2009/201021Engenharia do Software I
Processo de softwareActividades comunsEspecificação – O que deve fazer? Quais as restrições ao seu desenvolvimento?Desenvolvimento – Produção do sistemaValidação – Verificação do sistema face às pretensões do clienteEvolução – Alteração do software como resposta a alterações nos requisitos2009/201022Engenharia do Software I
Modelo de processo de softwareRepresentação simplificada de processo de software, com uma perspectiva específicaPerspectivasFluxo de trabalho (workflow) – Sequência de actividadesFluxo de dados – Fluxo de informaçãoPapéis/acções – Quem faz o quê2009/201023Engenharia do Software I
Modelo de processo de softwareModelos genéricos de processoCascataDesenvolvimento iterativoEngenharia do software baseada em componentes2009/201024Engenharia do Software I
2009/201025Engenharia do Software I
Custos por actividadeWaterfall model2550751000SpecificationDesignDevelopmentIntegration and testingIterative development2550751000SpecificationIterative developmentSystem testingComponent-based software engineering2550751000SpecificationDevelopmentIntegration and testingDevelopment and evolution costs for long-lifetime systems102030400System developmentSystem evolution2009/201026Engenharia do Software I
Metodologias de engenharia do softwareAbordagens estruturadas ao desenvolvimento de software incluindoModelos de sistemasNotaçõesRegrasLinhas orientadoras do processo2009/201027Engenharia do Software I
Metodologias de engenharia do softwareDescrições de modelosUsualmente gráficasRegrasRestrições aos modelos do sistemaRecomendações e melhores práticasLinhas orientadoras do processoQue fazer e quando2009/201028Engenharia do Software I
Atributos do bom softwareCumpre requisitos funcionais e de desempenho do cliente“Mantenível” (possível de manter) – Pode evoluir adaptando-se a requisitos em mutaçãoFiável – É de confiançaEficiente – Não desperdiça recursosAceitável  pelos utilizadores – Compreensível, fácil de usar e compatível com outros sistemas2009/201029Engenharia do Software I
A reterEngenharia do softwareFocada em todos os aspectos da produção de softwareResulta em produtos de software consistindo em programas e documentaçãoÉ sobretudo questão de pessoas e não de computadores2009/201030Engenharia do Software I
A reterProcesso de softwareActividades necessárias para o desenvolvimento de produtos de softwareActividades básicas são especificação, desenvolvimento, validação e evolução2009/201031Engenharia do Software I
A reterMetodologiasFormas organizadas de produzir softwareIncluem recomendações sobreProcesso a seguirNotações a usarRegras a seguir na descrição do sistemaLinhas orientadoras do desenho	2009/201032Engenharia do Software I
A reterFerramentas CASE são sistemas de software desenhados para suportar actividades rotineiras do processo de softwareEdição de diagramas de desenhoVerificação da consistência dos diagramasRegisto e controlo dos testes efectuados2009/201033Engenharia do Software I
A lerIanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006Capítulo 1Capítulo 62009/201034Engenharia do Software I
Panorâmica da unidade2009/201035Engenharia do Software I
ObjectivosVisão geral dos vários problemas, métodos, actividades, modelos, etc., associados ao desenvolvimento de softwareFamiliarização com panóplia  de diferentes ferramentas e perspectivas permitindo boas escolhas face a problemas concretos2009/201036Engenharia do Software I
AvaliaçãoAvaliação periódicaFrequência ≥ 7,5Projecto ≥ 7,5Final = 0,5 frequência + 0,5 projecto ≥ 9,5Exame ≥ 9,52009/201037Engenharia do Software I
Formato e projectoUma aula teórica e uma aula prática por semanaProjectoDesenvolvido ao longo do semestreEntregue por etapasRealizado em grupos de seisÊnfase no processo e não no produto2009/201038Engenharia do Software I
TópicosRequisitosProcessos de softwareDesenvolvimento rápido de softwareArquitectura de softwareDesign de interfaces com o utilizadorGestão de projectosVerificação e validaçãoTestes de software2009/201039Engenharia do Software I
Materiais e ferramentasIanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006Artigos vários na WebRational Requisite ProBouml, UMLet ou outra aplicação para edição de diagramas UML2009/201040Engenharia do Software I
Mais informaçãoHorário de dúvidasSextas-feiras, das 13:00 às 18h00 no gabinete D6.02Avisardocentepor SMS no mínimoumahora antesTodas as aulas no laboratório D1.01Maisinformaçãoemhttp://www.piazzza.com/2009/201041Engenharia do Software I
Manuel Menezes de SequeiraManuel.Sequeira@iscte.pt: correio electrónico e MSNmanuel.sequeira.iscte.pt: SkypeGabinete: D6.02Telemóvel: 962 337 428http://www.google.com/profiles/MMSequeira2009/201042Engenharia do Software I

Eng.ª do Software - 1. Introdução

  • 1.
    Engenharia do SoftwareIManuel Menezes de SequeiraDCTI, ISCTE-IULManuel.Sequeira@iscte.pt, D6.02As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
  • 2.
    SumárioContactosO que éa engenharia do software e qual a sua importância?Panorâmica da unidadeMateriaisAvaliaçãoInformações práticas2009/20102Engenharia do Software I
  • 3.
  • 4.
    Manuel Menezes deSequeiraManuel.Sequeira@iscte.pt: correio electrónico e MSNmanuel.sequeira.iscte.pt: SkypeGabinete: D6.02Telemóvel: 962 337 428http://www.google.com/profiles/MMSequeira2009/20104Engenharia do Software I
  • 5.
    O que éa engenharia do software?2009/20105Engenharia do Software I
  • 6.
    O que éo software?Programas e documentação associada, incluindo requisitos, modelos de desenho e manuais de utilização2009/20106Engenharia do Software I
  • 7.
    O que éo software?Produtos de softwareGenéricos – Desenvolvidos para fornecer a diferentes clientes; e.g., Excel ou WordPersonalizados (custom) – Desenvolvidos para um cliente de acordo com os seus requisitos2009/20107Engenharia do Software I
  • 8.
    O que éo software?Novo softwareDesenvolvimento de novos programasConfiguração de sistemas de software genéricosReutilização de software existente2009/20108Engenharia do Software I
  • 9.
    Encontro da NATOem 1968 acerca da crise no softwareProblemas que ainda não foram resolvidos:Ultrapassagem do orçamentoBaixa produtividadesProdutos erradosBaixa qualidadeManutenção constante – “Se não se fizerem mudanças, tornar-se-á inútil”2009/20109Engenharia do Software I
  • 10.
    CaosO software écomo uma catedral – primeiro constrói-se, depois reza-se.SamRedwine2009/201010Engenharia do Software I
  • 11.
    Engenharia do softwareDisciplinada engenharia focada em todos os aspectos da produção de software2009/201011Engenharia do Software I
  • 12.
    Engenharia do softwareEngenheirosde softwareAbordam trabalho de forma sistemática e organizadaUtilizam ferramentas e técnicas apropriadas ao problema a resolver, às restrições existentes e aos recursos disponíveis2009/201012Engenharia do Software I
  • 13.
    Engenharia do softwareNãoé ciência!Constrói sistemas que outras pessoas usamThereis no silverbulletGoogle Search – Tem de ser rápidoGmail – Tem de ser fiável2009/201013Engenharia do Software I
  • 14.
    Engenharia do softwareÉum problema tramadoHá soluções melhores e soluções pioresNão há soluções certas e soluções erradasNão há medidas objectivas de sucesso2009/201014Engenharia do Software I
  • 15.
    Comparação com outrasengenhariasSoftware entities are more complex for their size than perhaps any other human construct, because no two parts are alike (at least above the statement level). If they are, we make the two similar parts into one… In this respect software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound.Fred Brooks, 19862009/201015Engenharia do Software I
  • 16.
    Engenharia do softwarevs. informáticaInformática - Teoria e fundamentosEngenharia do software - Questão prática de desenvolver e fornecer software útilTeorias da informática insuficientes como fundamento da engenharia do softwarePelo contrário, física suficiente como fundamento da engenharia electrotécnica2009/201016Engenharia do Software I
  • 17.
    Disciplina dominanteÀ medidaque o tamanho do software aumenta, a disciplina dominante muda [Feldman]2009/201017Engenharia do Software I
  • 18.
    Que ferramentas?Ferramentas intelectuaisOcultaçãode informaçãoPadrões de desenho… Mais relevantes que ferramentas de software!2009/201018Engenharia do Software I
  • 19.
    Que ferramentas?Ferramentas desoftwareAjudam a aplicar princípios, políticas e melhores práticasNão decidem por nós2009/201019Engenharia do Software I
  • 20.
    CASE (Computer-Aided SoftwareEngineering)Ferramentas de software suportando automaticamente actividades do processo de desenvolvimento de softwareUpper-CASE (actividades iniciais)Recolha de requisitosDesenhoLower-CASE (actividades posteriores)ProgramaçãoDepuraçãoTeste2009/201020Engenharia do Software I
  • 21.
    Processo de softwareConjuntode actividades destinadas a desenvolver ou fazer evoluir o software2009/201021Engenharia do Software I
  • 22.
    Processo de softwareActividadescomunsEspecificação – O que deve fazer? Quais as restrições ao seu desenvolvimento?Desenvolvimento – Produção do sistemaValidação – Verificação do sistema face às pretensões do clienteEvolução – Alteração do software como resposta a alterações nos requisitos2009/201022Engenharia do Software I
  • 23.
    Modelo de processode softwareRepresentação simplificada de processo de software, com uma perspectiva específicaPerspectivasFluxo de trabalho (workflow) – Sequência de actividadesFluxo de dados – Fluxo de informaçãoPapéis/acções – Quem faz o quê2009/201023Engenharia do Software I
  • 24.
    Modelo de processode softwareModelos genéricos de processoCascataDesenvolvimento iterativoEngenharia do software baseada em componentes2009/201024Engenharia do Software I
  • 25.
  • 26.
    Custos por actividadeWaterfallmodel2550751000SpecificationDesignDevelopmentIntegration and testingIterative development2550751000SpecificationIterative developmentSystem testingComponent-based software engineering2550751000SpecificationDevelopmentIntegration and testingDevelopment and evolution costs for long-lifetime systems102030400System developmentSystem evolution2009/201026Engenharia do Software I
  • 27.
    Metodologias de engenhariado softwareAbordagens estruturadas ao desenvolvimento de software incluindoModelos de sistemasNotaçõesRegrasLinhas orientadoras do processo2009/201027Engenharia do Software I
  • 28.
    Metodologias de engenhariado softwareDescrições de modelosUsualmente gráficasRegrasRestrições aos modelos do sistemaRecomendações e melhores práticasLinhas orientadoras do processoQue fazer e quando2009/201028Engenharia do Software I
  • 29.
    Atributos do bomsoftwareCumpre requisitos funcionais e de desempenho do cliente“Mantenível” (possível de manter) – Pode evoluir adaptando-se a requisitos em mutaçãoFiável – É de confiançaEficiente – Não desperdiça recursosAceitável pelos utilizadores – Compreensível, fácil de usar e compatível com outros sistemas2009/201029Engenharia do Software I
  • 30.
    A reterEngenharia dosoftwareFocada em todos os aspectos da produção de softwareResulta em produtos de software consistindo em programas e documentaçãoÉ sobretudo questão de pessoas e não de computadores2009/201030Engenharia do Software I
  • 31.
    A reterProcesso desoftwareActividades necessárias para o desenvolvimento de produtos de softwareActividades básicas são especificação, desenvolvimento, validação e evolução2009/201031Engenharia do Software I
  • 32.
    A reterMetodologiasFormas organizadasde produzir softwareIncluem recomendações sobreProcesso a seguirNotações a usarRegras a seguir na descrição do sistemaLinhas orientadoras do desenho 2009/201032Engenharia do Software I
  • 33.
    A reterFerramentas CASEsão sistemas de software desenhados para suportar actividades rotineiras do processo de softwareEdição de diagramas de desenhoVerificação da consistência dos diagramasRegisto e controlo dos testes efectuados2009/201033Engenharia do Software I
  • 34.
    A lerIanSommerville, SoftwareEngineering, 8.ª edição, Addison-Wesley, 2006Capítulo 1Capítulo 62009/201034Engenharia do Software I
  • 35.
  • 36.
    ObjectivosVisão geral dosvários problemas, métodos, actividades, modelos, etc., associados ao desenvolvimento de softwareFamiliarização com panóplia de diferentes ferramentas e perspectivas permitindo boas escolhas face a problemas concretos2009/201036Engenharia do Software I
  • 37.
    AvaliaçãoAvaliação periódicaFrequência ≥7,5Projecto ≥ 7,5Final = 0,5 frequência + 0,5 projecto ≥ 9,5Exame ≥ 9,52009/201037Engenharia do Software I
  • 38.
    Formato e projectoUmaaula teórica e uma aula prática por semanaProjectoDesenvolvido ao longo do semestreEntregue por etapasRealizado em grupos de seisÊnfase no processo e não no produto2009/201038Engenharia do Software I
  • 39.
    TópicosRequisitosProcessos de softwareDesenvolvimentorápido de softwareArquitectura de softwareDesign de interfaces com o utilizadorGestão de projectosVerificação e validaçãoTestes de software2009/201039Engenharia do Software I
  • 40.
    Materiais e ferramentasIanSommerville,Software Engineering, 8.ª edição, Addison-Wesley, 2006Artigos vários na WebRational Requisite ProBouml, UMLet ou outra aplicação para edição de diagramas UML2009/201040Engenharia do Software I
  • 41.
    Mais informaçãoHorário dedúvidasSextas-feiras, das 13:00 às 18h00 no gabinete D6.02Avisardocentepor SMS no mínimoumahora antesTodas as aulas no laboratório D1.01Maisinformaçãoemhttp://www.piazzza.com/2009/201041Engenharia do Software I
  • 42.
    Manuel Menezes deSequeiraManuel.Sequeira@iscte.pt: correio electrónico e MSNmanuel.sequeira.iscte.pt: SkypeGabinete: D6.02Telemóvel: 962 337 428http://www.google.com/profiles/MMSequeira2009/201042Engenharia do Software I