Engenharia de Software Aula 1 - Intro

Post on 21-Jul-2015

101 views 0 download

Transcript of Engenharia de Software Aula 1 - Intro

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.