Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 3
Visão Geral da Engenharia de Software
l.bertholdo@ifsp.edu.br
Conteúdo
• Definição de Engenharia de Software
• Processo de Software
• Prática e Princípios da Engenharia de Software
• Mitos do Desenvolvimento de Software
• Aspectos Humanos
• Ética na Engenharia de Software
l.bertholdo@ifsp.edu.br
Definição de Engenharia de Software
• Segundo o IEEE – Institute of Electrical and Electronics Engineers*,
(pronuncia-se “i3e”):
* O IEEE é a maior sociedade profissional técnica do mundo. Seus membros são compostos por
engenheiros, cientistas e profissionais afins, que incluem cientistas da computação, desenvolvedores
de software, profissionais de tecnologia da informação, físicos, médicos e outros, além do núcleo de
engenharia elétrica e eletrônica do IEEE. (https://www.ieee.org/about/ieee-history.html)
l.bertholdo@ifsp.edu.br
Definição de Engenharia de Software
• Mas por que a engenharia de software é necessária?
l.bertholdo@ifsp.edu.br
Definição de Engenharia de Software
• Camadas da Engenharia de Software
As ferramentas fornecem suporte para o
processo e os métodos. Quando integradas, de
modo que as informações criadas por uma
ferramenta possam ser utilizadas por outra, é
Os métodos da O processo de engenharia
estabelecido um sistema chamado engenharia
engenharia de software software constitui a base
de software com o auxílio do computador.
fornecem as informações para o gerenciamento de
técnicas para desenvolver projetos e estabelece o
o software. Eles envolvem contexto no qual são
uma ampla variedade de aplicados métodos, são
tarefas: comunicação, produzidos artefatos, são
análise de requisitos, estabelecidos marcos, a
modelagem de projeto, qualidade é garantida e
construção do programa, mudanças são geridas de
testes e suporte. forma apropriada.
A gestão da qualidade é a pedra fundamental
que sustenta a engenharia de software. Ela
promove uma cultura de melhoria contínua
de processos, que leva ao desenvolvimento de
abordagens cada vez mais eficazes.
l.bertholdo@ifsp.edu.br
Processo de Software Artefato é um produto, objeto ou dispositivo
resultante de algum trabalho ou ação.
l.bertholdo@ifsp.edu.br
Prática e Princípios da Engenharia de Software
Compreenda o problema: O elemento mais
importante para se entender um problema é escutar.
Quem são os envolvidos (interessados na solução do
problema)?
Que dados, funções e recursos são necessários para
resolver apropriadamente o problema?
Examine o resultado: É preciso garantir que um Planeje a solução: Antes de começar a codificar,
número de testes suficiente foi realizado para revelar faça alguma perguntas.
o maior número de erros possível. Algum problema semelhante já foi resolvido? Se sim,
É possível testar cada parte componente da solução? há elementos da solução que podem ser reutilizados?
A solução produz resultados adequados aos dados, É possível definir subproblemas? Em caso positivo,
às funções e às características necessários? existem soluções aparentes e imediatas para eles?
l.bertholdo@ifsp.edu.br
Prática e Princípios da Engenharia de Software
• O que é “princípio”?
l.bertholdo@ifsp.edu.br
Prática e Princípios da Engenharia de Software
2. KISS (Keep It Simple, Stupid!, ou seja: não complique!): Todo projeto deve ser o
mais simples possível, mas não simplista (superficial). Esse princípio contribui para
um sistema mais fácil de compreender e manter. Porém, simples não significa
“gambiarra”. Na verdade, é necessário muita reflexão e trabalho para simplificar.
3. Mantenha a visão global: A falta de uma visão geral clara, pode transformar o
projeto em uma colcha de retalhos, com módulos incompatíveis unidos por
parafusos que não se encaixam. Ter um arquiteto responsável e capaz de manter a
visão clara e de reforçar a adequação ajuda a assegurar o êxito de um projeto.
l.bertholdo@ifsp.edu.br
Prática e Princípios da Engenharia de Software
5. Esteja aberto para o futuro: Hoje, as especificações mudam a todo instante e as
tecnologias se tornam obsoletas rapidamente. Sistemas mais duráveis e de
sucesso são aqueles que foram projetados para se adaptar sem muitas
dificuldades às mudanças. Jamais faça projetos pensando apenas no presente.
l.bertholdo@ifsp.edu.br
Mitos do Desenvolvimento de Software
• Tratam-se de crenças infundadas sobre o software e o processo
utilizado para criá-lo e remontam aos primórdios da computação.
l.bertholdo@ifsp.edu.br
Mitos do Desenvolvimento de Software
• Mitos de Gerenciamento de Projetos de Software
Mito: Já temos um documento cheio de padrões e procedimentos para desenvolver software. Ele não
supriria meu pessoal com tudo que precisam saber?
Realidade: Esse documento é realmente utilizado? Os profissionais sabem que ele existe? Ele reflete a
prática moderna da engenharia de software? É completo? É adaptável? Está otimizado para melhorar
o tempo de entrega, mantendo a qualidade? Normalmente, a resposta para essas perguntas é “não”.
Mito: Se eu terceirizar parte do projeto, posso me despreocupar, pois a outra empresa irá realizá-la.
Realidade: Uma organização deve saber gerenciar e controlar seus projetos de software, mas quando
partes do projeto são terceirizadas, o acompanhamento das atividades deve ser ainda mais próximo.
l.bertholdo@ifsp.edu.br
Mitos do Desenvolvimento de Software
• Mitos dos Clientes
Mito: Uma definição geral dos objetivos é suficiente para começar a escrever os programas, podemos
preencher os detalhes posteriormente.
Realidade: Embora nem sempre seja possível uma definição ampla e estável dos requisitos, uma
definição de objetivos muito superficial é a receita para um desastre. Além disso, requisitos consistentes
e efetivos são obtidos somente pela comunicação contínua e eficaz entre cliente e desenvolvedor.
Mito: As mudanças nos requisitos de software, que ocorrem durante o projeto, podem ser facilmente
assimiladas, pois um software em construção é altamente flexível.
Realidade: O impacto de uma mudança de requisitos varia dependendo do momento em que foi
introduzida. Quando a mudança é solicitada cedo (antes de o projeto ou de a codificação terem
começado), o impacto sobre o custo é relativamente pequeno. Entretanto, conforme o tempo passa,
este custo começa a aumentar rapidamente.
l.bertholdo@ifsp.edu.br
Mitos do Desenvolvimento de Software
• Mitos dos Profissionais da Área
Mito: Uma vez que o programa foi feito e colocado em uso, nosso trabalho está terminado.
Realidade: Levantamentos indicam que entre 60 e 80% de todo o esforço de um projeto será despendido
após a entrega do software ao cliente pela primeira vez.
Mito: Até que o programa esteja “em execução”, não há como avaliar sua qualidade.
Realidade: Mecanismos de garantia da qualidade, como a revisão técnica, podem ser aplicados desde a
concepção do projeto de software. Os revisores técnicos são “filtros de qualidade”, considerados mais
eficientes do que os testes feitos para encontrar certos tipos de defeitos de software.
l.bertholdo@ifsp.edu.br
Aspectos Humanos
• Erdogmus (2009) identifica sete características pessoais de um
engenheiro de software com comportamento “superprofissional”.
Senso de responsabilidade individual: Tem
determinação para cumprir suas promessas para
colegas, para os envolvidos e para a gerência.
Lealdade: Compartilha os créditos com seus Resiliência sob pressão: É capaz de suportar a
colegas. Tenta evitar conflitos de interesse e nunca pressão de modo que seu desempenho não seja
age no sentido de sabotar o trabalho dos outros. prejudicado.
l.bertholdo@ifsp.edu.br
Ética na Engenharia de Software
• O trabalho de um engenheiro de software envolve responsabilidades
maiores do que simplesmente aplicar habilidades técnicas.
• Ele também deve se comportar de forma ética e moralmente
responsável se deseja ser respeitado como profissional.
Uma empresa é responsável por desenvolver um sistema bancário e, por causa da pressão pelos prazos,
ignora um erro muito específico encontrado em um teste de validação de segurança do sistema. O
engenheiro de software responsável deve manter a confidencialidade exigida pelo seu gestor, ou deve
alertar o cliente, de alguma forma, que o sistema pode não ser 100% seguro?
• Embora o sistema tenha apresentado o erro com base em critérios predefinidos, esses critérios podem
ser rígidos demais, e o sistema pode, de fato, operar com segurança durante todo seu ciclo de vida.
• Mesmo que o sistema não apresentasse o erro, não há como garantir totalmente que todos os testes
de validação de segurança foram previstos.
• A divulgação antecipada do erro pode causar prejuízo para a empresa de desenvolvimento, incluindo
seus funcionários.
• Por outro lado, não divulgar o erro pode resultar em prejuízo para o cliente.
Não existem manuais para situações assim, e é preciso refletir para tomar suas próprias decisões.
l.bertholdo@ifsp.edu.br
Ética na Engenharia de Software
• Segundo Pressman (2016), em nível pessoal, um engenheiro de
software também deve se guiar pelas seguintes regras:
• Nunca roubar dados para obter vantagens pessoais.
• Nunca distribuir ou vender informações proprietárias obtidas como parte
de seu trabalho em um projeto de software.
• Nunca destruir ou modificar programas, arquivos ou dados de outra
pessoa para prejudicá-la.
• Nunca violar a privacidade de um indivíduo, grupo ou organização.
• Nunca invadir um sistema, seja qual for a motivação.
• Nunca criar ou promover um vírus ou verme (worm) de computador.
• Nunca usar a tecnologia de informação para facilitar qualquer tipo de
discriminação ou assédio.
l.bertholdo@ifsp.edu.br
Referências
• PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software: uma
abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016.
l.bertholdo@ifsp.edu.br