Angenharie de software

**Angenharie de software** ye ua ária de la cumputaçon buoltada a la specificaçon, zambolbimiento i manutençon de sistemas de *[[software]]*, cun aplicaçon de tecnologies i práticas de geréncia de porjetos i outras deciplinas, bisando ourganizaçon, pordutebidade i culidade.

Atualmente, essas tecnologies i práticas angloban lenguaiges de porgramaçon, banco de dados, ferramientas, plataformas, bibliotecas, padrones, porcessos i la queston de la Culidade de Software.

Ls fundamientos científicos pa l'angenharie de software ambolben l'uso de modelos abstratos i percisos que permiten al angenheiro specificar, porjetar, amplementar i manter sistemas de software, abaluando i garantindo sues culidades. Para alhá desso, l'angenharie de software debe ouferecer macanismos para se planeijar i gerenciar l porcesso de zambolbimiento dun sistema cumputacional.
 
## Defeniçon
Friedrich Ludwig Bauer fui l purmeiro dezindo: "Angenharie de *Software* ye la criaçon i l'outelizaçon de sólidos percípios d'angenharie la fin d'oubter software de maneira eiquenómica, que seia cunfiable i que trabalhe an máquinas reales". L própio seneficado de angenharie yá traç ls cunceitos de criaçon, custruçon, análeze, zambolbimiento i manutençon.  
  
La Angenharie de *Software* se cuncentra ne ls aspetos práticos de la porduçon dun sistema de *software*, anquanto la ciéncia de la cumputaçon studa ls fundamientos teóricos de ls aspetos cumputacionales.   
   
L termo fui criado na década de 1960 i outelizado ouficialmente an 1968 na  *NATO Science Committe*. Sue criaçon surgiu nua tentatiba de cuntornar la crise de l software i dar un tratamiento d'angenharie (mais sistemático i cuntrolado) al zambolbimiento de sistemas de *software* cumplexos. Un sistema de *software* cumplexo se carateriza por un cunjunto de cumponentes abstratos de *software* (struturas de dados i algoritmos) ancapsulados na forma de procedimientos, funçones, módulos, oubjetos ó agentes i anterconetados antre si, cumpondo la arquitetura de l software, que debiran ser eisecutados an sistemas cumputacionales.
  
Ls fundamientos científicos ambolben l'uso de **modelos abstratos i percisos** que permiten al angenheiro specificar, porjetar, amplementar i manter sistemas de *software*, abaluando i garantindo sues culidades. Para alhá çto, debe ouferecer macanismos para se planeijar i gerenciar l porcesso de zambolbimiento. Ampresas zambolbedoras de *software* passórun a ampregar esses cunceitos subretodo para ourientar sues árias de zambolbimiento, muitas deilhas ourganizadas sob la forma de Fábrica de Software.
   
La Angenharie de Sistemas ye ua ária mais ampla por tratar de todos ls aspetos de sistemas baseados an cumputadors, ancluindo *hardware* i angenharie de porcessos para alhá de l *software*.

La Ounibersidade Federal de Goiás fui la purmeira anstituiçon ne l paíç a criar l curso de graduaçon an Angenharie de Software, tenendo an custante eiboluçon de sue grade curricular.

## Árias de coincimiento
Segundo l SWEBOK (Cuorpo de Coincimiento de la Angenharie de Software), berson 2004, las árias de coincimiento de la **Angenharie de Software** son:
* Requesitos (Requirements) de Software
* Porjeto (Zeign) de Software
* Custruçon (Custrution) de Software
* Teste (Testing) de Software
* Manutençon (Maintenance) de software
* Geréncia de Cunfiguraçon de Software
* Geréncia de Angenharie de Software
* Porcessos de Angenharie de Software
* Ferramientas i Métodos de Angenharie de Software  
* Culidade (Quality) de Software

Cunforme Pressman, la Angenharie de Software (ES) ye ua tecnologie an camadas. I la base de todas essas camadas ye l foco na culidade de l software zambolbido. Antoce, anclusibe de l punto de bista didático, ye antressante studarmos la ES an sues camadas de Porcesso, Métodos i Ferramientas.

