Este documento apresenta uma aula sobre engenharia de software. Ele discute os objetivos da disciplina, introduz conceitos como definições de software e atributos de um bom software, e aborda desafios e responsabilidades profissionais para engenheiros de software.
Este documento apresenta uma aula sobre engenharia de software. Ele discute os objetivos da disciplina, introduz conceitos como definições de software e atributos de um bom software, e aborda desafios e responsabilidades profissionais para engenheiros de software.
Este documento apresenta uma aula sobre engenharia de software. Ele discute os objetivos da disciplina, introduz conceitos como definições de software e atributos de um bom software, e aborda desafios e responsabilidades profissionais para engenheiros de software.
4/22/2019 UNIBELAS Objectivo Entender o que é engenharia de software e por que ela é importante; Saber as respostas para questões-chaves que fornecem uma Introdução a engenharia de software; Entender questões profissionais e éticas, relevantes para os engenheiros de software.
Professora Cândida Kandeya
4/22/2019 UNIBELAS Imagens de Engenharia de Software
Professora Cândida Kandeya
4/22/2019 UNIBELAS INTRODUÇÃO Infra-estruturas e serviços nacionais contam com sistemas baseados em computadores e a maioria dos produtos eléctricos inclui um computador e um software de controle. A manufactura e a distribuição industriais estão completamente automatizadas, assim como os sistemas financeiros. Portanto, produzir e manter o software dentro de custos adequados é essencial para o funcionamento da economia nacional e internacional.
Professora Cândida Kandeya
4/22/2019 UNIBELAS INTRODUÇÃO O conceito de Engenharia de software, foi inicialmente proposto em 1968, em uma conferência organisada para discutir o que foi chamado de ‘crise de software’.Esta crise resultava directamente da introduçao de novo hardware de computador baseado em circuitos integrados. O software resultante era de ordens de grandeza maior e mais complexo que os sistemas anteriores de software. Essas técnicas tornaram-se parte da engenharia de software e são amplamente usadas hoje em dia. (Sommerville 8ª edição)
Professora Cândida Kandeya
4/22/2019 UNIBELAS DEFINIÇÕES O que ė Software? Tem-se associado o termo Software aos programas de computador, visão mais simplista. “ Software trata não somente de programas de computadores mas também de todos os dados de documentação e configuração associados necessários para que o programa opere correctamente.”(Sommerville 8ª edição)
Professora Cândida Kandeya
4/22/2019 UNIBELAS DEFINIÇÕES Existem dois tipos de produtos de software: Produtos genéricos: sistemas do tipo Stand- alone, produzidos por uma organização de desenvolvimento e vendidos no mercado para qualquer cliente disposto a compra-los. Ex: Software para PCs, como banco de dados,processadores de textos, pacotes gráficos e ferramentas de gerenciamento de projectos. Produtos sob encomenda ( ou personalisados): sistemas encomendados por um cliente . O software é desenvolvido especialmente para o cliente por uma empresa de software: Ex: Software para sistemas de controle de dispositivos electrónicos, desenvolvidos para apoiar um determinado processo de negócio e sistemas de controle de tráfego aéreo. Professora Cândida Kandeya 4/22/2019 UNIBELAS O que é engenharia de software? “ Engenharia de software é uma disciplina de engenharia relacionada com todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até sua manutenção, depois que este entrar em operação.” (SOMMERVILLE 8ª edição) “Segundo Friedrich Ludwig Bauer, "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 eficientemente em máquinas reais". O próprio significado de engenharia já traz os conceitos de criação, construção, análise, desenvolvimento e manutenção. Professora Cândida Kandeya 4/22/2019 UNIBELAS Qual é a diferença entre engenharia de software e ciência de computação? “A ciência de computação diz respeito às teorias e aos métodos que constituem a base de computadores e sistemas de software, enquanto que a engenharia de software se dedica aos problemas práticos da produção de software. Algum conhecimento de ciência de computação é essencial para os engenheiros de software, da mesma forma que algum conhecimento de física é essencial para engenheiros eléctricos.”
Professora Cândida Kandeya
4/22/2019 UNIBELAS Qual é a diferença entre engenharia de software e engenharia de sistema?
“ A engenharia de sistemas está relacionada a todos
aspectos de desenvolvimento de sistemas baseados em computadores, incluindo o hardware, software e engenharia de processo. A engenharia de software é parte desse processo.” O que são métodos de engenharia de software? São abordagens estruturadas para desenvolvimento de software que incluem modelos de sistemas de notações, regras, recomendações de projecto e guias de processo. Professora Cândida Kandeya 4/22/2019 UNIBELAS ATRIBUTOS DE SOFTWARE Quais são os atributos de um bom software? Os atributos essenciais de um bom software são:
Facilidades de manutenção: o software deve ser escrito de modo
que possa evoluir para atender ás necessidades de mudança dos clientes.
Confiança: Um software confiável não deve causar danos fisicos
ou económicos no caso de falha no sistema.
Eficiência: software não deve desperdiçar os recursos do
sistema, como memòria e ciclos do processador. Portanto a eficiência inclui tempo de resposta, tempo de processamento, utilização de memória etc.
Professora Cândida Kandeya
4/22/2019 UNIBELAS (CONT)
Usabilidade: O software deve ser usável, sem esforço
excessivo, pelo usuário para o qual ele foi projectado. Ele deve apresentar uma interface com o usuário e documentação adequada.
Professora Cândida Kandeya
4/22/2019 UNIBELAS DESAFIOS Quais são os desafios - chave dos Engenheiros de software? Desafio da heterogeneidade: o desafio da heterogeneidade consiste em desenvolver técnicas para construção de software confiável que seja flexivel o suficiente para adaptar-se com diferentes tipos de computadores com diferentes tipos de sistema. Desafio da entrega: O desafio da entrega consiste em diminuir os tempos de entrega dos sistemas grandes e complexos sem comprometer a sua qualidade.O software de apoio deve acompanhar a velocidade da mudança. Desafio de confiança: Consiste em desenvolver técnicas que demostram que o software pode ter a confiança dos seus usuários. Professora Cândida Kandeya 4/22/2019 UNIBELAS RESPONSABILIDADE PROFISSIONAL E ÉTICA Algumas responsabilidades são: Confidencialidade: Respeitar a confidencialidade de seus funcionários ou clientes, independentemente de ter ou não assinado um acordo formal. Competência: Nao se deve desvirtuar seu nìvel de competência. Você não deve conscientemente aceitar um trabalho que esteja fora da sua competência. Direitos sobre propriedade intelectual: deve estar ciente das leis locais que regem o uso de propriedade Intelectual tais como patentes e direitos autorais. Assegurar que a propriedade intelectual de funcionários e clientes seja protegida.
Mau uso de computadores: Não deve usar suas habilidades
técnicas para fazer mau uso dos computadores de outras pessoas. (Jogos, dissiminação de virus)
Professora Cândida Kandeya
4/22/2019 UNIBELAS CÓDIGO DE ÉTICA Código de Ética do ACM/IEEE (@IEEE/ACM 1999) Os engenheiros de software devem se comprometer a fazer da análise, especificação, desenvolvimento, teste e manutenção de software uma profissão benéfica e respeitada. De acordo com seu comprometimento com a saúde, segurança e bem-estar do público, os engenheiros de software devem aderir aos seguintes Oito Princípios:
Professora Cândida Kandeya
4/22/2019 UNIBELAS CÓDIGO DE ÉTICA 1. PÚBLICO: Os engenheiros de software devem agir conscientemente com o interesse público. 2. CLIENTE E EMPREGADOR: Os engenheiros de software devem agir dentro dos melhores interesses de seu cliente e empregador, deforma consistente com o interesse público. 3. PRODUTO: Os engenheiros de software devem assegurar que seus produtos e as modificações a eles relacionadas atendam aos mais altos padrões profissionais possíveis. 4. JULGAMENTO: os engenheiros de software devem manter a integridade e a independência em seu julgamento profissional.
Professora Cândida Kandeya
4/22/2019 UNIBELAS CÓDIGO DE ÉTICA 5. GERENCIAMENTO: Os gerentes e líderes de engenharia de software devem aceitar e promover uma abordagem ética no gerenciamento de desenvolvimento e manutenção de software.
6. PROFISSÃO: Os engenheiros de software devem promover
a integridade e a reputação da profissão de forma consistente com o interesse público.
7. COLEGAS: Os engenheiros de software devem ser honestos
e colaborativos com seus colegas.
8. INDIVÍDUO: Os engenheiros de software devem participar,
ao longo da vida, aprendendo, respeitando e promovendo uma abordagem ética na prática da profissão.
Professora Cândida Kandeya
4/22/2019 UNIBELAS LEITURAS SUGERIDAS Manual de Engenharia de Software I (Unidades 1 e 2) Pag. 2 a 5. baseado no livro de Engenharia De Software, 8ª edição ( Ian Sommerville, Pearson Addison- Wesley, 2007- cap 1) Software Engineering (C.Ghizi,et al., Prentice Hall,2003.) Professional issues in software Engineering ( F. Bott, et al., 3rd edition,2000, Taylor & Francis.) pt.wikipedia.org/wiki/Engenharia_de_software
Professora Cândida Kandeya
4/22/2019 UNIBELAS TRABALHO PRÁTICO 1. Quais são as diferenças entre o desenvolvimento de produto genérico de software e o desenvolvimento de software sob encomenda? 2. Quais são os quatro principais atributos que todos os produtos de software devem ter? Sugira quatro outros atributos que as vezes podem ser significativos? 3. Além dos desafios de heterogeneidade, entrega rápida e confiança, identifica outros problemas e desafios que a engenharia de software está enfrentando no século 21.