Você está na página 1de 11

UNIVERSIDADE DA REGIÃO DE JOINVILLE

BACHARELADO EM SISTEMAS DE INFORMAÇÃO

DESENVOLVIMENTO DE SOFTWARE COMO RESOLUÇÃO DE PROBLEMAS E


PROCESSO DE MODELAGEM
JOÃO VITOR DE ALENCAR

PROFESSOR ALEXANDRE CIDRAL


Fundamentos de Engenharia de Software

Joinville – SC
2022
SUMÁRIO

INTRODUÇÃO............................................................................................................ 3

1. QUESTÃO 01........................................................................................................4

2. QUESTÃO 02........................................................................................................5

3. QUESTÃO 03........................................................................................................6

4. QUESTÃO 04........................................................................................................7

CONSIDERAÇÕES FINAIS...................................................................................... 10

REFERÊNCIAS.........................................................................................................11
INTRODUÇÃO

As inúmeras áreas do conhecimento que encontramos no dia a dia são todas


influenciadas eventualmente por um cânon de obras que agem como diretrizes de
execução. Uma dessas grandes obras, no âmbito da engenharia de software é o
Guide to the Systems Engineering Body of Knowledge (SEBoK). Tal guia formaliza
de forma definitiva a perspectiva principal do desenvolvimento de programas do dia
atual: fazê-lo como solução de problemas. No trabalho presente será apresentado
ao leitor os passos por trás desse processo, e esclarecidos conceitos e ferramentas
pertinentes a esse tipo de criação de software.
1. QUESTÃO 01

Explique a relação entre o “Funil da Resolução de Problemas” e o “Ciclo de


Vida do Software”.

O “Funil de Resolução de Problemas” é como um processo da engenharia do


software aplicado com um problema ou necessidade. Entretanto, também podemos
fazer um paralelo com o Ciclo de Vida do Software: de acordo com Pádua (2008), no
seu ciclo de vida:

 Ele é concebido para tentar atender a uma necessidade;


 É especificado, quando essas necessidades são traduzidas em requisitos
viáveis;
 É desenvolvido, transformando-se em um conjunto formado por código e
outros itens, como modelos, documentos e dados;
 Passa por algum procedimento de aceitação e é entregue a um cliente;
 Entra em operação, é usado, e sofre atividades de manutenção, quando
necessário;
 É retirado de operação ao final de sua vida útil.

Na pirâmide da solução de problemas, as fases 1. Definição e análise, 2.


Investigação e compreensão, 3. Selecionar a melhor solução, 4. Projetar a solução e
5. Construir a solução podem ser associadas como intrínsecos, ou simplesmente
interconectados às fases do ciclo de vida do software, com exceção da última.
Nestes itens do funil é discutido em detalhe porque o produto deve ser
concebido, como deve ser especificado, desenvolvido, aceitado e utilizado. O funil
só não entende sua ponta até o final da vida do software, pois as necessidades do
problema, a esse ponto, não são mais aplicáveis. Conclusivamente, ambas
ferramentas têm uma relação como exemplos próximos e conectados de
mapeamento de fases de desenvolvimento de um software.
2. QUESTÃO 02

Explique qual a finalidade da aplicação dos princípios da abstração e da


representação no processo de modelagem de software.

Os princípios de abstração e representação são essenciais para que um


problema real possa ser “traduzido” em forma de uma série de informações que, por
sua vez, são empregadas para a melhor compreensão imediata dessa situação
através do olhar de uma entidade desenvolvedora de software. No caso da
abstração, o problema real se apresenta em seus aspectos mais primários e
fundamentais, e detalhes adicionais são trazidos com o passar do tempo. Em termos
de representação, por outro lado, as informações podem ser traduzidas de formas
variadas, como em artefatos matemáticos, descrições textuais ou gráficas.
A partir desse par de ferramentas é possível confeccionar um modelo de software,
onde essa série de informações será aplicada o domínio do problema e criar uma
visão do software.
3. QUESTÃO 03

O que é um modelo de software e quais os objetivos de sua utilização?

Para Espíndola (2015), um modelo é uma simplificação da realidade, e a


imagem que possui um bom modelo de software é a de uma linguagem repleta de
diagramas que nos permite a representação de sistemas complexos ou simples. Por
mediação desse, o desenvolvedor pode pôr em prática sua abstração e
representação em um meio que o permite ter uma visão “panorâmica” do que está
sendo desenvolvido, como, e por quê. Apesar disso, diversos modelos podem ser
aplicados para uma singular situação, e múltiplas perspectivas e vieses acerca de
um modelo podem formar uma série de ações completamente diferente entre seus
criadores. Existem classificações para tais perspectivas, que são representadas
muitas vezes nos tipos de modelos (de objetos, dinâmico e funcional).
É possível concluir que surge sempre a necessidade de projetar o modelo
adequado para o software através de suas necessidades, e que é habitual a
existência de um número de modelos com o passar do tempo e alteração da visão
acerca do problema. Essa visão é afetada principalmente a nível de negócios,
sistemas e software, dependendo do nível de abstração. O denominador comum em
todos esses modelos, entretanto, é que servem como meio de entendimento do(s)
contexto(s) de solução de problema e identificação e análise dos componentes que
integram o software em questão.
4. QUESTÃO 04

