Engenharia de Softwares e Gerência de
Projetos
Prof. Rudson Kiyoshi Souza Carvalho
Anhanguera - 2015
Engenharia de Software - Parte 1
Engenharia de Softwares e Gerência de
Projetos.
Panorama
• O que é software?
• Quem faz o software?
• Por que um software é importante?
• Quais são os passos para se fazer um software?
• Como tenho certeza que fiz um software
corretamente?
Desenvolvimento de
Programas de
Computador
Quem pode programar?
Desenvolvimento
Profissional de Software
Quem esta criando um software de maneira
profissional e quem esta criando um software de
maneira amadora?
Desenvolvimento
Profissional de Software
Quando preciso de um software construído de
maneira profissional e quando preciso de um software
construído de maneira amadora?
Caso Ariane 5 - 1996
• Projeto da Agência Espacial Européia
• 10 anos de desenvolvimento
• U$ 8 Bilhões
• Carga avaliada em U$ 500 Milhões
Ariane 5 - 1996
• Trecho da "conclusão inicial":
A anomalia interna de software do SRI ocorreu durante a
execução de uma conversão de dados de um número de
64 bits em ponto flutuante para um inteiro de16 bits com
sinal. O valor do número em ponto flutuante era maior do
que poderia ser representado pelo inteiro de 16 bits com
sinal. O resultado foi um operando inválido. A instrução
de conversão de dados (em código ADA) não estava
protegida contra erros de operando, embora outras
conversões de variáveis equivalentes no mesmo
segmento de código estivessem protegidas.
Um software se desgasta?
Software
Hardware
Adaptado de Roger S. Pressman (Eng. de Software)
O que é um bom software?
• Um bom software deve prover as funcionalidades e o desempenho requeridos
pelo usuário, além disso deve ser confiável e fácil de manter e usar.
• O Software sempre faz o que o cliente deseja. Portanto, mesmo que os
clientes pensem em novas formas de usa-lo, ele não dará problemas ou
apresentará resultados inesperados.
• Um bom software é criado quando você utiliza padrões de projetos e
princípios comprovados e verdadeiros. Você manteve seus objetos livremente
unidos e o seu código é aberto para extensão mas fechado para modificação.
Isso também ajuda a tornar o código mais reutilizável, por isso você não
precisa trabalhar em tudo novamente para usar partes de sua aplicação em
outras ocasiões.
• Organização modular, Abstração de procedimentos e dados, Ocultamento da
informação, Alta coesão, Baixo acoplamento
Conceitos da Engenharia de
Software
Adaptado de Roger S. Pressman (Eng. de Software)
Conceitos da Engenharia de
Software
• QUALIDADE: Toda Engenharia deve se fundamentar no
comprometimento com a qualidade.
• PROCESSO: É a base da engenharia de software,
organizando de maneira sequencial e lógica, todas as
etapas de concepção e desenvolvimento do software.
• MÉTODOS: Fornecem a definição de “como fazer” o
desenvolvimento de software.
• FERRAMENTAS: Realizam o suporte automatizado ou
semi-automatizado para os processos e métodos.
(exemplo: ferramentas case)
Engenharia de Software
• Engenharia de Software é uma área da computação
voltada à especificação, desenvolvimento e manutenção
de sistemas de software, com aplicação de tecnologias
e práticas de gerência de projetos e outras disciplinas,
visando organização, produtividade e qualidade.
(Wikipédia)
• Engenharia de Software é a criação e a utilização de
sólidos princípios de engenharia a fim de obter software
de maneira econômica, que seja confiável e que
trabalhe em máquinas reais. (Friedrich Ludwig Bauer -
1960)
Diversidade na Engenharia de
Software - Tipos de aplicações
• Aplicações Stand-alone
• Aplicações transacionais
• Sistemas de controle embutidos
• Sistemas de processamento em lotes
• Sistemas de entretenimento
• Sistemas de modelagem e simulação
• Sistemas de coletas de dados
• Sistemas de sistemas
• Reuso de Software - como podemos montar um
sistema a partir de componentes e sistemas de
software preexistentes.
• Desenvolvimento entregue de maneira incremental,
principalmente sistemas do tipo Web.
• Interface de usuários são restringidas pela
capacidade de navegadores.
• Mudança na organização dos softwares corporativos
Engenharia de Software e a
Internet
Ética na Engenharia de
Software
Ética na Engenharia de
Software
• PÚBLICO: Engenheiros de software devem agir de acordo com o interesse público.
• CLIENTE E EMPREGADOR: Engenheiros de software devem agir de maneira que
seja do melhor interesse de seu cliente e empregador e de acordo com o interesse
público.
• PRODUTO: Engenheiros de software devem garantir que seus produtos e
modificações relacionadas atendam aos mais altos padrões profissionais possível.
• JULGAMENTO: Engenheiros de software devem manter a integridade e a
independência em seu julgamento profissional.
• COLEGAS: Engenheiros de software devem auxiliar e ser justos com seus colegas.
• SI PRÓPRIO: Engenheiros de software devem participar da aprendizagem contínua
durante toda a vida, e devem promover uma abordagem ética para a prática da
profissão.
SWEBOK
• Guide to the Software Engineering Body of
Knowledge, é um documento criado sob o
patrocínio da IEEE com a finalidade de servir de
referência em assuntos considerados, de forma
generalizada pela comunidade, como pertinentes
a área de Engenharia de Software.
• O SWEBOK apresenta uma classificação
hierárquica dos tópicos tratados pela Engenharia
de Software, onde o nível mais alto são as Áreas
do Conhecimento.
Engenharia de Software Áreas
de Conhecimento - SWEBOK
1. Requisitos de Software
2. Projeto de Software (Design)
3. Construção de Software
4. Teste de Software
5. Manutenção de software
6. Gerência de Configuração de Software
7. Gerência da Engenharia de Software
8. Processos de Engenharia de Software
9. Ferramentas e Métodos da Engenharia de Software
10.Qualidade de Software
Estudo de Caso
Faz Site
Estudo de Caso Faz Site
• Atividade individual.
• O video será exibido 2x.
• Crie uma lista com todos os pontos que vocês
identificarem como problemas na forma como a
empresa Faz Site atuou na concepção,
desenvolvimento e entrega do projeto em questão.
Processos de
Software
O que é um processo de
Software?
• Um processo de software é um conjunto de
atividades relacionadas que levam à produção de
um produto de software. Essas atividades podem
envolver o desenvolvimento de software a partir do
zero em uma linguagem padrão de programação
como C# ou Java.
Processo de Software
Estudo de Caso Faz Site
• Atividade individual.
• Para o estudo de caso Faz Site, crie um processo
de software que na concepção de vocês
garantiriam a entrega do projeto em questão com
sucesso.
Engenharia de Software Aula 1 - Intro