## Porcesso de software

Porcesso de *software*, ó porcesso d'angenharie de software, ye ua sequéncia coerente de práticas qu'oubjetiba l zambolbimiento ó eiboluçon de sistemas de *software*. Estas práticas angloban las atebidades de specificaçon, porjeto, amplementaçon, testes i caraterizan-se pula anteraçon de ferramientas, pessonas i métodos.

SEE i PSEE son ls ambientes buoltados al zambolbimiento i manutençon de
porcessos. L porjeto SPSEE ye ua cuntinaçon de ls studos de porcessos, percipalmente
de l'ambiente PSEE.

Debido al uso de la palabra porjeto an muitos cuntestos, por questones de clareza, hai bezes an que se prefira ousar l'ouriginal an anglés zeign.

### [[Modelos de porcesso de software]]
Un modelo de porcesso de zambolbimiento de software, ó simplesmente modelo de porcesso, puode ser bisto cumo ua repersentaçon, ó abstraçon de ls
oubjetos i atebidades ambolbidas ne l porcesso de software. Para alhá desso, ouferece ua forma
mais abrangente i fácele de repersentar l gerenciamiento de porcesso de software i
por bias desso l progresso de l porjeto.

Eisemplos d'alguns modelos de porcesso de software;

* Modelos ciclo de bida
* Sequencial ó Cascata (de l'anglés *waterfall*) - cun fases çtintas de specificaçon, porjeto  i zambolbimiento.
* Zambolbimiento iteratibo i ancremental - zambolbimiento ye ampeçado cun un subconjunto simples de Requesitos de Software i iteratibamente alcança eiboluçones susequentes de las bersones até l sistema to star amplementado
* Eibolucional ó Prototipaçon - especificaçon, porjeto i zambolbimiento de protótipos.
* B-Model - Parecido cul modelo cascata, mas cun ua ourganizaçon melhor, que permite que se cumpare cun outros modelos mais modernos.
* Spiral - eiboluçon atrabeç de bários ciclos cumpletos de specificaçon, porjeto i zambolbimiento.
* Cumponentizado - reuso atrabeç de montaige de cumponentes yá eisistentes.
* Formal - amplementaçon a partir de modelo matemático formal.
* Ágil
* RAD
* Quarta geraçon.

### Modelos de maturidade
Ls modelos de maturidade son un metamodelo de porcesso. Eilhes surgiran para abaluar la culidade de ls porcessos de *software* aplicados nua ourganizaçon (ampresa ó anstituiçon). L mais coincido ye l *Capabelity Maturity Model Antegration* (**[[CMMI|CMMi]]**), de l Software Anginering Anstitute - SEI.

L CMMi puode ser ourganizado atrabeç de dues formas: Cuntínua i stagiada.
Pul modelo estagiado, mais tradecional i mantendo cumpatibelidade cul CMM, ua ourganizaçon puode tener sue maturidade medida an 5 nibles:
* Níbel 1 - Caótico;
* Níbel 2 - Capacidade de repetir sucessos anteriores pul acumpanhamiento de custos, cronogramas i funcionalidades;
* Níbel 3 - L porcesso de software ye bien defenido, decumentado i padronizado;
* Níbel 4 - Rializa ua geréncia quantitatiba de l porcesso de software i de l perduto;
* Níbel 5 - Usa l'anformaçon quantitatiba para melhorar cuntinamente i gerenciar l porcesso de software. Até márcio/2012, ne l Brasil, hai solamente 13 ampresas neste nible.

L CMMi ye un modelo de maturidade recentemente criado cul fin d'agrupar las defrentes formas d'outelizaçon que fúrun dadas al sou predecessor, l CMM.

L (**[[MPS.BR]]**),  ó Melhorie de Porcessos de l Software Brasileiro, ye a la par un mobimiento pa la melhorie i un modelo de culidade de porcesso buoltada pa la rialidade de l mercado de pequeinhas i médies ampresas de zambolbimiento de software ne l Brasil. L MPS.BR cuntempla 7 nibles de maturidade, de La la G, sendo la purmeira l mais maduro. Até agosto/2012, ne l Brasil, hai solamente 2 ampresas neste nible.

## Metodologies i métodos
L termo metodologie ye bastante cuntroberso nas ciéncias an giral i na Angenharie de Software an particular. Muitos outores parécen tratar metodologie i método cumo sinónimos, mas serie mais adequado dezir qu'ua metodologie ambolbe percípios filosóficos que guian ua gama de métodos qu'outelizan ferramientas i práticas defrenciadas para rializar algo.

Assi teríamos, por eisemplo, la Metodologie Struturada, na qual eisisten bários métodos, cumo Análeze Struturada i Porjeto Estruturado (muitas bezes chamados SA/SD, i Análeze Eissencial). 
Dessa forma, tanto la Análeze Struturada quanto la Análeze Eissencial outelizan la ferramienta Diagrama de Fluxos de Dados para modelar l funcionamiento de l sistema. 

Segue ambaixo las percipales Metodologies i Métodos correspondentes ne l zambolbimiento de software: 

* Metodologie Struturada
** Análeze Estruturada
** Porjeto Struturado
** Porgramaçon Estruturada
** Análeze Eissencial
** SADT
** DFD - Diagrama de Fluxo de Dados
** MER - Modelo de Antidades i Relacionamientos
* Metodologie Ourientada la Oubjetos
** Ourientaçon la Oubjetos
** Rational Unified Process ( RUP )
* Zambolbimiento ágil de software
** Feature Driben Debelopment ( FDD )
** Enterprise Unified Process (EUP)
** Scrun (Scrun)
** Crystal (Crystal Clear, Crystal Ourange, Crystal Ourange Web)
** Porgramaçon strema ( XP )
* Outras Metodologies
** Microsoft Solution Framework ( MSF )

### Modelaige
L'abstraçon de l sistema de *software* atrabeç de modelos que l çcriben ye un poderoso strumiento pa l'antendimiento i quemunicaçon de l perduto final que será zambolbido. 

La maior deficuldade nesta atebidade stá ne l'eiquilíbrio (*tradeoff*) antre simplicidade (faborecendo la quemunicaçon) i la cumplexidade (faborecendo la percison) de l modelo.

Pa la modelaige podemos citar 3 métodos:
* Análeze struturada, criada por Gane & Searson;
* Análeze Eissencial, criada por Palmer & McMenamin i Ed. Yourdon;
* UML, criada por Grady Boch, Ibar Jacobson & Jaimes Rumbaugh. Ye hoije l método mais quemun pa l paradigma ourientado a oubjetos.

## Ferramientas, tecnologies i práticas
La **angenharie de software** aborda ua série de práticas i tecnologies, percipalmente studadas pula ciéncia de la cumputaçon, anfocando sou ampato na pordutebidade i culidade de *software*.

Çtacan-se l studo de lenguaige de porgramaçon, banco de dados i paradigmas de porgramaçon, cumo:

* Porgramaçon struturada 
* Porgramaçon funcional
* Porgramaçon ourientada a oubjetos
* Cumponentes de Software
* Porgramaçon ourientada a aspeto

### Ferramientas
Outro punto amportante ye l'uso de ferramientas '''CASE''' (de l'anglés *Cumputer-Aided Software Anginering*). Essa classeficaçon abrange to ferramienta baseada an cumputadores qu'auxelian atebidades d'angenharie de *software*, zde l'análeze de requesitos i modelaige até porgramaçon i testes.

Ls ambientes de zambolbimiento antegrado (**IDEs**) ténen maior çtaque i suportan, antre outras cousas:

* Eiditor
* Cumpilador
* Debug
* Geraçon de código
* Modelaige
* Deploy
* Testes nun outomatizados
* Testes outomatizados
* Refatoraçon (*Refatoring*)
* Geston de Riscos ne ls porjetos de Software
* Uso de la Prototipaige na Ang. de Requesitos

## Geréncia de porjetos
La geréncia de porjetos se preocupa an antregar l sistema de *software* ne l prazo i d'acuordo culs requesitos stablecidos, liebando an cunta siempre las lemitaçones d'ourçamiento i tiempo. 

La geréncia de porjetos de software se carateriza por tratar subre un perduto antangible, mui flexible i cun porcesso de zambolbimiento cun baixa padronizaçon.

### Planeijamiento
L planeijamiento dun porjeto de zambolbimiento de *software* anclui:

* Análeze Eiquenómica de Sistemas de Anformaçones
* ourganizaçon de l porjeto (ancluindo eiquipes i respunsabelidades)
* struturaçon de las tarefas (de l'anglés WBS - *[[work breakdown struture]]*)
* cronograma de l porjeto (de l'anglés *porjet schedule*)
* análeze i geston de risco
* stimatiba de custos

Essas atebidades sofren cun deficuldades típicas de zambolbimiento de *software*. La pordutebidade nun ye linear an relaçon al tamanho de l'eiquipe i l'oumiento de pordutebidade nó ye eimediato debido als custos de daprendizado de nuobos nembros. La diminuiçon de culidade para acelerar l zambolbimiento custantemente prejudica feturamente la pordutebidade.

La stimatiba de deficuldades i custos de zambolbimientos son mui defíceles, para alhá de l surgimiento de porblemas técnicos. Esses fatores requíren ua análeze de riscos cuidadosa.

Para alhá de la própia eidantificaçon de ls riscos, hai que tener an cunta la sue geston. Seia eibitando, seia resolbendo, ls riscos necessitan ser eidantificados (stimando l sou ampato) i dében ser criados prainos para resoluçon de porblemas.

### Análeze de requesitos
Las atebidades d'análeze cuncentran-se na eidantificaçon, specificaçon i çcriçon de ls requesitos de l sistema de *software*. An resumo, requesito ye ua necidade que l *software* debe cumprir.

Hai bárias anterpretaçones i classeficaçones subre requesitos, antre eilhas:

* funcional 
* nun funcional
* d'usuairo 
* de sistema

Ye quemun que l cliente nó saba l qu'el rialmente zeia, qu'haba porblemas na quemunicaçon i inda qu'haba mudança custante de requesitos. Todos esses fatores son recrudescidos pula antangibelidade subre caratelísticas de sistemas de *software*, percipalmente subre l custo de cada requesito.

* Studo de Biabelidade (Liebantamiento de Requesitos)

La Angenharie de requesitos ye un porcesso qu'ambolbe todas las atebidades eisigidas para criar i manter l decumiento de requesitos de sistema (SOMMERBILLE). Segundo RUMBAUGH, alguns analistas cunsidran l'angenharie de Requesitos cumo un porcesso d'aplicaçon dun método strutura cumo l'análeze ourientada a oubjetos. Inda assi, la Angenharie de requesitos ten mui mais aspetos de l que ls que stan abordados por esses métodos.

Ambaixo un pequeinho Porcesso de Angenharie de Requesitos (SOMMERBILLE).

Studo de la biabelidade → "Relatório de Biabelidade"
Oubtençon i Análeze de Requesitos → "Modelos de Sistema"
Specificaçon de Requesitos → "Requesitos de Usuário i de Sistema"
Balidaçon de Requesitos → "Decumiento de Requesitos"

L purmeiro porcesso a ser rializado nun Sistema nuobo ye l Studo de Biabelidade. Ls resultados deste porcesso dében ser un relatório culas recomendaçones de la biabelidade técnica ó nun de la cuntenidade ne l zambolbimiento de l Sistema proposto. Basicamente un studo de biabelidade, ambora seia normalmente rápido, deberá abordar fundamentalmente las seguintes questones:

* L Sistema proposto cuntribui pa ls oubjetibos gerales de l'ourganizaçon?
* L Sistema poderá ser amplementado culas tecnologies dominadas pula eiquipe drento de las restriçones de custo i de prazo? Ó percisa de treinamientos adicionales?
* L Sistema puode ser antegrado, i ye cumpatible culs outros sistemas yá an ouparaçon?

### Geston
Eesisten cinco tipo de gestones: pessonal, perduto, porcesso, porjeto i material.

## Stórico
La Angenharie de Software (ES) surgiu an meados de ls anhos 1970 nua tentatiba de cuntornar la crise de l software i dar un tratamiento de angenharie (mais sistemático i cuntrolado) al zambolbimiento de sistemas de software cumplexos. Un sistema de software cumplexo se carateriza por un cunjunto de cumponentes abstratos de software (struturas de dados i algoritmos) ancapsulados na forma de procedimientos, funçones, módulos, oubjetos ó agentes anterconetados antre si, cumpondo l'arquitetura de l software, que debiran ser eisecutados an sistemas cumputacionales.

## ES ne l persente i tendéncias
Atualmente eisiste un çtaque to special pa la Angenharie de Software na Web. Tamien outelizado por Presmann la sigla WebE, ye l porcesso ousado para criar WebApps (aplicaçones baseadas na Web) d'alta culidade. Ambora ls percípios básicos de la WebE séian mui próssimos de la Angenharie de Software clássica, eisisten peculiaridades specíficas i própias.

Cul adbento de l B2B (i-business) i de l B2C (i-commerce), i inda mais cun aplicaçones pa la Web 2.0, maior amportança quedou sendo esse tipo d'angenharie. Normalmente adotan ne l zambolbimiento l'arquitetura MBC (Model-Biew-Cuntroller).

Outra ária de tendéncia an Angenharie de Software trata de l'aplicaçon de técnicas outimizaçon matemática pa la resoluçon de dibersos porblemas de la ária. La ária, chamada Search-based software anginering, ó Outimizaçon an angenharie de software an Pertués, apersenta bários resultados antressantes. Para mais detalhes an Pertués, ber testo cun .com/resources/Search-based%20Software%20Enginering%20-%20Aplicaçon%20de%20Metaheurísticas%20en%20Problemas%20da%20Engenharie%20de%20Software%20Rebison%20de%20Literatura%20%28Otimizaçon%20en%20Engenharie%20de%20Software%292.pdf aplicaçones de l'outimizaçon an angenharie de software.

L Brasil atualmente cunta cun seis cursos de nible superior an Angenharie de Software nas seguintes anstituiçones reconhecidas pul MEC: UnB, UFRN, Ounibersidade Federal de l Ceará, Ounibersidade Federal de Goiás, Ounibersidade de Riu Berde i Unipampa.

## Bibliografie
* MAGELA, Rogerio. Angenharie de Software Aplicada: Percípios  (belume 1). Alta Books. 2006.
* MAGELA, Rogerio. Angenharie de Software Aplicada: Fundamientos (belume 2). Alta Books. 2006.
* 
* PRESSMAN, Roger. Software Anginering: La Pratitioner's Approach, 6ªeidiçon, Mc Graw Hill, 2005.
* .com/libros.htn''ANÁLISE ECONÓMICA DE SISTEMAS DE INFORMAÇÕES.'' (ISBN 978-85-909374-7-0) Eiditora Ixtlan. Outor : *Sergio Kaminski.* Comentairo: *Mostra todas las etapas de zambolbimiento de l software, relacionando al lucro,receita i custo.*

## Ber tamien

* Zambolbimiento de software
* Culidade de software
* Arquitetura de dados
* Software Anginering Body of Knowledge
* Análeze eiquenómica de sistemas d'anformaçones
* Matriç CRUD
* Outimizaçon an angenharie de software
* Praxis - Porcesso de zambolbimiento de software cun anfoque eiducacional

## Ligaçones sternas
* .com.br/podcast Podcasts (an pertués) subre árias d'antresse de la Angenharie de Software CMMI, MPS.BR, Scrun, Streme Porgramming i Lean Software Debelopment
* .com/jobs-rated/10-best-jobs-2012 The 10 Best Jobs of 2012  - Angenharie apuntada cumo melhor profisson de ls Stados Ounidos an 2012

.com/jobs-rated/10-best-jobs-2012 The 10 Best Jobs of 2012  - Angenharie apuntada cumo melhor profisson de ls Stados Ounidos an 2012

.com/jobs-rated/10-best-jobs-2012 The 10 Best Jobs of 2012  - Angenharie apuntada cumo melhor profisson de ls Stados Ounidos an 2012