Você está na página 1de 48

Campus Anchieta

Superior Tecnologia em Gestão da Tecnologia da Informação


Fundamentos de Engenharia de Software

Prof. Dr. João Carlos Lopes Fernandes


joao.fernandes1@docente.unip.br

1º Semestre/2023
Princípios do desenvolvimento de sistemas

• Aplicações e desenvolvimento de sistemas


computacionais;
• Ambiente computacional;
• Problemas de relacionamento entre a
gerência, cliente e desenvolvedor;
• Projeto e construção do software.

2
Era da Informação

• Na Era da Informação, o desenvolvimento


de softwares é uma das atividades mais
valorizadas no mercado de trabalho.
• Afinal, a internet e a computação assumem
um protagonismo cada vez maior em nosso
cotidiano.
• A cada dia que passa, novas soluções
tecnológicas surgem para mudar a maneira
como fazíamos determinada tarefa.

3
Transformação digital e cultural

• É uma transformação digital e cultural, pois


incita uma nova mentalidade na população
em geral, mas principalmente nos
empreendedores.
• Aqueles que não entenderem a importância
do software em seu negócio – seja qual for
sua área de atuação – tendem a ficar para
trás.

4
O Que é desenvolvimento de softwares?

• Desenvolvimento de softwares é a atividade


de criar programas de computação,
executada por um desenvolvedor ou grupo
de desenvolvedores.

5
Software é um produto virtual

• O software é um produto virtual, que


consiste essencialmente em um conjunto
de códigos – instruções escritas em
determinada linguagem da computação.
• Quando o usuário vai utilizar um software,
porém, ele não enxerga códigos.
• Isso porque essas instruções vão ser
traduzidas pela tela do equipamento
eletrônico e apresentadas de modo
diferente ou até mesmo materializadas em
ações em alguns tipos de aparelhos.
6
Os desenvolvedores

• Os desenvolvedores (ou “devs”, no jargão


da categoria) são programadores, ou seja,
eles escrevem o programa a partir dos já
referidos códigos.
• Mas nem todo programador é
desenvolvedor.
• Porque essa alcunha é atribuída aos
profissionais que participam de todo o
processo de desenvolvimento de softwares.

7
Não basta, portanto, apenas escrever códigos.

• O desenvolvedor precisa saber conduzir um


projeto, desde a concepção, entendendo
quais são as necessidades do cliente.
• Um trabalho que envolve ouvir, colher
informações, fazer protótipos, testar,
ajustar, homologar e implementar.
• O desenvolvimento de softwares é uma
atividade complexa, que exige bastante
conhecimento técnico.

8
O que é um sistema computacional?

• O software, ou programa, é uma das partes


que compõem um sistema computacional. A
outra é o hardware.
• O hardware é o dispositivo eletrônico que
vai receber essas instruções e traduzi-las
em um formato que seja útil para o usuário.
• Dessa forma, o software é a parte lógica e
o hardware a parte física, que serve como
interface entre o código e o usuário.

9
O hardware

• Mas quando falamos em sistema


computacional, a referência é ao conjunto
de hardwares capaz de processar as
informações de um software.
• O sistema computacional tem o objetivo de
dar suporte a serviços de automação de
tarefas ou apoiar atividades dos usuários
com o processamento de informações.

10
Como desenvolver softwares?

• Ele envolve várias etapas entre a


concepção do projeto – seja um projeto
pessoal ou uma demanda recebida de um
cliente – e a sua conclusão.
• Também se relaciona, principalmente
quando se trata de uma equipe de
desenvolvedores, a uma metodologia de
trabalho para a gestão do projeto.

11
O código

• Nada disso teria utilidade sem o código em


si. Só se pode dar vida a um software,
portanto, com instruções escritas em uma
determinada linguagem.

12
O que são linguagens de programação?

• São padrões de instruções reconhecíveis


em determinados sistemas e dispositivos.
• Utilizando as instruções certas de
determinada linguagem, é possível fazer a
mágica de transformar palavras em ações
ou outros elementos na tela de um
computador, tablet ou smartphone.
• Vale destacar que nem todos os ambientes
aceitam as mesmas linguagens.

13
Principais linguagens no desenvolvimento

• Java
– Uma das linguagens mais usadas no mundo, é
muito utilizada em ambientes corporativos e
para desenvolver aplicativos para Android em
tablets e smartphones.
• JavaScript
– Não confunda com a linguagem Java. Essa é
completamente diferente, muito utilizada
principalmente no frontend, para criar
interatividade em aplicações da web

