Buscar

tralho engenharia de software

Prévia do material em texto

Engenharia de software 
Origem: Wikipédia, a enciclopédia livre. 
 
A engenharia de software é a área responsável pelo estabelecimento de técnicas e 
práticas para o desenvolvimento de software cobrindo uma ampla área de aplicações e 
diferentes tipos de dispositivos.[1] 
Engenharia de software é uma área da computação voltada à especificação, 
desenvolvimento, manutenção e criação de software, com a aplicação de tecnologias e 
práticas de gerência de projetos e outras disciplinas, visando organização, produtividade 
e qualidade.[2] Atualmente, essas tecnologias e práticas englobam linguagens de 
programação, banco de dados, ferramentas, plataformas, bibliotecas, padrões de projeto 
de software, processo de software e qualidade de software. Além disso, a engenharia de 
software deve oferecer mecanismos para se planejar e gerenciar o processo de 
desenvolvimento de um sistema computacional de qualidade e que atenda as 
necessidades de um requisitante 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. A área que estuda 
e avalia os processos de engenharia de software, propondo a evolução dos processos, 
ferramentas e métodos de suporte a engenharia de software 
A Engenharia de Software é composta de diversos conceitos de fundamental 
importância na área e abrange um processo, um conjunto de métodos ou práticas e 
diversas ferramentas que possibilitam aos profissionais desenvolverem software de alta 
qualidade. A primeira definição é a de Software. Muitos não sabem dizer realmente o 
que é um software. Um Software de computador é um produto desenvolvido por 
profissionais de software que também dão suporte a ele a longo prazo e abrange 
programas executáveis em computadores de diversos portes ou arquitetura, conteúdos 
que são apresentados quando programas são executados, informações descritivas em 
forma impressa ou virtual. Outro conceito importante dentro do software é o de software 
legado que consiste de um software desenvolvido há muitas décadas atrás, portanto, é 
um software bastante antigo que têm sido continuamente modificado para se adequar a 
mudanças dos requisitos de negócio e a plataformas computacionais. Esse tipo de 
software apesar de ser antigo, eles são considerados indispensáveis para funções de 
negócios vitais. 
A engenharia de software está fortemente relacionada ao software na medida que ela 
nos capacita para o desenvolvimento de sistemas complexos dentro do prazo e com alta 
qualidade, dois aspectos muito importantes para o sucesso de um projeto. 
A criação de um software bem-sucedido se dá através de um processo adaptável e ágil 
que conduzirá a um resultado de alta qualidade, atendendo às necessidades dos clientes 
que de fato usarão o software. 
Outro conceito bastante importante é o de artefato que do ponto de vista de um 
engenheiro de software consiste de um conjunto de programas, conteúdo (dados) e 
outros artefatos que são software. No entanto, do ponto de vista do usuário, o artefato 
consiste de informações resultantes que tornam melhor a vida dele, como 
documentação, help online, etc. 
No restante do artigo veremos mais detalhes sobre definições de Engenharia de 
Software e processos. 
Engenharia de Software 
A engenharia de software possui diversas definições. No entanto, Fritz Bauer definiu o 
conceito de engenharia de software de forma bastante clara: "Engenharia de Software é 
o estabelecimento e o emprego de sólidos princípios de engenharia de modo a obter 
software de maneira econômica, que seja confiável e funcione de forma eficiente em 
máquinas reais". 
Essa definição apesar de fornecer uma base parece ser um tanto abstrata demais, não 
enfatizando aspectos mais técnicos, necessidades do cliente, prazo, métricas e 
processos. Por isso a IEEE desenvolveu uma definição muito mais abrangente: 
"Engenharia de Software é: (1) A aplicação de uma abordagem sistemática, disciplinada 
e quantificável no desenvolvimento, na operação e na manutenção de software; isto é, a 
aplicação de engenharia de software. (2) O estudo de abordagens como definido em 
(1)". 
A engenharia de software está fortemente ligada com a noção de qualidade. A Figura 
1mostra as camadas da engenharia de software. 
 
