AULA - Princípios Do Desenvolvimento de Sistemas

Fazer download em pdf ou txt
Fazer download em pdf ou txt
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


[email protected]

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