Sei sulla pagina 1di 4

Engenharia de software Engenharia de software uma rea do conhecimento da computao voltada para a especificao, desenvolvimento e manuteno de sistemas de software

e aplicando tecnologias e prticas de gerncia de projetos e outras disciplinas, objetivando organizao, produtividade e qualidade. Atualmente, essas tecnologias e prticas englobam linguagens de programao, banco de dados, ferramentas, plataformas, bibliotecas, padres, processos e a questo da Qualidade de Software. Os fundamentos cientficos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. Alm disso, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema de informao ou Sistema computacional, pois ambos se confundem! Friedrich Ludwig Bauer foi o primeiro a defini-la como sendo: "Engenharia de Software a criao e a utilizao de slidos princpios de engenharia a fim de obter software de maneira econmica, que seja confivel e que trabalhe eficientemente em mquinas reais". O prprio significado de engenharia j traz os conceitos de criao, construo, anlise, desenvolvimento e manuteno. A Engenharia de Software se concentra nos aspectos prticos da produo de um sistema de software, enquanto a cincia da computao estuda os fundamentos tericos dos aspectos computacionais. O termo foi criado na dcada de 1960 e utilizado oficialmente em 1968 na NATO (Conference on Software Engineering - Conferncia sobre Engenharia de Software da OTAN). Sua criao surgiu numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemtico e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funes, mdulos, objetos ou agentes e interconectados entre si, compondo a arquitetura do software, que devero ser executados em sistemas computacionais. Os fundamentos cientficos envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. Alm disto, deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento. Empresas desenvolvedoras de software passaram a empregar esses conceitos, sobretudo para orientar suas reas de desenvolvimento, muitas delas organizadas sob a forma de Fbrica de Software. A Engenharia de Sistemas uma rea mais ampla por tratar de todos os aspectos de sistemas baseados em computadores, incluindo hardware e engenharia de processos alm do software. reas de Conhecimento Segundo o SWEBOK (Corpo de Conhecimento da Engenharia de Software), verso 2004, as reas de conhecimento da Engenharia de Software so: Requisitos de Software Projeto de Software Construo de Software Teste de Software Manuteno de software Gerncia de Configurao de Software Gerncia de Engenharia de Software Processos de Engenharia de Software Ferramentas e Mtodos de Engenharia de Software Qualidade de Software

Conforme Pressman, a Engenharia de Software (ES) uma tecnologia em camadas. E a base de todas essas camadas o foco na qualidade do software desenvolvido. Portanto, inclusive do ponto de vista didtico, interessante estudarmos a ES em suas camadas de Processo, Mtodos e Ferramentas.
Processo de software, ou processo de engenharia de software, uma seqncia coerente de prticas que objetiva o desenvolvimento ou evoluo de sistemas de software. Estas prticas englobam as atividades de especificao, projeto, implementao, testes e caracterizam-se pela interao de ferramentas, pessoas e mtodos.

Modelos de Processo de Software Um modelo de processo de desenvolvimento de software, ou simplesmente modelo de processo, pode ser visto como uma representao, ou abstrao dos objetos e atividades envolvidas no processo de software. Alm disso, oferece uma forma mais abrangente e fcil de representar o gerenciamento de processo de software e conseqentemente o progresso do projeto. Exemplos de alguns modelos de processo de software: Modelos ciclo de vida Seqencial ou Cascata (do ingls waterfall) - com fases distintas de especificao, projeto e desenvolvimento. Desenvolvimento iterativo e incremental - desenvolvimento iniciado com um subconjunto simples de Requisitos de Software e interativamente alcana evolues subseqentes das verses at o sistema todo estar implementado Evolucional ou Prototipao - especificao, projeto e desenvolvimento de prottipos. Espiral - evoluo atravs de vrios ciclos completos de especificao, projeto e desenvolvimento. Componentizado - reuso atravs de montagem de componentes j existentes. Formal - implementao a partir de modelo matemtico formal. gil RAD Quarta gerao

Modelo Cascata Este o modelo mais simples de desenvolvimento de software, estabelecendo uma ordenao linear no que diz respeito realizao das diferentes etapas. Como mostra a figura lateral, o ponto de partida do modelo uma etapa de Engenharia de Sistemas, onde o objetivo ter uma viso global do sistema como um todo (incluindo hardware, software, equipamentos e as pessoas envolvidas) como forma de definir precisamente o papel do software neste contexto. Em seguida, a etapa de Anlise de Requisitos vai permitir uma clara definio dos requisitos de software, sendo que o resultado ser utilizado como referncia para as etapas posteriores de Projeto, Codificao, Teste e Manuteno. Ao final de cada etapa realizada, deve existir um resultado (ou sada) a qual possa ser submetida atividade de certificao. Estas sadas, obtidas ao final de cada etapa, so vistas como produtos intermedirios e apresentam-se, normalmente, na forma de documentos (documento de especificao de requisitos, documento de projeto do sistema, etc...). Outra caracterstica importante deste modelo que as sadas de uma etapa so as entradas da seguinte, o que significa que uma vez definidas, elas no devem, em hiptese alguma ser modificadas.

