Buscar

Introdução à Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Importância do software na sociedade contemporânea
Breve histórico da Computação
Primeira Era (195? E 196?)
Orientação por processamento batch (Recebe vários conjuntos de dados, que são processados por Jobs nos Mainframes, onde seria exibido os resultados... (processo lento e passível de erros))
Distribuição Limitada de Software, devido a hardware de difícil acesso.
Os softwares eram extremamente padronizados.
Os projetos não eram documentados, os profissionais os mantinham na cabeça.
Segunda Era (196? E 197?)
Início dos sistemas multiusuários (sistemas com processamentos dividos por parte, onde usuários trabalham de forma colaborativa).
Surgimento de Software Houses e Bureaus de processamento.
Os softwares passam a ter pacotes e a serem tratados como produtos, devido o inicio do a alta escala de desenvolvimento de softwares. (precursores dos frameworks).
Início do processamento real-time (Processamentos em tempo Real).
Início da utilização dos bancos de dados junto aos sistemas.
Surgimento dos cursos de Ciência da Computação.
As organizações começam a ter dependência do software para gerir o seu processo, como por exemplo os bancos.
Terceira Era (197? e 198?)
Sistemas distribuídos, principalmente em função da evolução das tecnologias de rede de computadores, possibilitando assim processamentos de dados mais rápidos e eficazes.
Inteligência embutida nos microprocessadores.
Diminuição do custo do hardware.
Os sistemas de computação passam a interferir no cotidiano das pessoas, devido a presença cada vez mais constante as empresas e instituições.
Quarta Era (198? Até 200?)
Aumento do poder das aplicações desktop, devido a maior facilidade de acesso aos microcomputadores.
Tecnologia de orientação a objetos (Linguagens como Java, C# e Pyton ganham forças).
Sistemas Especialistas
Redes Neurais
Computação Paralela
Arquitetura Multitier.
Popularização da internet.
Quinta Era (200? Até hoje?)
Consolidação dos sistemas Web.
Sistemas distribuídos de grande escala. ( Principal exemplo é a rede social Facebook)
Aplicações para dispositivos moveis.
Cloud Computing.
Big Data.
Em sintase
A velocidade de evolução do hardware foi e está sendo muito superior a velocidade da evolução do software.
Os softwares não têm conseguido acompanhar as mudanças impostas pelos ambientes organizacionais.
As organizações estão cada vez mais dependentes dos recursos advindos dos sistemas computacionais.
É necessário construir softwares cada vez mais confiáveis e de qualidade.
O prazo para o desenvolvimento de um software é cada vez mais curto, tendo a mesma qualidade.
Questões para reflexão
Por que a finalização dos softwares é tão demorada?
O principal motivo da demora hoje a meu ponto de vista, é a alta volatilidade da aplicação do mesmo, quanto maior o tempo de desenvolvimento, maior a chance de o projeto precisar passar por mudanças.
Dificuldade em se planejar devido ao pouco tempo gasto para essa atividade. O principal recurso para o desenvolvimento são as pessoas.
Por que os custos de desenvolvimento são tão elevados?
Um dos pontos que caracterizam o alto valor de desenvolvimento, está aplicado nas licenças aplicadas, a mão de obra que em muitos projetos precisam ser mais caras.
Maior custo está na mão de obra, pois a matéria prima dos softwares são as pessoas o que o desenvolvem.
Por que não é possível identificar erros antes de entregar o software para o usuário?
É possível sim identificar os erros antes de entregar o software, porem muitas empresas não possuem um setor específico para realização dos testes no sistema, pois o programador, tem dificuldade de identificar erros devido ser ele o construtor da logica por trás do sistema. Também o usuário possui um modo de usar o sistema, que muitas vezes leva a ocasionar erros, sejam eles isolados ou constantes.
Possível é, porem 100% é quase que impossível de se garantir. Um software de qualidade é basicamente aquele que consegue atender todos os requisitos que foram especificados.
Por que gastamos muito tempo e esforço mantendo os softwares existentes?
É o velho ditado, time que está ganhando não se meche. Muitas vezes nos acomodamos com os softwares existentes, mesmo que eles não atendam 100% da demanda necessária. Essa acomodação se dá, devido ao fato de que ao migrar para um software novo, terá fase de instabilidades ate que o mesmo fique funcionando de forma correta, e para muito, esse tempo é o principal empecilho para a implantação de um novo sistema.
Pela falta de documentação dos mesmos o que onera os custos de desenvolvimento, pois o engenheiro de software irá precisar entender a linha de raciocínio utilizado pelo primeiro autor.
Por que se tem dificuldade em acompanhar o progresso do desenvolvimento do software enquanto ele está sendo construído?
Devido ao uso incorreto das metodologias atuais de desenvolvimento, seja de forma proposital ou não, pois muitas vezes o cliente precisa do software com urgência e assim o processo precisa ser otimizado.
Hoje é bem minimizado, pois hoje são aplicadas muitas técnicas de desenvolvimento ágil para o acompanhamento do desenvolvimento.
Alguns Problemas
Relacionados ao processo:
Cronogramas muitos otimistas e muitos pessimistas (muitos desenvolvedores não preveem problemas que podem ocorrer durante o desenvolvimento O ideal é ter um cronograma que atenda os dois pontos, contendo nele um mapa de riscos, que é os possíveis problemas que podem ser encontrados durante o desenvolvimento.).
Gerencia de risco inexistente
Falha de contratação de recursos (Sendo as pessoas o principal recurso do desenvolvimento de software, uma falha nesse ponto é crucial para o cronograma do projeto).
Planejamento insuficiente (O ideal é pensar em todas as hipóteses possíveis de problemas que podem ocorrer, para não ser surpreendido com o andar do projeto).
Abandono do planejamento por problemas de tempo (A grande virtude do planejamento é saber o momento certo de parar.).
Gasto de tempo durante a concepção.
Corte míope de atividades que não sejam codificação. (tem que ser levado em questões todos os pontos do desenvolvimento do software, tais como esboço de telas, reuniões de levantamentos de requisitos, etc).
Design inadequado (Falta de ‘desenhar’ o que vai ser feito, para antes de partir para codificação, seja entendido como fazer e o que fazer)
SQA ou CSM inexistentes. (é necessário escrever tudo que precisar ser feito, e fazer tudo o que está escrito, para assim ter uma qualidade desejada do software).
Relacionados ao Produto
Requisitos mal formulados, ou mal-entendidos (+- 25% dos requisitos iram mudar durante o projeto).
Desenvolvedores com tecnologias “folheadas a ouro”, isto é, não abrem mão de uma tecnologia específica.
Negociação Puxa-Empurra.
Cronograma é esticado, e mais tarefas são adicionadas.
Relacionados a Tecnologia
Superestimar ganhos no uso de uma nova ferramenta.
Trocar de ferramenta no meio do projeto, por exemplo a linguagem aplicada.
Falha de controle automático do código fonte (Sem Controle de Versão).
Software e suas Aplicações
Conceito de Software segundo Pressman, 2011. P. 32:
“Software consiste em: (1) instruções (programas de computador) que, quando executadas, fornecem características, funções e desempenho desejados;(2) estruturas de dados que possibilitam aos programas manipular informações adequadamente; e (3) informações descritivas, tanto na forma impressa como na virtual, descrevendo a operação e o uso dos programas.”

Outros materiais