Você está na página 1de 38

Engenharia de Software

Software so programas de computador e documentao associada. Os produtos de software podem ser desenvolvidos para um cliente especfico ou para um mercado em geral.(Sommerville) Engenharia de software uma diciplina de engenharia relacionada a todos os aspectos de produo de software.(Sommerville)

Cincias da computao est relacionada com teorias e fundamentos; engenharia de software est relacionada com prtica de desenvolvimento e entrega de software til. (Sommerville)
(Cincias da computao cuida da forma de pensar, de pesquisar novas teorias, de botar tudo no papel de criar o estudo cientfica j a engenharia de software est relacionada com a criao do software . A engenharia de software coloca em prtica o que a cincias da computao pesquisa)

Processos de Software Sequencial Linear (cascata). Prototipagem. RAD. Modelos Evolucionrios. Engenharia de Software baseada em componentes. Processo Unificado. Programao Extrema (XP). Scrum, Kanban.

Processo de software e um conjunto de atividades cujo objetivo e o desenvolvimento ou a evoluo de software. (Sommerville)
( Processo de software na parte conceitual, acadmica: comanda toda parte descritiva e de atividades para quando se chegue no final do processo, se tenha um software desenvolvido)

Modelo de processo de software uma representao simplificada de um processo de software, apresentada sob perspectiva especfica. (Sommerville)
(O modelo de processo de software uma representao de um processo de software)

60% do software desenvolvimento 40% teste. (Sommerville)


(O que foi preciso fazer antes da fase de desenvolvimento: preparar ambiente, planejar, analisar, ter uma gerao de demanda formal)

(Sistemas a unio de vrios fatores, vrias atividades que corroboram entre elas para um mesmo

A engenharia de sistemas est relacionada a todos os aspectos de desenvolvimento de sistemas baseados em computadores, incluindo hardware, software e engenharia de processo. A engenharia de software parte desse processo. (Sommerville)
objetivo. Neste momento comeamos a definir qual o papel do analista de sistemas dentro da informtica, este papel no gerar software entender este mundo, onde o software vai entrar onde a engenharia de software vai agir. neste conceito nos j conseguimos imaginar o que nos teramos que trabalhar antes de desenvolver um software. Antes de trazer a viso da engenharia de software como a preocupao inicial. Qual seria esta preocupao inicial? Entender o mundo onde que no traz onde o software se enquadrar ali dentro. Atravs do entendimento deste mundo faz-se a necessidade de se trabalhar com processos de software )

Processos de Software um conjunto de atividades que leva a produo de um produto de software. (Sommerville) Um pouquinho de histria. Uma cincia que surgiu aproximadamente na dcada de 40 essa cincia diz respeito a informao ,a informtica e a tecnologia. No decorrer do desenvolvimento desta cincia eles tiveram precursores que faziam com que mquinas computacionais funcionassem justamente orientada a processos mecnicosEngrenagens, Ento devido ao desgaste de peas surgiu a idia de que trocar processos mecnicos por algo que no se desgaste, algo como uma alma.

Um pouquinho de histria. Com isso podemos dizer que em cima deste conceito de Alma foi criado o conceito de software. Ento depois disso comearam a ser produzido almasSoftwares para os computadores. Mas a criao deste software era interessante na dcada de 40 um general dos EUA esta tecnologia ainda pertencia basicamente ao exercito iria ao departamento de tecnologia e requisitava um programa para o calculo de balstica de um canho O soltado iria ao seu mainframe e faria o programa e entregaria para o general.

Um pouquinho de histria. Ns podemos ver que apesar de muito complexos estes softwares no tinham um controle especfico, nenhuma documentao, no se sabia o que tinha acontecido anteriormente no tinham uma previso de futuro, no se preocupavam em manter o software no mercado. Neste momento surgem alguns pensadores querendo trazer conceitos de engenharia para dentro da criao de softwares. Onde foi definido que se precisava de uma padronizao de um mnimo de organizao e qualidade, um processo bsico onde se precisava documentar todo processo, se definiu que um software precisava ser analisado, criado e testado como uma seqncia. Neste momento acaba-se definindo um modelo de processo de software chamado de seqencial linear.

Um pouquinho de histria. Aps algum tempo descobriram que o sistema linear era muito bom, se tinha controle, se sabia o que estava sendo desenvolvido, conseguia ter um retorno depois do sistema mas o modelo era muito inflexvel no se conseguia fazer mudanas. Neste momento comeou a se pensar nos modelos prototipagem, modelos evolucionarios e at mesmo rad.