importante lembrar, tambm que os resultados de um processo de desenvolvimento de software no devem ser exclusivamente o programa executvel e a documentao associada. Existe uma quantidade importante de resultados (ou produtos intermedirios) os quais so importantes para o sucesso do desenvolvimento. Baseados nas etapas apresentadas na figura acima, possvel listar os resultados mnimos esperados de um processo de desenvolvimento baseado neste modelo: Documento de Especificao de Requisitos, Projeto do Sistema, Plano de Teste e Relatrio de Testes, Cdigo Final, Manuais de Utilizao, Relatrios de Revises.

Modelo Espiral Este modelo, proposto em 1988, sugere uma organizao das atividades em espiral, a qual composta de diversos ciclos. Como mostrado na figura ao lado, a dimenso vertical representa o custo acumulado na realizao das diversas etapas; a dimenso angular representa o avano do desenvolvimento ao longo das etapas. Cada ciclo na espiral inicia com a identificao dos objetivos e as diferentes alternativas para se atingir aqueles objetivos assim como as restries impostas. O prximo passo no ciclo a avaliao das diferentes alternativas com base nos objetivos fixados, o que vai permitir tambm definir incertezas e riscos de cada alternativa. No passo seguinte, o desenvolvimento de estratgias permitindo resolver ou eliminar as incertezas levantadas anteriormente, o que pode envolver atividades de prototipao, simulao, avaliao de desempenho, etc... Finalmente, o software desenvolvido e o planejamento dos prximos passos realizado. A continuidade do processo de desenvolvimento definida como funo dos riscos remanescentes, como por exemplo, a deciso se os riscos relacionados ao desempenho ou interface so mais importantes do que aqueles relacionados ao desenvolvimento do programa. Com base nas decises tomadas, o prximo passo pode ser o desenvolvimento de um novo prottipo que elimine os riscos considerados. Por outro lado, caso os riscos de desenvolvimento de programa sejam considerados os mais importantes e se o prottipo obtido no passo corrente j resolve boa parte dos riscos ligados a desempenho e interface, ento o prximo passo pode ser simplesmente a evoluo segundo o modelo Cascata. Como se pode ver, o elemento que conduz este processo essencialmente a considerao sobre os riscos, o que permite, de certo modo, a adequao a qualquer poltica de desenvolvimento (baseada em especificao, baseada em simulao, baseada em prottipo, etc...). Uma caracterstica importante deste modelo o fato de que cada ciclo encerrado por uma atividade de reviso, onde todos os produtos do ciclo so avaliados, incluindo o plano para o prximo passo (ou ciclo). Numa aplicao tpica do modelo, pode-se imaginar a realizao de um ciclo zero, onde se avalie a realizabilidade do projeto, o resultado devendo ser a concluso de que ser possvel implementar ou no o projeto de desenvolvimento. As alternativas consideradas neste caso so de muito alto nvel, como por exemplo, se a organizao deve desenvolver o sistema ela prpria ou se deve contratar o desenvolvimento junto a uma empresa especializada. O modelo se adqua principalmente a sistemas que representem um alto risco de investimento para o cliente.

Metodologias
O termo metodologia bastante controverso nas cincias em geral e na Engenharia de Software em particular.

Muitos autores parecem tratar metodologia e mtodo como sinnimos, porm seria mais adequado dizer que uma metodologia envolve princpios filosficos que guiam uma gama de mtodos que utilizam ferramentas e prticas diferenciadas para realizar algo. Assim teramos, por exemplo, a Metodologia Estruturada, na qual existem vrios mtodos, como Anlise Estruturada e Projeto Estruturado (muitas vezes denominados SA/SD, e Anlise Essencial). Tanto a Anlise Estruturada quanto a Anlise Essencial utilizam a ferramenta Diagrama de Fluxos de Dados para modelar o funcionamento do sistema. Metodologia Estruturada Anlise Estruturada Projeto Estruturado Programao Estruturada Anlise Essencial DFD - Diagrama de Fluxo de Dados MER - Modelo de Entidades e Relacionamentos Metodologia Orientada a Objetos Orientao a Objetos Rational Unified Process ( RUP ) Desenvolvimento gil de software Feature Driven Development ( FDD ) Enterprise Unified Process (EUP) Scrum (Scrum) Crystal (Crystal Clear, Crystal Orange, Crystal Orange Web) Programao extrema ( XP ) Outras Metodologias Microsoft Solution Framework ( MSF )

Questes 1. O que Engenharia de Software? 2. Em que a ESW vem solucionar? 3. Quais so as reas de conhecimento da ESW? 4. Defina Processo de Software. 5. Explique as fases do modelo Cascata. 6. Defina com suas palavras o modelo Espiral. 7. Quais so os modelos de processo de software? 8. Quais metodologias so definidas na ESW? 9. Em sua opinio, qual melhor modelo a seguir em um projeto de grande porte para um sistema empresarial? Justifique. 10. Dentre as metodologias de prototipao, qual voc domina?

Potrebbero piacerti anche