Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos
Introduzir a Engenharia de Software e explicar sua importncia. Introduzir os conceitos principais relacionados Engenharia de software. Introduzir questes profissionais e ticas relevantes para os engenheiros de software.
Engenharia de Software
As economias de todas as naes desenvolvidas so dependentes de software. Cada vez mais sistemas so controlados por software. A engenharia de software se preocupa com teorias, mtodos e ferramentas para o desenvolvimento de software profissional. Gastos com Engenharia de Software representa uma frao significativa de todos os pases desenvolvidos
Custos de Software
Custos de software em geral dominam o custos do sistema. Os custos de software em um PC so, em geral, maiores que o custo do hardware Em Software, custa-se mais para manter do que para desenvolver. Para sistemas de vida til longa, os custos de manuteno podem ser vrias vezes mais que o custo de desenvolvimento. A engenharia de software est preocupada com o desenvolvimento de software com uma boa relao custo-benefcio.
O que software? O que engenharia de software? Qual a diferena entre engenharia de software e cincia da computao? Qual a diferena entre engenharia de software e engenharia de sistemas? O que um processo de software? O que um modelo de processo de software?
Quais so os custos de engenharia de software? O que so mtodos de desenvolvimento de software? O que CASE (Computer-Aided Software Engineering) Quais so os atributos de um bom software? Quais so os principais desafios enfrentados pela engenharia de software?
O que software?
Programas de computador e documentao associada. Produtos de Software podem ser desenvolvidos para um cliente especfico ou para o mercado. Produtos de software podem ser:
Genricos- produzidos e vendidos no mercado a qualquer cliente. Produtos sob encomenda (ou personalizados) - so encomendados por um cliente em particular (especificao desenvolvida e controlada pela organizao que est comprando o software)
Engenharia de software uma disciplina de engenharia que se ocupa de todos os aspectos da produo de software. Engenheiros de software devem adotar uma abordagem sistemtica e organizada em seu trabalho e usar tcnicas e ferramentas apropriadas dependendo do problema a ser resolvido, as restries de desenvolvimento e os recursos disponveis.
Cincia da computao se preocupa com as teorias e os mtodos bsicos referentes aos computadores e sistemas de software; a engenharia de software se dedica aos problemas prticos da produo de software. Conhecimento em Cincia da Computao fundamental para os engenheiros de software.
Engenharia de sistemas com base em computadores se ocupa de todos os aspectos de desenvolvimento e da evoluo de sistemas baseado em computadores, incluindo hardware, software e engenharia do processo. A engenharia de software parte desse processo. Engenheiros de sistemas esto envolvidos na especificao do sistema, na definio de sua arquitetura geral, integrao e desenvolvimento.
Um conjunto de atividades cujo objetivo o desenvolvimento ou evoluo do software. Atividades genricas a todos processos de software so:
Especificao - a funcionalidade do software e as restries em sua operao devem ser definidas Desenvolvimento - produo do software de modo que atenda a suas especificaes. Validao - o software deve ser validado para garantir que ele faz o que o cliente deseja. Evoluo - o software deve evoluir para atender s necessidades mutveis do cliente.
Uma descrio simplificada de um processo de software, que representada a partir de uma perspectiva especfica. Exemplos de tipos de modelos de processos so:
Um modelo de Workflow - seqncia de atividades. Um modelo de fluxo de dados ou de atividades - fluxo de informao. Um modelo de papel/ao - quem faz o que.
De maneira grosseira, 60% dos custos so custos de desenvolvimento, 40% so custos de teste . Para software personalizado, o custo de evoluo freqentemente ultrapassa os custos de desenvolvimento. Custos podem variar, dependendo do tipo de sistema que est sendo desenvolvido e os requisitos dos atributos do sistema tais como performance e confiabilidade do sistema. A distribuio dos custos depende do modelo de desenvolvimento que est sendo utilizado.
Uma abordagem estruturada para o desenvolvimento de software que inclui modelos de sistema, notaes, regras, recomendaes e diretrizes de processo. Descries de modelos de sistema
Descries grficas so desenvolvidas - Ex. modelo de objetos Restries aplicadas a modelos de sistemas Heursticas em boas prticas de projeto Quais atividades seguir
Regras
Recomendaes
Diretrizes de processo
Sistemas de software cujo objetivo fornecer suporte automatizado para as atividades de processo de software. Sistemas CASE so freqentemente utilizados para apoiar a aplicao dos mtodos. Upper-CASE
ferramentas de apoio s fases iniciais do processo de software ferramentas de apoio s fases finais processo de software (implementao e testes)
Lower-CASE
O software deve atender os requisitos funcionais e desempenho que foram solicitados pelo usurio e alm disso deve atender requisitos no funcionais, tais como facilidade de manuteno, nvel de confiana, eficincia e facilidade de uso. Facilidade de manuteno
Software deve ser escrito de modo que possa evoluir para atender as necessidades mutveis. Software confivel no deve ocasionar danos fsicos ou econmicos, no caso de um defeito no sistema. O Software no deve desperdiar os recursos do sistema. O Software deve ser utilizvel, sem esforos indevidos, pelo usurio para quem foi projetado.
Nvel de confiana
Eficincia
Facilidade de uso
Lidar com sistemas legados, lidar com a diversidade crescente e lidar com a crescente demanda e reduzir o tempo de entrega. Sistemas legados
Sistemas antigos, porm teis devem ser mantidos e atualizados Sistemas so distribudos e inclui uma mistura de hardware e software. Deve-se desenvolver tcnicas para construir softwares confiveis e flexveis. Existe presso crescente para uma entrega rpida do software.
Heterogeneidade
Fornecimento
O trabalho de engenheiros de software envolve responsabilidades mais amplas do que a simples aplicao de habilidades tcnicas. Engenheiros de software devem se comportar de maneira responsvel, tica e moral, para serem respeitados como profissionais. Comportamento tico muito mais que simplesmente respeitar as leis.
Confidencialidade
os engenheiros devem respeitar a confidencialidade de seus empregadores ou clientes, mesmo que no tenham assinado um acordo formal para tanto. Os engenheiros no devem enganar quanto ao seu nvel de competncia. No devem aceitar servios que estejam fora do seu limite de competncia.
Competncia
M utilizao de computadores
As sociedades profissionais dos US tem cooperado no sentido de produzir um cdigo de tica para ser praticado por seus membros. Membros dessas organizaes se comprometem a seguir esse cdigo quando se inscrevem como membros. O cdigo contm oito princpios relacionados ao comportamento de e decises feitas por profissionais de software, incluindo desenvolvedores, educadores, gerentes, supervisores e estudantes da profisso
Prembulo
A verso resumida do cdigo apresenta as aspiraes em um alto nvel de abstrao; as clausulas que esto includas na verso integral so exemplos e detalhes de como essas aspiraes modificam o modo pelo qual agimos como profissionais da engenharia de software. Sem essas aspiraes, os detalhes podem se tornar muito especficos e tediosos; sem os detalhes, as aspiraes podem se tornar aparentemente importantes, mas vazias; juntos aspiraes e detalhes formam um cdigo coeso.. Engenheiros de software se comprometero a fazer da anlise, da especificao, do projeto, do desenvolvimento, dos testes e da manuteno de software uma profisso benfica e respeitada. De acordo com seu compromisso com a sade, a segurana e o bem estar do pblico, os engenheiros de software devero assegurar que seus produtos e as alteraes a eles relacionadas cumpram o mais alto padro profissional possvel:
1. PBLICO
OS engenheiros de software agiro consistentemente com o interesse pblico. Os engenheiros de software agiro de acordo com os melhores interesses de seus clientes e empregadores e consistente com o interesse pblico. Engenheiros de software devero assegurar que seus produtos e as alteraes a eles relacionadas cumpram o mais alto padro profissional possvel.
2. CLIENTE E EMPREGADOR
3. PRODUTO
JULGAMENTO
Os engenheiros de software mantero integridade e independncia em seu julgamento profissional. Os gerentes e lderes de engenharia de software adotaro e promovero uma abordagem tica para o gerenciamento do desenvolvimento e da manuteno do software. Os engenheiros de software fomentaro a integridade e reputao da profisso, de modo consistente com o interesse pblico.
5. GERENCIAMENTO
6. PROFISSO
7. COLEGAS
Os engenheiros de software sero justos e daro apoio aos seus colegas. Os engenheiros de software participaro de aprendizado constante com relao prtica de sua profisso e promovero uma abordagem tica dessa prtica.
8. PESSOAL
Dilemas ticos
Discordncia, em princpio, das polticas dos nveis mais altos de gesto da companhia. O empregador age de um modo que no tico e, por exemplo, libera um sistema crtico de segurana sem terminar os testes do sistema. Participao no desenvolvimento de sistemas militares e nucleares.
Pontos Chave
A engenharia de software uma disciplina da engenharia que se ocupa de todos os aspectos da produo de software.. Produtos de software consistem de programas desenvolvidos e da documentao associada. Os atributos essenciais dos produtos so a facilidade de manuteno, a confiana e a evoluo do software. O processo de software consiste em atividades envolvidas no desenvolvimento de produtos de software. As atividades bsicas so a especificao, o desenvolvimento, a validao e a evoluo do software. Mtodos so os meios organizados de produzir software. Eles incluem sugestes sobre o processo a ser seguido, as notaes a serem utilizadas, as regras que regem as descries de sistema produzidas e as diretrizes do projeto.
Pontos chave
Ferramentas CASE so sistemas de software projetados para dar apoio s atividades de rotina no processo de software, tais como editar diagramas de projeto, verificar a consistncia de diagramas e manter o controle dos testes de programas. Os engenheiros de software tem responsabilidades para com a engenharia como profisso e a sociedade. Eles no devem se preocupar exclusivamente com questes tcnicas. As sociedades profissionais publicam cdigos de conduta que estabelecem os padres comportamentais esperados por seus membros.