Subtopíco: Engenharia de Software:
PALAVRAS - CHAVE: Engenharia de Software, Tecnologia, Ferramentas e Modelo.
SIGLAS: BDUF (Big Design Up Front – Design Completo Antes de Tudo).
TRADUÇÕES:
Requiriment & Analysis: Requisitos e Analises.
System design: Design de Sistema.
Implementation: Implementação.
Testing: Testes.
Development: Desenvolvimento.
Maintenance: Manutenção.
Product Owner: Proprietário do produto.
Scrum Master: Mestre do Scrum.
Sprint: Ciclo de desenvolvimento.
Backlog: Lista de tarefas priorizadas.
Stand-Up: Reunião rápida em pé.
Retrospective: Retrospectiva.
A Engenharia de Software é um modelo de processo desenvolvido para abranger todas
as etapas da produção de um software, desde o seu desenvolvimento até a manutenção
após a sua conclusão (SOMMERVILLE, 2003). Muitas vezes, pode ser compreendida,
como define PRESSMAN (1995), uma “Tecnologia de Camadas”, onde o foco
principal é o compromisso com a qualidade durante todo o desenvolvimento do
software. Ao longo da evolução da Engenharia de Software enquanto modelo de
processo, foram criadas ferramentas computadorizadas com o objetivo de apoiar e
facilitar o trabalho dos desenvolvedores. Apesar de representarem um avanço
significativo, essas tecnologias ainda exigem a intervenção humana, pois envolvem um
processo intelectual. Para SOMMERVILLE (2003), “essas ferramentas desempenham
um papel nas atividades fundamentais do processo, como a especificação, o projeto e a
implementação”.
Um projeto conduzido com base na Engenharia de Software é caracterizado como um
conjunto de atividades e resultados voltados para a produção de um software específico.
Ainda que essas atividades sejam apoiadas por ferramentas computacionais, continuam
dependendo do julgamento e da análise humana para orientar os processos e interpretar
os dados. Por esse motivo, existem diversos modelos de desenvolvimento, pensados
para atender às necessidades específicas de diferentes organizações (SOMMERVILLE,
2003).
A importância da Engenharia de Software está no fato de permitir o desenvolvimento
de sistemas dentro de prazos definidos e com alta qualidade. Ela traz organização e
disciplina a atividades que, por natureza, podem ser complexas e confusas. Esse uso
organizado permite a criação de softwares adaptados a diferentes abordagens, atendendo
às necessidades e preferências de quem os solicita. A aplicação de métodos da
Engenharia de Software gera técnicas que ajudam no processo de desenvolvimento.
Esses métodos envolvem diversas tarefas, como comunicação, análise de requisitos,
modelagem do projeto, construção do programa, testes e suporte, todas baseadas
em requisitos fundamentais de diferentes áreas da tecnologia. (PRESSMAN e MAXIM,
2021).
De acordo com POLYA (2006), foi descrito em fases a essência da pratica da
engenharia de Software:
1. Compreender o problema (Comunicação e Analise)
2. Planejar uma solução (Modelagem do projeto de Software)
3. Executar o plano (Geração de Código)
4. Examinar o resultado para ter precisão (Testes e garantia de qualidade)
No contexto, essas etapas funcionam como um guia que conduz as práticas para a
estrutura do projeto.
Há determinados casos que os requisitos e a resolução do problema são bem
compreendidos, e com isso gera um trabalho que flui e entrega os resultados, porém há
problemas que são enfrentados, como a demanda de exigências de mudanças de
softwares (do tipo principalmente governamentais), que podem gerar um número
ilimitado de novos esforços. Para isso foi desenvolvido um modelo tradicional, que
sugere uma abordagem sequencial e sistemática para o desenvolvimento de software,
conhecido popularmente como ”Modelo Cascata”. (PRESSMAN e MAXIM, 2021).
Definido nos anos de 1970, o Modelo Cascata (Waterfall ou WFM) apresenta seu ciclo
de desenvolvimento sendo bem mais detalhado e previsível do que os modelos mais
simples em menos etapas. Esse modelo é considerado o “avô” de todos os ciclos de
vida, e baseia-se na filosofia BDUF (Big Design Up Front – Design Completo Antes de
Tudo), que propõe que, antes de qualquer processo de codificação, deve ser feito um
trabalho detalhado de Analise e Design, que, assim que o código for produzido, esteja o
mais próximo possível dos requisitos do cliente. (WAZLAWICK, 2019).
O Modelo Cascata é trabalhado para criar uma atividade de revisão de cada fase, para
que após a avaliação, seja definido se será passado para a próxima. Caso ele determine
que o projeto não está adapto a passar à próxima fase, deve se permanecer a mesma fase
e feitos os ajustes necessários. (ELLIS, 2010).
Esse modelo é feito através de documentação, para determinar se as fases, sendo todas
ou somente uma parte definida, foram finalizadas ou não. (WAZLAWICK, 2019).
Um dos principais problemas dessa abordagem é que, de forma geral, é fácil fazer a
verificação se os códigos estão funcionando corretamente, porém difícil definir se os
modelos do projeto estão bem escritos. Para tornar mais viável, “esse tipo de ciclo
necessita de ferramentas de análise automatizadas de diagramas e documentos para
verificar sua exatidão” (WAZLAWICK, 2019).
Modelo Cascata 1
Além do Modelo Cascata – considerado como o “avô” dos ciclos de vida – surgiram
modelos mais modernos, de forma a tornar mais eficiente os modelos de trabalho:
Em 1990 foi criado um dos atuais modelos mais utilizados por empresas
desenvolvedoras de softwares, SCRUM. Ele teve um crescimento e popularidade
conquistados de forma rápida, após desbancar métodos tradicionais, se tornando a forma
mais bem-sucedida de se trabalhar no desenvolvimento de softwares. (SABBAGH,
2013)
Em 2015 foi determinado por uma pesquisa feita por THE STANDISH GROUP (2015)
que projetos que utilizam o Modelo SCRUM como parte do desenvolvimento ou
métodos similares tem “3,5 vezes mais chance de sucesso”.
Por mais que o Modelo SCRUM tenha tido uma grande adoção nos últimos anos, ainda é
visto como problema alguns fatos apresentados ao decorrer do uso. O uso do SCRUM
implica em uma mudança em como as organizações lidam com o trabalho, em como
essas pessoas realizam esse trabalho, e principalmente com quem solicita e quem utiliza
de seus resultados. Assim como o SCRUM pode ser de fácil compreensão, sua adoção
pode ser difícil e dolorosa, tornando incomum a busca por atalhos e simplificações.
(SABBAGH, 2013).
O uso do SCRUM aumenta as chances de sucesso e de entregar valores mais rápidos,
assim como lidar com determinadas mudanças do escopo. Seu uso aumenta a qualidade
do produto e a produtividade das equipes. (SABBAGH, 2013).
Modelo Scrum 1
Dessa forma, a Engenharia de Software, desde sua criação e o desenvolvimento de seus
métodos, busca evoluir continuamente para oferecer às empresas estratégias cada vez mais
eficientes no desenvolvimento de softwares.