Enxeñaría de software - Wikipedia

# Enxeñaría de software

### Na Galipedia, a wikipedia en galego.

Enxeñaría de software é unha área do coñecimento orientada á especificación, desenvolvimento e mantimento de sistemas de software aplicando tecnoloxías e prácticas de ciencia da computación, xestión de proxectos e outras disciplinas, considerando productividade e calidade.

Actualmente, estas tecnoloxías e prácticas engloban linguaxes de programación, bases de dados, ferramentas, plataformas, bibliotecas, patróns e procesos.

Os fundamentos científicos para a enxeñaría de software comprenden o uso de modelos abstractos e precisos que permiten ao enxeñeiro especificar, proxectar, implementar e manter sistemas de software, evaluando e garantizando as súas calidades. Ademais disto, a enxeñaría de software debe ofrecer mecanismos para se planexar e xestionar o proceso de desenvolvimento.

## [editar] Definición

Segundo Fritz Bauer, "Enxeñaría de software é a criación e a utilización de sólidos principios de enxeñaría a fin de obter software de maneira económica, que sexa confiable e que traballe eficientemente en máquinas reais". O proprio significado de enxeñaría xa trai os conceitos de criación, construción, análise, desenvolvimento e mantimento.

A enxeñaría de software concéntrase nos aspectos prácticos da produción dun sistema de software, mentres que a ciencia da computación estuda os fundamentos teóricos dos aspectos computacionais.

A enxeñaría de sistemas é unha área máis ampla por tratar de todos os aspectos de sistemas baseados en computadores, incluindo hardware e enxeñaría de procesos ademais do software.

## [editar] Produccion de Software

A produccion de software é un conxunto coherente de prácticas que obxetiva o desenvolvimento ou evolución de sistemas de software. Estas prácticas engloban as actividades de especificación, proxecto, implementación e testes e caracterizanse pola interacción de ferramentas, persoas e métodos.

### [editar] Modelos

- Secuencial ou Cascada (do inglés waterfall) - con fases distintas de especificación, proxecto e desenvolvimento.
- Evolutivo - especificación, proxecto e desenvolvimento son entrelazados.
- En espiral - evolución a través de varios ciclos completos de especificación, proxecto e desenvolvimento.
- Componentizado - reuso a través de montaxe de compoñentes xa existentes.
- Formal - implementación a partir de modelo matemático formal.
- RAD
- Cuarta xeración

### [editar] Metodoloxías

- Rational Unified Proces (RUP)
- Programación extrema (XP)
- Microsoft Solution Framework (MSF)

### [editar] Modelos de Madurez

Os modelos de madurez surxiron para evaluar a calidade dos procesos de software aplicados nunha organización (empresa ou institución). O máis coñecido é o Capability Maturity Model Integration (CMMI), do Software Engineering Institute (SEI).

## [editar] Xestión de Proxectos

A xestión de proxectos preocupase en entregar o sistema de software no prazo e de acordo cos requisitos establecidos, levando en conta sempre as limitacións de orzamento e tempo.

A xestión de proxectos de software caracterizase por tratar sobre un produto intanxible, moi flexible e cun proceso de desenvolvimento con baixa padronización.

### [editar] Planexamento

O planexamento dun proxecto de desenvolvimento de software inclúe:

- organización do proxecto (incluindo equipos e responsabilidades)
- estruturación das tarefas (do inglés work breakdown structure, WBS)
- cronograma do proxecto (do inglés project schedule)
- análise de riscos

Esas actividades sofren as dificuldades típicas de desenvolvimento de software. A produtividade non é linear en relación ao tamaño da equipe e o aumento de produtividade non é inmediato debido á custos de aprendizaxe de novos membros. A diminución de calidade para acelerar o desenvolvimento constantemente prexudica a produtividade futura.

A estimativa de dificuldades e custos de desenvolvimentos son moi difíceis, alén do surximento de problemas técnicos. Eses factores requeren unha análise de riscos cuidadosa.

### [editar] Análise

As atividades de análise concentranse na identificación, especificación e descripción dos requisitos do sistema de software. En resumo, requisito é unha necesidade que o software debe cumprir.

Hai varias interpretacións e clasificacións sobre requisitos, entre elas:

- funcional ou non funcional
- de usuario ou de sistema

É común que o cliente non saber o que el realmente desexa, que haxa problemas na comunicación e aínda que haxa mudanza constante de requisitos. Todos eses fatores son recrudecidos pola intanxibilidade sobre característicos de sistemas de software, principalmente sobre o custo de cada requisito.

### [editar] Modelado

A abstracción do sistema de software a través de modelos que o descreben é un poderoso instrumento para o entendimento e comunicación do produto final que será desenvolvido.

A maior dificuldade nesta atividade está no equilíbrio (tradeoff) entre simplicidade (favorecendo a comunicación) e a complexidade (favorecendo a precisión) do modelo.

É común a utilización de linguaxes para Modelado como UML.

### [editar] Xestión

- de Persoal
- de Produto
- de Proceso
- de Proxecto

## [editar] Tecnoloxías e Prácticas

A enxeñaría de software aborda unha serie de prácticas e tecnoloxías, principalmente estudadas pola ciencia da computación, enfocando o seu impacto na produtividade e calidade de software.

Destacanse o estudo de linguaxe de programación, bancos de datos e paradigmas de programación, como:

- Programación estruturada
- Programación funcional
- Programación orientada a obxectos
- Componentes de Software
- Programación orientada a aspecto

### [editar] Ferramentas

Outro ponto importante é o uso de ferramentas CASE (do inglés Computer-Aided Software Engineering). Esa clasificación abranxe toda ferramenta baseada en computadores que auxilian actividades de enxeñaría de software, desde de análise de requisitos e Modelado ata programación e testes.

Os ambientes de desenvolvimento integrado (IDEs) teñen maior destaque e suportan:

- Editor
- Compilador
- Depurador (Debugger)
- Xeración de código
- Modelado
- Desplegue (Deployment)
- Testes automatizados
- Refactoración

## [editar] Histórico

A Enxeñaría de Software (ES) surxiu a meiados dos anos 1970 nunha tentativa de tratar coa a crise do software e dar un tratamento de enxeñaría (máis sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Un sistema de software complexo se caracteriza por un conxunto de componentes abstractos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funcións, módulos, obxectos ou axentes interconectados entre si, compondo a arquitetura do software, que deberán ser executados en sistemas computacionais.

Traballo en progreso: Este artigo é, polo de agora, só un esbozo. Traballa nel e contribúe a que a Galipedia mellore e medre.

Traído desde "http://gl.wikipedia.org../../../e/n/x/Enxe%C3%B1ar%C3%ADa_de_software.html"

Categorías: Informática | Enxeñaría | Wikipedia:En progreso

##### Views

- Artigo
- Discusión
- Revisión actual

##### Procura

##### Outras linguas

- Afrikaans
- العربية
- Deutsch
- English
- Español
- فارسی
- Suomi
- Français
- Gaeilge
- עברית
- Bahasa Indonesia
- Italiano
- 日本語
- Lietuvių
- Latviešu
- Nederlands
- Polski
- Português
- Русский
- Slovenčina
- Basa Sunda
- ไทย
- Tagalog
- Türkçe
- Tiếng Việt
- 中文