Figura 1. Camadas da Engenharia de Software. 
A gestão da qualidade ajudam a promover uma cultura de aperfeiçoamento contínuo de 
processos, sendo esta a cultura que no final das contas sempre leva ao desenvolvimento 
de abordagens cada vez mais efetivas na engenharia de software. Portanto, podemos 
notar que a parte fundamental que sustenta a engenharia de software é o foco na 
qualidade, como mostrado na figura acima. 
A figura também mostra uma camada de processos que é a responsável por manter as 
camadas de tecnologia coesas e também é quem possibilita o desenvolvimento de 
software de forma racional e dentro do prazo. O processo define uma metodologia que 
deve ser estabelecida para que possamos ter uma entrega efetiva. O processo também é 
a base para o controle do gerenciamento de projetos de software, permite aplicar 
métodos técnicos, produzir diferentes produtos como modelos, documentos, mudanças, 
etc, e por fim estabelece marcos, garantia da qualidade e gerir mudanças de forma 
apropriada. 
Temos também uma camada de métodos que é responsável por fornecer informações 
técnicas para desenvolver software. Os métodos envolvem diversas tarefas como: 
comunicação, análise de requisitos, modelagem de projeto, construção de software, 
testes e suporte. 
Por fim, as ferramentas são responsáveis por fornecer suporte automatizado ou 
semiautomatizado para o processo e os métodos. Quando as ferramentas são interligadas 
de forma que informações criadas por uma ferramentas são usadas por outra temos um 
sistema que suporta o desenvolvimento, também chamado de Engenharia de Software 
com o Auxílio do Computador ou Computer Aided Software Engeneering (CASE). 
Processos de Software 
Ivar Jacobson, Grady Booch e James Rumbaugh definem um processo de software 
como: "é quem está fazendo o quê, quando e como para atingir um determinado 
objetivo". De forma geral um processo é um conjunto de atividades (esforço para atingir 
um objetivo amplo como, por exemplo comunicar-se com os interessados), ações 
(conjunto de tarefas que resultam num artefato de software como, por exemplo um 
modelo de projeto de arquitetura) e tarefas (objetivos pequenos e bem definidos como, 
por exemplo realizar um teste unitário) realizadas na criação de um produto. 
Vale ressaltar que um processo não é algo rigidamente prescrito, pelo contrário, na 
engenharia de software o processo é uma abordagem adaptável que possibilita que a 
equipe de software selecione o trabalhoa ser realizado e escolha um conjunto apropriado 
de ações e tarefas. O foco é sempre na entrega do software dentro do prazo e com 
qualidade suficiente para satisfazer aos clientes e àqueles que de fato usarão o sistema. 
Um conceito bastante importante dentro de processo é o de metodologia ou framework 
que é o responsável por estabelecer uma base para um processo de engenharia de 
software completo através de um pequeno número atividades estruturais aplicáveis a 
todos projetos de software, independente de tamanho ou complexidade. Uma 
metodologia de processo genérica possui cinco atividades: 
 Comunicação: Antes do inicio do projeto comunicamos e colaboramos com os clientes 
e todos os interessados para compreender os seus objetivos e fazermos o 
levantamento das necessidadesque ajudarão a definirmos as funções e características 
do software a ser construído. 
 Planejamento: O planejamento é como um mapa que ajuda a guiar a equipe na 
jornada de construção do produto. No planejamento define-se o trabalho de 
engenharia descrevendo suas tarefas técnicas, riscos, recursos necessários, produtos a 
serem construídos e um cronograma de trabalho. 
 Modelagem: Modelos são esboços de modo que possamos ter uma ideia melhor do 
todo. Caso necessários os modelos são mais detalhados a fim de compreender melhor 
o problema e como resolvê-lo. 
 Construção: Essa atividade é onde o software é construído. No entanto, atividades de 
testes também são realizadas nessa atividade com o intuito de revelar erros na 
codifição. 
 Emprego: O incremento do software ou o software completo é entregue ao cliente 
que avalia o produto e retorna feedbacks baseando-se na avaliação do produto. 
As cinco atividades genéricas acima podem ser utilizadas para criação de software 
simples, pequenos ou grandes e complexos. O detalhes do processo de software poderão 
ser diferentes para diferentes tipos de projetos, no entanto, as atividades metodológicas 
permanecerão as mesmas. 
Para a maioria dos projetos de software poderemos ter essas cinco atividades aplicadas 
iterativamente quantas forem as iterações do projeto, sendo que cada iteração irá gerar 
um incremento de software. Ao final de cada incremento teremos um software cada vez 
mais completo.

Continue navegando