Engenharia de Software Aula 1 - Intro

  • 1.
    Engenharia de Softwarese Gerência de Projetos Prof. Rudson Kiyoshi Souza Carvalho Anhanguera - 2015 Engenharia de Software - Parte 1
  • 2.
    Engenharia de Softwarese Gerência de Projetos.
  • 3.
    Panorama • O queé software? • Quem faz o software? • Por que um software é importante? • Quais são os passos para se fazer um software? • Como tenho certeza que fiz um software corretamente?
  • 4.
  • 5.
  • 6.
    Desenvolvimento Profissional de Software Quemesta criando um software de maneira profissional e quem esta criando um software de maneira amadora?
  • 7.
    Desenvolvimento Profissional de Software Quandopreciso de um software construído de maneira profissional e quando preciso de um software construído de maneira amadora?
  • 8.
    Caso Ariane 5- 1996 • Projeto da Agência Espacial Européia • 10 anos de desenvolvimento • U$ 8 Bilhões • Carga avaliada em U$ 500 Milhões
  • 10.
    Ariane 5 -1996 • Trecho da "conclusão inicial": A anomalia interna de software do SRI ocorreu durante a execução de uma conversão de dados de um número de 64 bits em ponto flutuante para um inteiro de16 bits com sinal. O valor do número em ponto flutuante era maior do que poderia ser representado pelo inteiro de 16 bits com sinal. O resultado foi um operando inválido. A instrução de conversão de dados (em código ADA) não estava protegida contra erros de operando, embora outras conversões de variáveis equivalentes no mesmo segmento de código estivessem protegidas.
  • 12.
    Um software sedesgasta? Software Hardware Adaptado de Roger S. Pressman (Eng. de Software)
  • 13.
    O que éum bom software? • Um bom software deve prover as funcionalidades e o desempenho requeridos pelo usuário, além disso deve ser confiável e fácil de manter e usar. • O Software sempre faz o que o cliente deseja. Portanto, mesmo que os clientes pensem em novas formas de usa-lo, ele não dará problemas ou apresentará resultados inesperados. • Um bom software é criado quando você utiliza padrões de projetos e princípios comprovados e verdadeiros. Você manteve seus objetos livremente unidos e o seu código é aberto para extensão mas fechado para modificação. Isso também ajuda a tornar o código mais reutilizável, por isso você não precisa trabalhar em tudo novamente para usar partes de sua aplicação em outras ocasiões. • Organização modular, Abstração de procedimentos e dados, Ocultamento da informação, Alta coesão, Baixo acoplamento
  • 14.
    Conceitos da Engenhariade Software Adaptado de Roger S. Pressman (Eng. de Software)
  • 15.
    Conceitos da Engenhariade Software • QUALIDADE: Toda Engenharia deve se fundamentar no comprometimento com a qualidade. • PROCESSO: É a base da engenharia de software, organizando de maneira sequencial e lógica, todas as etapas de concepção e desenvolvimento do software. • MÉTODOS: Fornecem a definição de “como fazer” o desenvolvimento de software. • FERRAMENTAS: Realizam o suporte automatizado ou semi-automatizado para os processos e métodos. (exemplo: ferramentas case)
  • 16.
    Engenharia de Software •Engenharia de Software é uma área da computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade. (Wikipédia) • Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe em máquinas reais. (Friedrich Ludwig Bauer - 1960)
  • 17.
    Diversidade na Engenhariade Software - Tipos de aplicações • Aplicações Stand-alone • Aplicações transacionais • Sistemas de controle embutidos • Sistemas de processamento em lotes • Sistemas de entretenimento • Sistemas de modelagem e simulação • Sistemas de coletas de dados • Sistemas de sistemas
  • 18.
    • Reuso deSoftware - como podemos montar um sistema a partir de componentes e sistemas de software preexistentes. • Desenvolvimento entregue de maneira incremental, principalmente sistemas do tipo Web. • Interface de usuários são restringidas pela capacidade de navegadores. • Mudança na organização dos softwares corporativos Engenharia de Software e a Internet
  • 19.
  • 20.
    Ética na Engenhariade Software • PÚBLICO: Engenheiros de software devem agir de acordo com o interesse público. • CLIENTE E EMPREGADOR: Engenheiros de software devem agir de maneira que seja do melhor interesse de seu cliente e empregador e de acordo com o interesse público. • PRODUTO: Engenheiros de software devem garantir que seus produtos e modificações relacionadas atendam aos mais altos padrões profissionais possível. • JULGAMENTO: Engenheiros de software devem manter a integridade e a independência em seu julgamento profissional. • COLEGAS: Engenheiros de software devem auxiliar e ser justos com seus colegas. • SI PRÓPRIO: Engenheiros de software devem participar da aprendizagem contínua durante toda a vida, e devem promover uma abordagem ética para a prática da profissão.
  • 21.
    SWEBOK • Guide tothe Software Engineering Body of Knowledge, é um documento criado sob o patrocínio da IEEE com a finalidade de servir de referência em assuntos considerados, de forma generalizada pela comunidade, como pertinentes a área de Engenharia de Software. • O SWEBOK apresenta uma classificação hierárquica dos tópicos tratados pela Engenharia de Software, onde o nível mais alto são as Áreas do Conhecimento.
  • 22.
    Engenharia de SoftwareÁreas de Conhecimento - SWEBOK 1. Requisitos de Software 2. Projeto de Software (Design) 3. Construção de Software 4. Teste de Software 5. Manutenção de software 6. Gerência de Configuração de Software 7. Gerência da Engenharia de Software 8. Processos de Engenharia de Software 9. Ferramentas e Métodos da Engenharia de Software 10.Qualidade de Software
  • 23.
  • 24.
    Estudo de CasoFaz Site • Atividade individual. • O video será exibido 2x. • Crie uma lista com todos os pontos que vocês identificarem como problemas na forma como a empresa Faz Site atuou na concepção, desenvolvimento e entrega do projeto em questão.
  • 26.
  • 27.
    O que éum processo de Software?
  • 28.
    • Um processode software é um conjunto de atividades relacionadas que levam à produção de um produto de software. Essas atividades podem envolver o desenvolvimento de software a partir do zero em uma linguagem padrão de programação como C# ou Java. Processo de Software
  • 29.
    Estudo de CasoFaz Site • Atividade individual. • Para o estudo de caso Faz Site, crie um processo de software que na concepção de vocês garantiriam a entrega do projeto em questão com sucesso.