Fórum Wink Tech
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Engenharia de software

Ir para baixo

Engenharia de software Empty Engenharia de software

Mensagem  WinkTech Sáb Set 24, 2011 3:32 pm

Engenharia de software é uma área do conhecimento da computação voltada para a especificação, desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de gerência de projetos e outras disciplinas, objetivando organização, produtividade e qualidade.[1]
Atualmente, essas tecnologias e práticas englobam linguagens de programação, banco de dados, ferramentas, plataformas, bibliotecas, padrões, processos e a questão da Qualidade de Software.
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 garantindo suas qualidades. Além disso, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema de informação Sistema computacional, pois ambos se confundem!


Definição
Friedrich Ludwig Bauer foi o primeiro a defini-la como sendo: "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.
O termo foi criado na década de 1960 e utilizado oficialmente em 1968 na NATO Conference on Software Engineering (Conferência sobre Engenharia de Software da OTAN). Sua criação surgiu 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 e interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.
Os fundamentos científicos 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. Além 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 Fábrica 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 além do software.



Processos de software
Processo de software, ou processo de engenharia de software, é uma seqüência 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, testes e caracterizam-se pela interação de ferramentas, pessoas e métodos.
SEE e PSEE são os ambientes voltados ao desenvolvimento e manutenção de processos. O projeto ExPSEE é uma continuação dos estudos de processos, principalmente do ambiente PSEE.
Devido ao 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 de Processo de Software
Um modelo de processo de desenvolvimento de software, ou simplesmente modelo de processo, pode ser visto como uma representação, ou abstração dos objetos e atividades envolvidas no processo de software. Além disso, oferece uma forma mais abrangente e fácil de representar o gerenciamento de processo de software e consequentemente o progresso do projeto.
Exemplos de alguns modelos de processo de software;
*odelos ciclo de vida
*Sequencial ou Cascata (do inglês waterfall) - com fases distintas de especificação, projeto e desenvolvimento.
*Desenvolvimento iterativo e incremental - desenvolvimento é iniciado com um subconjunto simples de Requisitos de Software e *interativamente alcança evoluções subseqüentes das versões até o sistema todo estar implementado
*Evolucional ou Prototipação - especificação, projeto e desenvolvimento de protótipos.
*V-Model - Parecido com o modelo cascata, mas com uma organização melhor, que permite que se compare com outros modelos mais modernos.
*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.
*Ágil
*RAD
*Quarta geração
É muito importante o desenvolvimento do software.



Modelos de Maturidade
!você deve estar pensando, modelos de maturidade? não tem nada a ver com engenharia de software, isso é oque vamos ver!

Os modelos de maturidade são um metamodelo de processo. Eles 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 Integration (CMMi), do Software Engineering Institute - SEI.
O CMMi pode ser organizado através de duas formas: Contínua e estagiada. Pelo modelo estagiado, mais tradicional e mantendo *Nível 1 - Caótico;
*Nível 2 - Capacidade de repetir sucessos anteriores pelo acompanhamento de custos, cronogramas e funcionalidades;
*Nível 3 - O processo de software é bem definido, documentado e padronizado;
*Nível 4 - Realiza uma gerência quantitativa do processo de software e do produto;
*Nível 5 - Usa a informação quantitativa para melhorar continuamente e gerenciar o processo de software.
O CMMi é um modelo de maturidade recentemente criado com o fim de agrupar as diferentes formas de utilização que foram dadas ao seu predecessor, o CMM.
O (MPS.BR), ou Melhoria de Processos do Software Brasileiro, é simultaneamente um movimento para a melhoria e um modelo de qualidade de processo voltada para a realidade do mercado de pequenas e médias empresas de desenvolvimento de software no Brasil.


Metodologias e Metodos
O termo metodologia é bastante controverso nas ciências em geral e na Engenharia de Software em particular. Muitos autores parecem tratar metodologia e método como sinônimos, porém seria mais adequado dizer que uma metodologia envolve princípios filosóficos que guiam uma gama de métodos que utilizam ferramentas e práticas diferenciadas para realizar algo.[2]
Assim teríamos, por exemplo, a Metodologia Estruturada, na qual existem vários métodos, como Análise Estruturada e Projeto Estruturado (muitas vezes denominados SA/SD, e Análise Essencial). Tanto a Análise Estruturada quanto a Análise Essencial utilizam a ferramenta Diagrama de Fluxos de Dados para modelar o funcionamento do sistema.
Metodologia Estruturada
Análise Estruturada
Projeto Estruturado
Programação Estruturada
Análise Essencial
SADT
DFD - Diagrama de Fluxo de Dados
MER - Modelo de Entidades e Relacionamentos
Metodologia Orientada a Objetos
Orientação 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)
Programação extrema ( XP )
Outras Metodologias
Microsoft Solution Framework ( MSF )


Ferramentas
Outro ponto importante é o uso de ferramentas CASE (do inglês Computer-Aided Software Engineering). Essa classificação abrange toda ferramenta baseada em computadores que auxiliam atividades de engenharia de software, desde a análise de requisitos e modelagem até programação e testes.
Os ambientes de desenvolvimento integrado (IDEs) têm maior destaque e suportam, entre outras coisas:
*Editor
*Compilador
*Debug
*Geração de código
*Modelagem
*Deploy
*Testes não automatizados
*Testes automatizados
*Refatoração (Refatoring)
*Gestão de Riscos nos projectos de Software
*Uso da Prototipagem na Eng. de Requisitos



GERÊNCIA DE PROJETOS
Planejamento
Análise de Requisitos
Gestão

Se você leu tudo affraid kk


WinkTech
WinkTech

Mensagens : 2
Data de inscrição : 02/09/2011
Localização : Admin do WinkTech minha muiézinha HeHeHe...

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos