apostila de engenharia de software

Upload: ryan-costa

Post on 07-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Apostila de Engenharia de Software

    1/8

    Engenharia de Software

    1. Definio

    Segundo Fritz Bauer, "Engenharia de software acriao e a utilizao de slidos princpios de engenharia a fim de obtersoftware de maneira econmica, que seja confivel e que trabalhe eficientementeem mquinas reais". O prprio significado de engenharia j traz osconceitos de criao, construo, anlise, desenvolvimento e manuteno.

    A engenharia de software se concentra nos aspectosprticos da produo de um sistema de software, enquanto a cincia da computaoestuda os fundamentos tericos dos aspectos computacionais.

    A Engenharia de Software surgiu em meados dos anos 70 numatentativa de contornar a crise do software e dar um tratamento de engenharia(mais sistemtico e controlado) ao desenvolvimento de sistemas de softwarecomplexos. Um sistema de software complexo se caracteriza por um conjunto decomponentes abstratos de software (estruturas de dados e algoritmos)encapsulados na forma de procedimentos, funes, mdulos, objetos ou agentes einterconectados entre si, compondo a arquitetura do software, que devero serexecutados em sistemas computacionais.

    Os fundamentos cientficos para a engenharia de softwareenvolvem o uso de modelos abstratos e precisos que permitem ao engenheiroespecificar, projetar, implementar e manter sistemas de software, avaliando egarantido suas qualidades. Alm disto, a engenharia de software deve oferecermecanismos para se planejar e gerenciar o processo de desenvolvimento. Empresasdesenvolvedoras de software passaram a empregar os conceitos de Engenharia deSoftware sobretudo para orientar suas reas de desenvolvimento, muitas delasorganizadas sob a forma de Fbrica de Software.

    A engenharia de sistemas uma rea mais ampla por tratarde todos os aspectos de sistemas baseados em computadores, incluindo hardware eengenharia de processos alm do software.

    2. Processo de Software

    http://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    2/8

    Processo de software uma sequencia coerente de prticasque objetiva o desenvolvimento ou evoluo de sistemas de software. Estasprticas englobam as atividades de especificao, projeto, implementao etestes e caracterizam-se pela interao de ferramentas, pessoas e mtodos.

    Devido ao uso da palavra projeto em muitos contextos, porquestes de clareza, h vezes em que se prefira usar o original em inglsdesign.

    2.1 Modelos

    *Sequencial ou Cascata (do ingls waterfall) - com fases distintas deespecificao, projeto e desenvolvimento.

    *Evolucional - especificao, projeto e desenvolvimento so entrelaados.

    * V-Model -Parecido com o modelo cascata, mas com uma organizao melhor, que permite quese compare com outros modelos mais modernos.

    * Espiral -evoluo atravs de vrios ciclos completos de especificao, projeto edesenvolvimento.

    *Componentizado - reuso atravs de montagem de componentes j existentes.

    * Formal -implementao a partir de modelo matemtico formal.

    * gil

    http://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    3/8

    * RAD

    * Quartagerao

    2.2 Metodologias

    * RationalUnified Process ( RUP )

    *

    Programao extrema ( XP )

    * MicrosoftSolution Framework ( MSF )

    * Feature Driven Development( FDD )

    2.3 Modelos de Maturidade

    Os modelos de maturidade surgiram para avaliar a qualidadedos processos de software aplicados em uma organizao (empresa ouinstituio). O mais conhecido o Capability Maturity Model Integration(CMMi), do Software Engineering Institute - SEI.

    Atravs do CMMi, uma organizao pode ter suamaturidade medida em 5 nveis:

    * Nvel 1 -Catico

    * Nvel 2 -Capacidade de repetir sucessos anteriores pelo acompanhamento de custos,cronogramas e funcionalidadeshttp://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    4/8

    * Nvel 3 -O processo de software bem definido, documentado e padronizado

    * Nvel 4 -Realiza uma gerncia quantitativa do processo de software e do produto

    * Nvel 5 -Usa a informao quantitativa para melhorar continuamente e gerenciar oprocesso de software

    CMMi um novo modelo de maturidade surgido recentementecom o fim de agrupar as diferentes usabilidades que o CMM estava sendoutilizado. No Brasil temos 3 empresas que contam com a certificao CMMi-5:Accenture Technology Solutions(ATS), IBM, TCS - Tata Consulting and Services.

    3. Gerncia de Projetos

    A gerncia de projetos se preocupa em entregar o sistemade software no prazo e de acordo com os requisitos estabelecidos, levando emconta sempre as limitaes de oramento e tempo.

    A gerncia de projetos de software se caracterizam portratar sobre um produto intangvel, muito flexvel e com processo dedesenvolvimento com baixa padronizao.

    3.1 Planejamento

    O planejamento de um projeto de desenvolvimento desoftware inclui:

    *organizao do projeto (incluindo equipes e responsabilidades)

    http://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    5/8

    *estruturao das tarefas (do ingls work breakdown structure)

    *cronograma do projeto (do ingls project schedule)

    * anlise de risco

    Essas atividades sofrem com dificuldades tpicas de

    desenvolvimento de software. A produtividade no linear em relao ao tamanhoda equipe e o aumento de produtividade no imediato devido custos deaprendizado de novos membros. A diminuio de qualidade para acelerar odesenvolvimento constantemente prejudica futuramente a produtividade.

    A estimativa de dificuldades e custos dedesenvolvimentos so muito difceis, alm do surgimento de problemas tcnicos.Esses fatores requerem uma anlise de riscos cuidadosa.

    3.2 Anlise

    As atividades de anlise concentram-se naidentificao, especificao e descrio dos requisitos do sistema de software.Em resumo, requisito uma necessidade que o software deve cumprir.

    H vrias interpretaes e classificaes sobrerequisitos, entre elas:

    * funcionalou no funcional

    * deusurio ou de sistema

    comum que o cliente no saiba o que ele realmentehttp://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    6/8

    deseja, que haja problemas na comunicao e ainda que haja mudana constante derequisitos. Todos esses fatores so recrudescidos pela intangibilidade sobrecaractersticos de sistemas de software, principalmente sobre o custo de cadarequisito.

    3.3 Modelagem

    A abstrao do sistema de software atravs de modelosque o descrevem um poderoso instrumento para o entendimento e comunicao doproduto final que ser desenvolvido.

    A maior dificuldade nesta atividade est no equilbrio(tradeoff) entre simplicidade (favorecendo a comunicao) e a complexidade(favorecendo a preciso) do modelo. comum a utilizao de linguagens para

    modelagem como UML.

    3.4 Gesto

    * Pessoal

    * Produto

    * Processo

    * Projeto

    4. Tecnologias e Prticas

    A engenharia de software aborda uma srie de prticase tecnologias, principalmente estudadas pela cincia da computao, enfocandoseu impacto na produtividade e qualidade de software.

    Destacam-se o estudo de linguagem de programao,banco de dados e paradigmas de programao, como:

    http://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    7/8

    *Programao estruturada

    *Programao funcional

    * Programaoorientada a objetos

    *Componentes de Software

    *Programao orientada a aspecto

    4.1 Ferramentas

    Outro ponto importante o uso de ferramentas CASE (doingls Computer-Aided Software Engineering). Essa classificao abrange todaferramenta baseada em computadores que auxiliam atividades de engenharia desoftware, desde de anlise de requisitos e modelagem at programao e testes.

    Os ambientes de desenvolvimento integrado (IDEs) tmmaior destaque e suportam:

    * Editor

    * Compilador

    * Debug

    * Geraode cdigohttp://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03

  • 8/6/2019 Apostila de Engenharia de Software

    8/8

    * Modelagem

    * Deploy

    * Testesautomatizados

    *

    Refatorao

    http://www.concursospublicosonline.com - Concursos Publicos Online Provido por Mambo Gerado em:12 July, 2011, 19:03