Os modelos encontrados no mercado no so mutuamente excludentes e so na verdade usados em conjunto.

(com a tecnologia interligada como hoje em dia no temos como definir um nico processo de software para todo o projeto, existe momentos em que se usa um determinado processo e outro que se usa outro determinado processo)

Quebrando mitos: So escolhidos conforme a natureza do projeto.

(Muitas vezes a teoria de processo mais nova no se adapta ao projeto que estamos trabalhando)

Processos de Software Sequencial Linear (cascata). Prototipagem. RAD. Modelos Evolucionrios. Engenharia de Software baseada em componentes. Processo Unificado. Programao Extrema (XP). Scrum, Kanban.

Engenharia de Software

Modelo seqencial linear (Cascata) Sugere uma abordagem sistemtica seqencial Inicia no nvel de sistema e progride at a manuteno.(Sommerville)

Presman

Todos os outros sistemas foram baseados nele

Modelo seqencial linear (Cascata)

Sommerville

Modelo seqencial linear (Cascata) Engenharia de sistemas/informao Estabelecimento de todos os requisitos para o sistema e alocao de algum subconjunto desses requisitos para o software.

(neste momento estou me preocupando em entender o mundo no qual meu software se encaixa Requisitos so as necessidades que o software precisa sanar)

(temos a diviso das engenharias capitando informaes para o desenvolvimento do sistema)

A engenharia de sistema trata de um conjunto de necessidades a nvel de sistema em alto nvel, a engenharia da informao inclui um conjunto de necessidades a nvel estratgico e das reas de negcio.

Modelo seqencial linear (Cascata) Anlise de requisitos de software: intensificao da anlise de requisitos no que o software precisa ter, conhecimento do domnio da informao do software, funo, comportamento, desempenho e interface.
(capta os dados para a fase de projeto)

(Complementa a fase de anlise A fase de anlise diz preciso disto a fase de projeto diz eu preciso disto para que tenha isto colocando isto em prtica)

Projeto: enfoca a estrutura de dados, arquitetura de software, representaes da interface e detalhes procedimentais. Traduz os requisitos de forma que a representao do software possa ser avaliada antes da condio.

Modelo seqencial linear (Cascata) Codificao(teste de unidade): traduo do projeto para linguagem de mquina. Teste(Integrao): Conduo de teste para descobrir erros e garantir que entradas definidas produziro resultados reais, que concordam com os resultados exigidos. Manuteno(operao): Se torna necessria quando se tem uma modificao. Reaplica cada uma das fases precedentes a um programa existente.

Modelo seqencial linear (Cascata) Vantagem: Maior capacidade de organizao do projeto, visto que uma etapa s inicia aps a anterior. Desvantagem: Modificaes podero causar confuses. Dificilmente o cliente expe todos os requisitos de uma s vez. S teremos uma verso executvel aps o trmino do projeto.

Viso Incremental X Viso Iterativo

Modelo prototipagem Senta-se com o cliente e realiza um projeto rpido para atender somente a aspectos do software que ficaro visveis (prottipo). O prottipo avaliado pelo cliente e usado para refinar os requisitos de software que sero desenvolvidos. Novas interaes so realizadas para que tenhamos a evoluo do prottipo e melhor entendimento do desenvolvedor. Tcnica para elencar requisitos, deve-se evitar passar ao cliente que poderia ser sua verso final.

Modelo Prototipagem

Modelo prototipagem Problemas O cliente imagina que seja a sua verso final sem considerar que na sua gerao requisitos de qualidade ou manutenabilidade no foram tratados. O cliente exige que seja utilizado o prottipo com alguns remendos e a gerencia aceita. A utilizao de linguagens e tecnologia quaisquer pode ser uma prtica pelo desenvolvedor que acaba se adaptando ao seu uso e esquece da real necessidade que teve ao escolhe-las. Soluo Definir as regras do jogo no comeo.

Engenharia de Software

Modelo RAD (rapid application develop) Modelo de desenvolvimento incremental que enfatiza um ciclo de desenvolvimento curto.
(60 a 90 dias)

Adaptao de alta-velocidade do modelo cascata. Agiliza o desenvolvimento baseando-se na construo de componentes. Requisitos bem conhecidos e objetivos de projeto restritos. Se tivermos a possibilidade de componentizar um sistema e estes componentes ou mdulos puderem ser desenvolvidos em 60 a 90 dias, poderemos ter vrias equipes trabalhando no desenvolvimento.

Modelo RAD