Quais as áreas do conhecimento da Engenharia de Software de acordo com o


SWEBoK?

O Guide to the Software Engineering Body of Knowledge, ou SWEBoK, é um


ótimo mecanismo para a definição das áreas do conhecimento da Engenharia de
Software que um profissional do ramo há de ter. Tais áreas são, respectivamente:

1. Requisitos de Software

Expressa as necessidades e limitações que o software terá em sua solução do


problema real. Para que o projeto não seja vulnerável, é necessário que sejam
apresentados, negociados, analisados e especificados os requisitos dele.

2. Projeto (ou design) de Software

O design é descrito como “o processo de definição da arquitetura, componentes,


interfaces e outras características de um sistema ou componente e o resultado
[daquele] processo” (IEEE, 1991). Nessa área os requisitos de software vistos
anteriormente são usados para projetar quais serão os componentes e interfaces e
como será sua interação, e deve ser levado em consideração um nível de detalhe
que permita a construção dos componentes.

3. Construção de Software

Uma ampla área caracterizada pelo desenvolvimento que compreende processos


como programação, testes isolados, depuração e verificação. Devem ser
cuidadosamente considerados os princípios de construção, gestão de construção,
suas tecnologias e ferramentas.

4. Teste de Software
Assimila os processos de avaliação e reconhecimento de propriedades a serem
aprimoradas. Aqui são verificados os comportamentos de um sistema com uma
expectativa em mente através, principalmente, de técnicas de teste de software e
avaliação da interface humano-computador.

5. Manutenção de Software

Envolve a mudança e adaptação do software para novos ambientes,


aperfeiçoamento de capacidades e ações corretivas a respeito dos defeitos que
apresenta o programa. Inclui considerações como questões técnicas e de
gerenciamento, estimativa de custo de manutenção, reengenharia, engenharia
reversa, técnicas de recuperação de desastres e ferramentas de manutenção.

6. Gerenciamento de Configuração de Software

Tarefa onde são registradas e ponderadas, de tempo em tempo, as


características físicas ou funcionais do sistema em questão. Nela são identificadas e
controladas as mudanças dessa configuração de modo que mantem a integridade e
rastreabilidade ao longo do ciclo de vida do projeto.

7. Gerenciamento de Engenharia de Software

Se preocupa com atividades de gerenciamento como planejamento,


coordenação, controle e relatórios para que o desenvolvimento e manutenção do
projeto possa ser considerado sistemático, disciplinado e quantificado. Assim, o
produto ou serviço pode ser entregue com eficiência, eficácia e benefício dos
stakeholders.

8. Processo de Engenharia do Software

Engloba ações de definição, implementação, avaliação, medição, gestão e


melhoria dos processos de ciclo de vida de software. É uma KA mais ampla que
busca implementações e mudanças nas atividades de trabalho dos desenvolvedores
para melhor compreensão e coordenação humana.
9. Ferramentas e Métodos de Software

Compartilhamento e avaliação de métodos e ferramentas úteis para


determinados estágios da engenharia de software. São comuns tópicos como os
princípios dos modelos, sintaxe e semântica, análise de correção, consistência,
interação e qualidade e métodos de desenvolvimento como os heurísticos, formais,
ágeis e de protótipo.

10. Qualidade de Software

Consiste em tarefas que mantém a condição de que o software precisa ter a


capacidade de se manter dentro de requerimentos estabelecidos previamente,
representando as necessidades e expectativas dos stakeholders. Isso é avaliado
usando como ferramenta os princípios da qualidade de software e sua gestão,
verificação e validação, revisões, auditorias e considerações práticas.
CONSIDERAÇÕES FINAIS

Conclusivamente, é evidente que o escopo do desenvolvimento de software


como solução de problemas é estruturado em tópicos e subtópicos disponíveis
desde a criação de modelos de processo detalhados e apresentados como guias,
seja, por exemplo, com ferramentas como o Funil de Resolução de Problemas e o
Ciclo de Vida do Software, ou através da visão completa a partir do SWEBoK.
Compreensíveis e fáceis de serem seguidos, esses instrumentos têm uma imensa
capacidade de universalizar e conectar os desenvolvedores, e é imprescindível seu
aprendizado.
REFERÊNCIAS

PÁDUA, Wilson de Paula. Engenharia de Software - Alguns Fundamentos


da Engenharia de Software. DevMedia, Rio de Janeiro. 2008.
Disponível em: <https://www.devmedia.com.br/artigo-engenharia-de-software-
alguns-fundamentos-da-engenharia-de-software/8029>. Acesso em: 27 nov. 2022.

ESPÍNDOLA, Evandro Camarini. A importância do Modelagem de Objetos


no Desenvolvimento de Sistemas. [s.n], [s.l]. 2007. Disponível em:
<http://linhadecodigo.com.br/artigo/1293/a-importancia-do-modelagem-de-objetos-
no-desenvolvimento-de-sistemas.aspx>. Acesso em: 27 nov. 2022.

BOURQUE, Pierre; FAIRLEY, Richard E. Guide to the Software


Engineering Body of Knowledge. 3 ed. IEEE Computer Society, Washington.
2014. Disponível em:
<https://www.computer.org/education/bodies-of-knowledge/software-engineering>.
Acesso em: 27 nov. 2022.

Você também pode gostar