14
Principais linguagens no desenvolvimento

• Python
– É uma linguagem bastante recomendada para
aqueles que estão começando a se aventurar no
mundo da programação, por ser intuitiva, de fácil
aprendizado e de código aberto.
• C++
– Uma variação da linguagem C bastante popular no
desenvolvimento de softwares mais pesados, como
games e sistemas de gestão integrados.
• PHP
– Linguagem utilizada principalmente no backend de
sites, na integração entre as informações de uma
página da web e um banco de dados MySQL.
15
Metodologias de desenvolvimento

• As metodologias de desenvolvimento são


conjuntos de práticas pensadas para
coordenar o trabalho de criação de
softwares.
• É preciso coordenar quem faz o quê,
quando, como e onde. E não basta definir
tudo isso em uma reunião, ficar na palavra
e deixar assim até o fim do projeto.

16
Qual for a metodologia escolhida

• O trabalho envolve, basicamente, as


seguintes figuras:
– Desenvolvedores: aqueles que receberão os
requisitos e construirão o software
– Gerente de projeto: responsável por controlar o
andamento do trabalho, fazendo o possível para
que as entregas sigam dentro dos prazos
planejados

17
Metodologias tradicionais ou ágeis

• Nas tradicionais, como a metodologia


estruturada, modelo em cascata e
programação orientada a objetos, o escopo
é pouco flexível.
• Por isso, elas têm dado lugar a
metodologias ágeis, uma exigência dos
tempos de transformação digital, em que é
preciso ter flexibilidade, etapas menores e
feedbacks e alinhamento constantes.

18
Modelo em cascata

19
Espiral

20
Programação orientada a objetos

21
Metodologias ágeis

• As metodologias ágeis também preveem a


aprovação por partes, mesmo em projetos
que não são tão complexos, o que ajuda a
acelerar o aprendizado, amadurecer a
relação com o cliente e gerar insights
valiosos para o resto do projeto.
• A fase de produção pode envolver um
momento de arquitetura de software, com
uma apresentação abstrata da solução que
será desenvolvida.
22
Metodologias ágeis

23
Etapas desenvolvimento de softwares

• Dependendo da metodologia utilizada, pode


haver uma divisão diferente das etapas,
mas todas as fases descritas abaixo são
essenciais para começar e terminar um
projeto.

24
Levantamento de requisitos

• Todo projeto de criação de um software


deve começar por aqui.
• Ser negligente nessa primeira etapa pode
colocar todo o trabalho a perder.
• O risco de alguma etapa posterior empacar
porque os requisitos não foram levantados
é grande.

25
Reais necessidades

• O levantamento de requisitos existe para


saber quais são as reais necessidades dos
clientes.
• Requisitos são condições, ou seja,
exigências que determinam que o software
precisará seguir determinados padrões e
especificações.

26
Requisitos funcionais

• São requisitos funcionais o que o sistema


deve fazer, ou seja, suas funções e
informações.
• Todas as necessidades, características ou
funcionalidades esperadas em um processo
que podem ser atendidos pelo software.
• Não é exagero dizer que essa etapa é de
responsabilidade compartilhada entre
cliente e gerente de projeto.

27
Requisitos não funcionais

28
Exemplo no controle educacional

29
Atender ao cliente

• Pois cabe ao cliente fazer suas exigências,


mas aquele que coordenará a equipe de
desenvolvedores também precisa se
esforçar para compreender totalmente as
necessidades e problemas a serem
resolvidos de quem o está contratando.

30
Análise de requisitos

• Após o levantamento dos requisitos, a fase


seguinte consiste em avaliá-los, com o
intuito de analisar a viabilidade do trabalho.
• Primeiro, é preciso escrutinar as
informações recebidas.

31
Condições técnicas.

• Está tudo claro ou há erros, contradições,


ambiguidades, dados incompletos ou
requisitos ocultos nas entrelinhas?
• A partir daí, a equipe analisa se é possível
realizar o serviço dentro das condições
estabelecidas.
• É bom destacar que, nessa etapa, estão
em avaliação apenas as condições
técnicas.

32
Software com excelência

• Então, para seguir adiante, é preciso que a