Modelo RAD Modelagem do negcio: modelagem do fluxo de informao entre as funes de negcio.
Se preocupa em modelar os processos que se tem dentro da empresa, nesta empresa temos funes especficas, principais e de suporte. As principais so as necessria para o funcionamento da empresa como fiscal e vendas. Estas funes so trabalhadas de forma que tenham atividades a serem realizadas e que aja informaes circulando entre elas. Neste momento entra a modelagem de negocio modelando estas atividades e como estas informaes circulam entre elas, ento teremos de responder a estas perguntas.

informao dirige o processo de negcio? Que informao gerada? Quem a gera? Para onde vai? Quem a processa? Modelagem de dados: fluxo de informao refinado num conjunto de objetos de dados, que daro suporte ao negcio.

Que

Resumindo entendemos as regras de negocio agora espelharemos elas dentro dos dados.

Modelo RAD Modelagem do processo: os objetos de dados obtidos so transformados para conseguir o fluxo de informao necessrios para implementar uma funo do negcio. Gerao da aplicao: trabalha com o reuso de componentes de programas existentes ou cria componentes reusveis.
RAD automaticamente orientado a componentes. A viso do RAD obrigatoriamente componentizvel, se no pudermos componentizar o projeto no poderemos trabalhar com o modelo RAD

Como trabalhamos com vrios componentes reutilizveis comum eles j terem sido testados

Teste e entrega: como muitos dos seus componentes j devem ter sido testados, esta fase acaba por ser reduzida.
anteriormente, ento s teremos de testar sua integrao com o resto do projeto.

Modelo RAD Exige muito RH para criar a equipe a RAD. Necessidade do compromisso do cliente e dos desenvolvedores com atividades continuamente rpidas. Se o sistema no puder ser componentizado o RAD no atender expectativa. Quando tivermos riscos tcnicos elevados,o RAD no aconselhvel.
(todas novas tecnologias demandam de tempo para aprendizado e amadurecimento/ Novas tecnologias novos servidores ,novos frameworks)

Antes tinha-mos uma viso seqencial de todo o processo, no modelo em cascata se tinha algumas dificuldades que foram resolvidas com tcnicas de anlise de requisitos do modelo de prototipagem, Tivemos a tentativa de separar o projeto em componentes para tentarmos entregar o programa de uma maneira mais rpida no modelo RAD mas mesmo assim ainda tinha-mos problemas. Ento tivemos a preocupao para se trabalhar com a evoluo dos sistemas

Modelo evolucionrio Modelos de processo que foram projetados para acomodar um produto que evolui com o tempo.
(Que se adqe a necessidade de negcios real, ou seja se temos uma estratgia de negcios que dinmica nosso software ser dinmico. O software ter que se adequar as necessidades de negocio.)

Modelo Incremental: Combina o modelo seqencial linear com a filosofia interativa da prototipagem.

( Trs a organizao do modelo em cascata e a interao com o cliente do modelo prototipagem)

O primeiro incremento chamado de ncleo do produto (a parte mais importante do sistema)

Modelo evolucionrio Modelo incremental Desenvolve-se um plano para cada incremento de forma que o ncleo do produto seja modificado para melhor satisfazer s necessidades do cliente e a elaborao de caractersticas e funcionalidades adicionais.
(Aps criarmos o ncleo com as funcionalidades mais importantes expandimos o ncleo com novos mdulos e para cada incremento temos um plano)

Objetiva a elaborao de um produto funcional.


(o modelo incremental tem prazo de finalizao )

til quando no h mo de obra disponvel para uma implementao completa, dentro do prazo comercial de entrega.

Modelo evolucionrio Modelo Incremental

Modelo evolucionrio Modelo Incremental

Modelo Evolucionrio Modelo Espiral

(Modelo espiral se preocupa em preparar o software para o ps termino de projeto, Modelo espiral se preocupa com os riscos do projeto)

Combina a natureza interativa da prototipagem com os aspectos controlados e sistemticos do modelo cascata.
(Continuam se trazendo a interao do modelo prototipagem j com o modelo cascata trazemos somente os controlesmedies que so efetuados.)

Desenvolve o software em uma srie de verses incrementais. Na ultima iterao so produzidas verses cada vez mais completas do sistema. Divide-se em regies de tarefas compostas por seus respectivos conjuntos de tarefas. Pode ser adaptado para aplicao ao longo do seu ciclo de vida

Modelo Evolucionrio Modelo Espiral

Modelo Evolucionrio Modelo Espiral