apostila de engenharia de software
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