Um pouco de Engenharia de Software

A Engenharia de Software (ES) surgiu em meados dos anos 1970 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático 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, funções, módulos, objetos ou agentes interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.

 

 

O que é Engenharia de Software?

 

Engenharia de software é uma área do conhecimento voltada para a especificação, desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de ciência da computação, gerência de projetos e outras disciplinas, objetivando produtividade e qualidade.

Um caso exemplar é o desempenho dos sistemas operacionais da Microsoft que não são 100%, mas se for levado em conta a complexidade do software com o número de linhas de código (5-10 mil para o Windows 98 e 12 milhões para o XP) pode-se dizer que a qualidade de certa forma foi garantida. Atualmente, estas tecnologias e práticas englobam linguagens de programação, bases de dados, ferramentas, plataformas, bibliotecas, standards e processos. Os fundamentos científicos 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 garantido suas qualidades. Além disto, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento.

Segundo Fritz Bauer, autor da primeira definição do termo, "Engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais". O próprio significado de engenharia já traz os conceitos de criação, construção, análise, desenvolvimento e manutenção.

A engenharia de software se concentra nos aspectos práticos da produção de um sistema de software, enquanto a ciência da computação estuda os fundamentos teóricos dos aspectos computacionais.

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 além do software.

Processo de Software

Processo de software é um conjunto coerente de práticas que objetiva o desenvolvimento ou evolução de sistemas de software. Estas práticas englobam as atividades de especificação, projeto, implementação e testes e caracterizam-se pela interação de ferramentas, pessoas e métodos. Devido o uso da palavra projeto em muitos contextos, por questões de clareza, há vezes em que se prefira usar o original em inglês design.

Modelos

Sequencial ou Cascata (do inglês waterfall) - com fases distintas de especificação, projeto e desenvolvimento.
Evolucional - especificação, projeto e desenvolvimento são entrelaçados.
Espiral - evolução através de vários ciclos completos de especificação, projeto e desenvolvimento.
Componentizado - reuso através de montagem de componentes já existentes.
Formal - implementação a partir de modelo matemático formal.
RAD - Linear de alta-velocidade. Normalmente utilizados para sistemas de informação e bem entendidos.

Metodologias

Rational Unified Process (RUP)
Programação extrema (XP)
Microsoft Solution Framework (MSF)

Modelos de Maturidade

Os modelos de maturidade surgiram para avaliar a qualidade dos processos de software aplicados em uma organização (empresa ou instituição). O mais conhecido é o Capability Maturity Model (CMM), do Software Engineering Institute.

Apesar de todo o sucesso de uso do modelo CMM no mundo, existe a tendência de que ele seja substituído gradativamente pelo CMMI(Capability Maturity Model Integration). Muito embora esteja fortemente fundamentado em software, o CMMI contempla o desenvolvimento multidisciplinar, cobrindo outras áreas do desenvolvimento de sistemas. Até o momento, são quatro as disciplinas incorporadas ao CMMI: Systems Engineering (SE), Software Engineering (SW), Integrated Product and Process Development (IPPD) e Supplier Sourcing (SS).

Fonte: http://imasters.com.br/artigo/3691/des_de_software/engenharia_de_software/