equipe seja capaz de desenvolver o software
com excelência, considerando todos os
requisitos levantados.
• Pode acontecer também de os requisitos
serem tais que tornam o trabalho inviável, por
ser tecnicamente irrealizável ou por não valer a
pena tamanho esforço.
• A partir dessa avaliação, conversa-se
novamente com o cliente para, se necessário,
fazer os ajustes necessários na lista de
requisitos.
33
Análise financeira

• Agora que já se sabe exatamente quais são


os requisitos para o projeto e sua
complexidade, chegou a hora de estimar os
custos que estarão envolvidos no serviço.
• Qual a quantidade de recursos financeiros
e humanos necessários para desenvolver o
software dentro das condições
requisitadas?

34
Valor

• Quanto maior a complexidade do projeto,


maior serão o custo para o fornecedor e o
preço cobrado ao contratante, é claro.
• Afinal, demandará mais tempo e mão de
obra mais qualificada.

35
Adequação

• Aqui, como na maioria das empresas, deve


haver margem para negociação – quem
sabe até a eliminação de determinados
requisitos para que o preço fique mais
baixo.
• Quaisquer que sejam as condições
negociadas, elas precisam ser
documentadas, registradas em um contrato
que será assinado pelas duas partes.

36
Produção

• A etapa de produção pode se dividir em


várias, de acordo com a complexidade do
projeto e metodologia escolhida para
conduzi-lo.
• O desenvolvimento de grandes sistemas e
softwares costuma prever entregas em
módulos.
• Em vez de concluir tudo de uma vez, são
liberadas, testadas e aprovadas diferentes
partes do projeto, aos poucos.
37
Codificação

• Depois de aprovada essa arquitetura, parte-


se para a codificação, fase na qual os
desenvolvedores trabalham para dar luz ao
programa.

38
Testes

• Um projeto jamais vai para o ar ou para o


mercado sem passar por um período de
testes.
• É preciso submeter os códigos à utilização
de usuários que vão testar todas suas
funções.
• Essa é a hora de encontrar erros.

39
Segredo do teste

• O segredo é testar bem todas as


possibilidades antes de lançar o produto,
para diminuir a probabilidade de encontrar
esses erros após a implementação.
• Por isso, os testes precisam emular o uso
real da aplicação, colocando-se no lugar da
pessoa para quem ela será destinada.

40
Importância do teste

• É importante testar também a usabilidade,


o que deve ser feito com testadores
especializados ou usuários reais, uma vez
que os desenvolvedores já estarão com o
“olhar viciado”.
• Recomenda-se, ainda, documentar os
testes.
• Assim, caso surja, posteriormente, algum
problema envolvendo uma funcionalidade já
testada, haverá pistas a mais para
encontrar a solução.
41
Implementação

• Ainda deve ocorrer mais uma etapa de


testes, para se certificar de que tudo está
funcionando da maneira correta.
• A implementação também pode ocorrer em
diferentes fases.
• Dependendo da necessidade, pode haver
sessões de treinamento para que o cliente
aprenda a utilizar a solução que foi criada.

42
Contratos

• O contrato pode prever, ainda, o trabalho


de manutenção futuro, caso sejam
descobertos novos problemas com o
passar do tempo.

43
Problemas de relacionamento entre a
gerência, cliente e desenvolvedor

• As pessoas são um dos pilares mais


importantes da gestão de relacionamento
com o cliente. Se não estiverem
comprometidas, entusiasmadas e
satisfeitas, torna-se impossível melhorar os
resultados do negócio. Afinal, elas
praticamente decidem o futuro da empresa.

44
Problemas no atendimento ao cliente

• Negligenciar a experiência do cliente. ...


• Ignorar a necessidade do cliente. ...
• Não realizar um atendimento
personalizado. ...
• Não entender o tempo do cliente. ...
• Falta de preparo da equipe. ...
• Ignorar o cliente após a implantação. ...
• Falta de organização e controle.

45
Como superar desafios na gestão de
conflitos em equipes de TI

• Acredite: o principal problema de uma área


de TI pode ser a “desconexão”.
• Conflitos entre duas ou mais pessoas.
• Mitigando os ruídos de comunicação.

46
Desenvolvimento versus suporte

• O primeiro deles é definir bem os processos


e problemas.
• O segundo ponto tem a ver com empatia.
• O ultimo e talvez o mais importante é com
relação a comunicação.

47
Dúvidas

Você também pode gostar