fsi_modulo i - conceitos básicos de engenharia de software
TRANSCRIPT
1
Conceitos Básicos de Engenharia de Software
Objetivo .........
• compreender o que é Engenharia de Software e por que ela é importante
• saber as respostas de perguntas importantes que proporcionam uma introdução à Engenharia de Software
• compreender questões profissionais e éticas relevantes para os engenheiros de software
2
Roteiro.........
• O que é um Software ?• Engenharia de Software• Engenharia de Sistemas• Processos de Desenvolvimento• Métodos x Técnicas X Ferramentas• Mitos da Engenharia de Software• Princípios Éticos
O que é um Software ?Definições Preliminares
• Definição
• Impacto Econômico
• Características do Software
• Tipos de Software
3
• Software é o conjunto de programas, procedimentos e documentação associados a um sistema; especialmente a sistemas computadorizados (Boehm 1991).
• Software é o conjunto de programas de computador, juntamente com a documentação e os dados de configuração necessários à sua operação (Sommerville 2000).
O que é um Software ? Definição
• Software é o conjunto de programas de computador, juntamente com a documentação e os dados de configuração necessários à sua operação (Sommerville 2000). – Documentação do Sistema– Documentação do Usuário– Sites Web para download de informações
– ENGENHEIROS DE SOFTWARE se ocupam de desenvolver produtos de software
O que é um Software ? Definição
4
• O Software é um transformador de informação –produzindo, gerando, adquirindo, modificando, exibindo ou transmitindo – que pode ser tão simples quanto um único BIT ou tão complexa quanto uma apresentação em multimídia. ..... O software entrega o mais importante produto de nossa época – a informação. (Pressman).
O que é um Software ? Definição
O que é um Software ? Impacto Econômico
um pouco de História....
Comentários sobre o BUG DO MILÊNIO
5
“O software de computadores tornou-se uma força motora. É o motor que dirige a tomada de decisão nos negócios. Serve de base à moderna investigação científicas e às soluções de problemas de engenharia. É um fator chave que diferencia produtos e serviços modernos. Está embutido em sistemas de todas as naturezas: de transportes, médicos, de telecomunicações, militares, de processos industriais, de produtos de escritório,.... A lista é quase sem fim. O software é virtualmente inevitável no mundo moderno. E, á medida que entramos no século XXI, irá se tornar um motor para novos avanços em tudo, da educação elementar à engenharia genética.” (Pressman)
O que é um Software ? Impacto Econômico
• Companhias ligadas à Internet compõem um mercado de 500 bilhões de dólares (Pressman 2001).
• No começo dos anos 90 pequenas empresas [.com] foram avaliadas em 1 milhão de dólares antes mesmo de produzirem um único centavo em vendas (Pressman 2001).
O que é um Software ? Impacto Econômico
6
• Entre 1996 e 2002 o setor de tecnologia da informação (TI) cresceu 26% criando 2,6 milhões de empregos e contribuindo com 6 trilhões de dólares (acumulados) para as economias ao redor do mundo.
• O setor de TI já emprega mais de 9 milhões de pessoas, contribui com mais de US$ 700 bilhões em taxas e cerca de US$ 1 trilhão anuais para a economia mundial.
O que é um Software ? Impacto Econômico
• O setor de TI contribui com cerca de US$1 trilhão anuais para a economia mundial.
O que é um Software ? Impacto Econômico
US$ 930 bilhõesTotal
US$ 420 bilhõesServiços de TI
US$ 180 bilhõesSoftware (pacotes)
US$ 330 bilhõesHardware
7
• Gastos com TI totalizaram cerca de US$ 2,3 trilhões ao redor do mundo.
Valores em bilhões de dólares
O que é um Software ? Impacto Econômico
4.463,12.302,12.226,7Total
1445,41344,61.282,9Telecomunicações
597,1557,5542,3Serviços de TI
81,876,974,2Software (pacotes)
338,8323,3327,4Hardware
200320022001
• O Software é desenvolvido e não manufaturado no sentido clássico. O software não é afetado por problemas de manufatura.
• A abordagem para a gerência deve ser diferente da adotada para gerenciar projetos de manufatura.
• Em ambos os caso o projeto é essencial para um produto de qualidade.
O que é um Software ? Características
8
• O Software não desgasta (entretanto, deteriora).
O que é um Software ? Características
DESGASTE
MORTALIDADE INFANTIL
DESGASTE
• O Software não desgasta (entretanto, deteriora).
O que é um Software ? Características
CURVA IDEALIZADA
CURVA REAL
MODIFICAÇÃO
9
• Apesar da indústria estar se movendo em direção à montagem baseada em componentes, a maior parte do software continua a ser construída sob encomenda.– Componentização – Alguns conceitos ......
• Padronização• Reutilização• Encapsulamento• Exemplo – Padrões de Interface
O que é um Software ? Características
• Todo software possui atributos não funcionais relacionados ao comportamento e às propriedades que ele deve exibir.
Atributos essenciais:
• Manutenível: adequação a mudanças. • Confiável: confiabilidade, segurança, proteção. • Eficiente: economia de recursos. • Usável: facilidade de uso / tempo de resposta.
A relevância de cada atributo depende da aplicação.
Sistemas Bancários -- Segurança. Internet --- Velocidade.
Telefonia -- Confiabilidade.
O que é um Software ? Características
10
• Problemas no processo produtivo de Softwares complexos:– Atender às expectativas dos Clientes / Usuários– Entregue dentro do prazo estabelecido– Entregue dentro do orçamento estabelecido
O que é um Software ? Características
Engenharia de Software está em um estado de aflição crônica
(Pressman, 1977)
• Genéricos: desenvolvidos para o mercado
• Particulares: desenvolvidos para clientes determinados, internos ou externos à organização que produz o software.
– Sommerville aponta o controle da especificação como um diferenciador determinante.
– A definição do usuário também é um fator importante.
O que é um Software ? Tipos de Software
11
• Genéricos: desenvolvidos para o mercado (sistemas do tipo stand-alone, produzidos por uma organização de desenvolvimento e vendidos no mercado a qualquer cliente capaz de adquiri-los)– Também chamados de “ pacotes de Sotware”– Exemplo: Gerenciadores de Banco de Dados,
processadores de texto, pacotes de desenho, ferramentas de gerenciamento de projetos etc.
• Particulares: desenvolvidos para clientes determinados, internos ou externos à organização que produz o software.
O que é um Software ? Tipos de Software
Software Básico – Software de SistemasProvêem serviços a outros programas (compiladores, gerenciadores de arquivos, componentes de sistemas operacionais, drivers, etc.). Processam estruturas de informação complexas, interagem com hardware, múltiplos usuários.
Tempo RealSão monitores, analisadores ou controladores de eventos do ambiente que devem ter um baixo tempo de resposta ou reação.
Negócios – Software ComercialEvoluíram para sistemas de informação, consistindo de aplicações integradas atendendo a várias áreas da organização.
O que é um Software ? Tipos de Software
12
Aplicações científicas e de engenhariaPossuem o foco em algoritmos e estruturas de dados ("trituradores de números")
Software embutidoControla ou é usado por outros produtos.
Computadores pessoaisAgendas, controles de orçamento e finanças, editores de texto, etc.
Aplicações para WebAplicações baseadas na Internet com uso de navegadores.
Inteligência artificialAlgoritmos não numéricos, com uso de lógica, reconhecimento de padrões, etc.
O que é um Software ? Tipos de Software
O que é um Software ?
São programas de computador e a documentação associada.
Produtos de Software podem serdesenvolvidos para um cliente específico
ou para o mercado. (Sommerville)
13
Engenharia de Software
• Definição
• Engenharia de Software x Ciência da Computação
• Histórico
• Situação Atual
Engenharia de SoftwareDefinição
• Engenharia:– Aplicação da ciência e matemática para tornar as
propriedades da matéria e as fontes de energia na natureza úteis ao homem, na forma de estruturas, máquinas, produtos, sistemas e processos (Boehm).
14
Engenharia de SoftwareDefinição
• Engenharia de Software:– Aplicação da ciência e matemática para tornar as
capacidades de um equipamento computadorizado úteis ao homem via programas de computador, procedimentos e documentação associada (Boehm).
– É a aplicação de princípios científicos para (1) a transformação ordenada de um problema em uma solução de software e (2) a manutenção subseqüente deste software até o fim de sua vida útil (Davis).
– É uma disciplina da engenharia voltada para todos os aspectos da produção de software desde os estágios iniciais até sua manutenção após ele ter sido colocado em uso (Somerville).
Engenharia de SoftwareDefinição
• Engenharia de Software:– O estabelecimento e uso de sólidos princípios de
engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais (Fritz Bauer (1969)).
– É a área interdisciplinar que engloba vertentes tecnológica e gerencial visando a abordar, de modo sistemático, os processos de construção, implantaçãoe manutenção de produtos de software com qualidade assegurada por construção, seguindo cronogramas e custos previamente definidos(Bruno Maffeo (1992)).
15
Engenharia de SoftwareDefinição
• Engenharia de Software:– Coleção de técnicas que aplicam uma abordagem de
engenharia à construção e ao suporte de produtos software.
– Atividades da Engenharia de Software = Administração, Orçamento, Planejamento, Modelagem, Análise, Especificação, Projeto, Implementação, Testes, Manutenção.(Fenton &Pfleeger (1997) )
Engenharia de SoftwareDefinição
• Engenharia de Software:– É uma disciplina da engenharia (1) voltada para
todos os aspectos da produção (2) de software desde os estágios iniciais até sua manutenção após ele ter sido colocado em uso (Sommerville).
• (1) Engenheiros sempre procuram descobrir soluções para os problemas, mesmo quando não existem teorias aplicáveis e métodos de apoio. Engenheiros precisam trabalhar com restrições organizacionais e financeiras (soluções dentro de restrições)
• (2) Não se dedica somente aos aspectos técnicos, mas também com o gerenciamento do projeto, desenvolvimento de ferramentas e de métodos que dêem apoio à produção do software.
16
Engenharia de SoftwareDefinição
OBJETIVO DA ENGENHARIA DE SOFTWARE
Auxiliar no processo de produção de software, de forma que o processo dê origem a produtos de alta qualidade, produzidos mais rapidamente e a um
custo cada vez menor.
Engenharia de SoftwareDefinição
Engenharia de Software é uma disciplinada engenharia que se ocupa detodos os aspectos da produção
de software
17
Engenharia de Softwareou Ciência da Computação
• Ciência da Computação:– Disciplina científica voltada para as teorias e métodos
capazes de explicar e solucionar os problemas subjacentes aos computadores e sistemas de software.
• Engenharia de Software se dedica aos problemas práticos da produção de software.– Engenheiros de Software devem ter algum
conhecimento em Ciência da Computação da mesma maneira que Física é pré-requisito para Engenheiros Elétricos
• Engenharia sem ciência é arte.
Engenharia de Softwareou Ciência da Computação ?
A Ciência da Computação se ocupa dateoria e dos fundamentos;
a Engenharia de Software trata da praticidade de desenvolver e
fornecer software útil.
18
Engenharia de SoftwareHistórico
Os primeiros anos (50 - meados anos 60) ...Hardware tinha maior importânciaUso do software pelo próprio Programador ou pela OrganizaçãoProjeto existia apenas no cérebro de alguémDocumentação não existia(maioria das vezes)
Segunda era (meados anos 60 - fim década 70)Software como produto Surgia as “softwarehouses”Softwares distribuídos para centenas/milhares de usuários
Engenharia de SoftwareHistórico
surge o conceito da Manutenção de Software ... para
correção de falhasalterações das especificações do usuárioadaptações a novos hardwares
... e com a Manutenção ...os grandes gastos com manutenção as dificuldades em fazer manutenção nos softwares de natureza “personalizada”
19
Engenharia de SoftwareHistórico
Terceira era (meados da década de 70 - hoje)Redes locais e globais Crescente demanda de acesso “instantâneo”Microprocessadores, computadores pessoais e poderosasworkstations.Microprocessador amplo conjunto de produtos inteligentes(microondas, automóveis, aparelhos médicos ...)Vendas de dezenas/centenas de milhares de cópiasSoftware passa a ser a diferença
Engenharia de SoftwareHistórico
Quarta era (meados de 85 - hoje)Tecnologias orientadas a objetosSistemas especialistas e Softwares de inteligência artificial saíram do papel
Intensificação dos problemas associadosao software de computador.
20
Engenharia de SoftwareHistórico
• Os problemas e dificuldades para a construção de software adequado existem desde que se começou a construir software.
O termo foi cunhado por ocasião de duas importantes conferências para discutir a “Crise do Software":
• 1969 Conferência da NATO • 1970 Conferência da NATO
Engenharia de SoftwareHistórico
• 1969 Conferência da NATO • 1970 Conferência da NATO
– Encontros para discutir a chamada “ Crise do Software”
– Introdução de novo hardware– Os custos de hardware caiam enquanto os de
software subiam rapidamente– Software passava a apresentar um crescente custo
em relação ao sistema– Software passava a ser bem maior e mais complexo– A abordagem informal de desenvolvimento de
software não estava atendendo
21
• A sofisticação do software ultrapassou nossa capacidade de construir um software que extraia o potencial do hardware.
• Nossa capacidade de construir programas não pode acompanhar o ritmo da demanda de novos programas.
• Nossa capacidade de manter os programas existentes é ameaçada por projetos ruins e recursos inadequados.
[PRESSMAN]
Como conseguir SOLUÇÕES para esses problemas ?
Engenharia de SoftwareSituação Atual
• Sistemas de software invadiram nossas vidas e o correto/incorreto funcionamento deles pode ser a diferença entre a vida e a morte.
• ( espaçonaves, aeronaves, trens, carros, reatores nucleares, equipamentos hospitalares ... )
Outros tipos de problemas:• Fábrica de software em fase de envelhecimento.
Sistemas de 20 anos, onde pequenas novas modificações fazem com que o mesmo falhe.Sistemas críticos, mas que ninguém conhece a estrutura interna.Sistemas de comportamento estranho - não há nada que os substitua.
Engenharia de SoftwareSituação Atual
22
• Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software. Sem histórico, as estimativas têm sido “a olho” resultados ruins.
• Comunicação entre o cliente e o desenvolvedor é fraca Insatisfação do cliente com o sistema “pronto” éfreqüente.
• Uso indevido ou insuficiente de testes máqualidade de software
Dificuldades atuais ...Para pensar ...
Engenharia de SoftwareSituação Atual
Engenharia de Sistemas
• Disciplina da engenharia voltada para o desenvolvimento e evolução de todos os aspectos de sistemas complexos (em que o software é parte importante).
• Aspectos– Hardware– Políticas e procedimentos– Processos e atividades– Instalação e infra-estrutura– Software
• Atividades– Especificação do sistema– Definição da arquitetura– Integração das partes (componentes)
• Existe uma preocupação menor com a engenharia das partes (i.e., como os componentes são desenvolvidos).
23
Engenharia de Sistemasx
Engenharia de Software
A ENGENHARIA DE SISTEMAS se ocupa todos os aspectos relacionados ao
desenvolvimento de sistemas com base em computadores, incluindo hardware, software,
e engenharia de processos.A ENGENHARIA DE SOFTWARE
é parte deste processo.
Processos de Desenvolvimento
• Fases
• Custo
• Modelos
24
Processos de DesenvolvimentoFases
• Conjunto de atividades (e regras de execução) voltadas
para a produção de software.
ATIVIDADESFASES
Evolução
PlanejamentoElaboraçãoExecução
Teste
ConcepçãoCodificaçãoTeste
Construção
ConcepçãoElaboraçãoDefinição
Projeto
ElicitaçãoAnáliseDefinição
Especificação
Veri
fica
ção
e Va
lidaç
ão
Ger
enci
amen
toProcessos de Desenvolvimento
Custo• Desenvolvimento tradicional (15-25-20-40)
• Desenvolvimento evolucionário (10-60-30)•
• Esforço (homens-mês) (40-20-40)
– Análise requisitos: de 10 a 25% do esforço total.– Projeto: de 20 a 25% do esforço total.– Codificação: de 15 a 20% do esforço total. – Teste: de 30 a 40% do esforço total
ESPECIFICACAO PROJETO DESENVOLVIMENTO TESTES
ESPECIFICACAO DESENVOLVIMENTO TESTES
ESPECIFICACAO & PROJETO CODIFICACAO TESTES
25
Processos de DesenvolvimentoCusto
• A exemplificação anterior é válida para softwares personalizados (especificado por um cliente e desenvolvimento por uma empresa de software contratada)
• Existem outros Custos que poderiam ser analisados como, por exemplo:– CUSTOS DE EVOLUÇÃO DE SOFTWARE– CUSTOS DE DESENVOLVIMENTO DE PRODUTOS
Processos de DesenvolvimentoModelos
• Descrição simplificada de um processo de desenvolvimento enfocando uma perspectiva particular.
• Perspectivas comuns:
mostra os papéis desempenhados pelas pessoas.
Papéis-ação
mostra a transformação dos dados (detalhamento das atividades).
Fluxo de dados(atividades)
mostra a seqüência de atividades, com suas entradas, saídas e dependências.
Workflow
26
Métodos x Técnicas x Ferramentas
• Conceitos
• Métodos, Técnicas e Ferramentas
• Ferramentas
Métodos x Técnicas x FerramentasConceitos
Processo de Software.
Princípios são importantes para o sucesso no desenvolvimento de softwares, mas não são suficientes
para obter produtos de qualidade. É preciso aliar MÉTODOS, TÉCNICAS e FERRAMENTAS apropriadas para se aplicar os princípios no processo de produção
de softwares
27
Métodos x Técnicas x FerramentasConceitos
• Princípios da Engenharia de Software.
Rigor e Formalidade - O processo de software éuma atividade criativa tendendo naturalmente àimprecisão. O rigor é a abordagem que produz produtos mais confiáveis pelo controle das variáveis envolvidas. Formalidade é o requisito de que o processo seja dirigido e avaliado por leis matemáticas
Métodos x Técnicas x FerramentasConceitos
• Princípios da Engenharia de Software.
Rigor e FormalidadeSeparação de Conceitos (Abstração) - Separar conceitos permite-nos trabalhar com aspectos individuais e diferentes de um mesmo problema. Esta separação facilita o entendimento, focando a atenção em certas características mais significativas
28
Métodos x Técnicas x FerramentasConceitos
• Princípios da Engenharia de Software.
Rigor e FormalidadeSeparação de Conceitos (Abstração)Modularidade - Consiste na divisão de sistemas complexos em partes menores e mais simples (módulos) com características desejáveis (coesão e acoplamento). Decomposição é o ato de dividir um problema original em subproblemas recursivamente. Composição é o ato de juntar os elementos componentes de um problema até chegar ao sistema completo. Ajuda na manutenção do sistema
Métodos x Técnicas x FerramentasConceitos
• Princípios da Engenharia de Software.
Rigor e FormalidadeSeparação de Conceitos (Abstração)ModularidadeGeneralidade/Especialidade - Soluções genéricas tendem a ser mais caras em termos de recursos e em tempo de desenvolvimento, ao contrário das soluções específicas. No processo de produção de software estas questões devem ser cuidadosamente analisadas
29
Métodos x Técnicas x FerramentasConceitos
• Princípios da Engenharia de Software.
Rigor e FormalidadeSeparação de Conceitos (Abstração)ModularidadeGeneralidade/EspecialidadeAntecipação de Mudanças - Sistemas de softwares são desenvolvidos enquanto seus requisitos ainda são estão totalmente claros. Quando o sistema éfinalmente liberado, novos requisitos podem ser descobertos e velhos requisitos atualizados através do “feedback” do usuário
Métodos x Técnicas x FerramentasConceitos
• Princípios da Engenharia de Software.
Rigor e FormalidadeSeparação de Conceitos (Abstração)ModularidadeGeneralidade/EspecialidadeAntecipação de MudançasIncrementabilidade - Caracteriza o processo em modo passo a passo, incrementalmente. O objetivo desejado é atingido por aproximações sucessivas. Útil quando os requisitos iniciais não foram todos obtidos antes do início do desenvolvimento da aplicação
30
Métodos x Técnicas x FerramentasConceitos
Processo de Software.
Os princípios de Engenharia de Software parecem abstratos, mas tornam-se
concretos quando aplicados no processo de produção do software.
Métodos x Técnicas x FerramentasConceitos
Processo de Software.
Na Análise de Sistemas é possível utilizar o rigorpelo uso de modelagem, a separação de
conceitos na construção de modelos que tratam de aspectos distintos como funções e fluxo de informações, a abstração na construção dos modelos. No projeto é interessante o uso de
princípios como rigor e formalidade na implementação e documentação dos modelos
criados na análise, modularidade na construção do sistema e incrementabilidade nos testes
31
Métodos x Técnicas x FerramentasConceitos
Conjunto de procedimentos bem definidos para a execução de uma tarefa.
Técnica
Conjunto sistematizado de procedimentos, juntamente com regras e orientações de uso, para a execução de certa atividade.
Método
Métodos x Técnicas x FerramentasConceitos
• Observe que a diferenciação entre método e técnica nem sempre é clara, podendo haver situações onde as palavras método e técnica são usadas indistintamente, dependendo do autor.
• Ambos são orientações de "como fazer".
• Em geral a descrição de uma técnica exige uma precisão maior, com o método podendo conter orientações mais vagas.
• Em geral, método se aplica a procedimentos mais amplos e abrangentes (atividades) e técnica a procedimentos mais restritos (tarefas).
32
Métodos x Técnicas x Ferramentas
• Métodos Funcionais:• Análise Estruturada – 1978• JSD - 1983
• Métodos Orientados a Objetos:• Rumbaugh – 1991• Booch – 1994• UML - 1995
Métodos x Técnicas x Ferramentas
• Componentes usuais dos métodos
organização das atividades.Orientações de uso
boas práticas de construção.Recomendações
para a construção dos modelos.
Regras
notação usada para descrever os modelos produzidos.
Modelos Descritivos
33
Métodos x Técnicas x FerramentasFerramentas
• São usadas para automatizar parte do processo de desenvolvimento.
• Primeiro deve-se pensar no método, e só após na ferramenta adequada para automatizá-lo.
voltada para aspectos posteriores do desenvolvimento (construção e testes)
lower Case
voltada para aspectos iniciais do desenvolvimento (especificação e projeto).
upper Case
voltada para a integração de diferentes modelos e notações.
i-Case
Métodos x Técnicas x FerramentasFerramentas CASE
CASE Computer-Aided Software Engineering(Engenharia de Software com auxílio
se computador)
34
Mitos da Engenharia de Software
• Gerência
• Cliente
• Programador
Mitos da Engenharia de SoftwareGerência
O documento pode não ser usado, não ser conhecido, não refletir boas práticas.
Realidade
Um documento de padrões e procedimentos é suficiente para manter o processo em ordem.
Mito
Equipamentos e ferramentas são apenas parte do processo de desenvolvimento. Os métodos são bem mais importantes.
Realidade
Uma boa infra-estrutura em termos de equipamento e ferramentas é suficiente para obter bons resultados.
Mito
35
Mitos da Engenharia de SoftwareGerência
A incorporação de pessoas a um projeto atrasado pode torna-lo mais atrasado ainda.
Realidade
Os atrasos podem ser combatidos com a adição de pessoas ao projeto.
Mito
Se a organização não sabe como construir e gerenciar software internamente, certamente terá problemas com o desenvolvimento terceirizado.
Realidade
A terceirização resolve os problemas da gerência do desenvolvimento de software.
Mito
Mitos da Engenharia de SoftwareCliente
O impacto das mudanças varia segundo a fase me que ocorrem. Quanto mais avançado no projeto uma mudança é proposta, mais difícil e mais cara será sua realização.
Realidade
As mudanças nos requisitos podem ser facilmente absorvidas porque o software é flexível.
Mito
Uma descrição inicial pobre é a causa de grande parte das falhas de projeto de software. Quanto mais formal e detalhada for a descrição do problema e dos objetivos, melhor será a qualidade da solução.
Realidade
Uma descrição sucinta dos objetivos é suficiente para começar a escrever programas.
Mito
36
Mitos da Engenharia de SoftwareProgramador
Quanto mais cedo você começar a escrever o código mais tempo levará para concluí-lo. Dados da indústria indicam que de 60 a 80% do esforço de codificação se dá após a entrega dos programas.
Realidade
Meu trabalho está concluído tão logo o programa esteja escrito e funcionando.
Mito
As técnicas de revisão estão entre as mais eficientes para identificação de erros.
Realidade
Não se pode avaliar a qualidade dos programas enquanto eles não estiverem 'rodando'.
Mito
Mitos da Engenharia de SoftwareProgramador
O programa é apenas um elemento do software, que inclui também a documentação, os dados de configuração, os guias de operação, etc.
Realidade
O único produto que conta para o projeto é o programa em execução.
Mito
A engenharia de software não tem como objetivo criar documentos, e sim criar qualidade. Uma melhor qualidade resulta em prazos menores.
Realidade
A engenharia de software produz documentação volumosa e desnecessária, atrasando o projeto.
Mito
37
Engenharia de SoftwarePerguntas incômodas ...
• Por que leva tanto tempo para concluir o software?
• Por que os custos de desenvolvimentos são tão altos ?
• Por que não podemos achar todos os erros antes de entregar o software aos clientes?
• Por que continuamos a ter dificuldades em avaliar o progresso enquanto o software é desenvolvido?
Engenharia de SoftwareDesafios...
Reduzir o tempo para entrega de sistemas em comprometer a qualidade. Entregar no prazo e cumprir orçamento.
Fornecimento
Desenvolver técnicas para construir softwares confiáveis que sejam flexíveis o bastante para lidar com a Torre de Babel da tecnologia.
Heterogeneidade
Manter e atualizar softwares desenvolvidos há muito anos para evitar custos excessivos e prosseguir com a prestação de
serviços essenciais.
Legado
38
ÉticaPrincípios éticos – Código de Conduta
• ACMAssociation for Computing Machinery
• IEEEInstitute of Electrical and Eletronic Engineers
• BCSBritish Computer Society
ÉticaPrincípios éticos (8) do código da ACM
• PúblicoOs engenheiros de software devem agir de acordo com o interesse público.
• Cliente e EmpregadorOs engenheiros de software devem agir no melhor interesse do seu cliente e do seu empregador, de modo consistente com o interesse público
• ProdutoOs engenheiros de software devem assegurar que seus produtos, bem como as modificações posteriores, satisfazem aos mais altos padrões profissionais possíveis.
39
ÉticaPrincípios éticos (8) do código da ACM
• JulgamentoOs engenheiros de software devem manter a integridade e a independência de seus julgamentos.
• GerênciaOs gerentes e líderes devem promover e apoiar a abordagem ética na execução de suas tarefas.
• ProfissãoOs engenheiros de software devem promover a integridade e reputação da profissão, de modo consistente com o interesse público.
ÉticaPrincípios éticos (8) do código da ACM
• ColegasOs engenheiros de software devem ser justos e apoiar seus colegas.
• Auto-evoluçãoOs engenheiros de software devem se engajar no aprendizado contínuo da profissão e devem promover uma abordagem ética da prática profissional.
40
Referências Bibliográficas .......
• Ian Sommerville – Engenharia de Software –Capítulo 01
• Roger Pressman – Engenharia de Software –Capítulo 01
• Denis Alcides Rezende – Engenharia de Software e Sistemas de Informação – Capítulo 01
• Wilson de Pádua Paula Filho – Engenharia de Software – Capítulo 01