Parte I: O Produto e o Processo Fritz Bauer - 1969
O estabelecimento e uso de slidos princpios de engenharia para que se possa obter economicamente um software que seja confivel e que funcione eficientemente em mquinas reais Engenharia de Software: Definio IEEE, 1993
A aplicao de uma abordagem sistemtica, disciplinada e quantificvel para o desenvolvimento, operao e manuteno do software. O estudo de abordagens e princpios a fim de obter economicamente softwares confiveis e que executem de forma eficiente nas mquinas reais Engenharia de Software: Definio Engenharia de Software: Definio Arndt Von Staa, 1987
O desenvolvimento e a aplicao de cincia, matemtica, tcnicas, mtodos e ferramentas para o desenvolvimento e a manuteno econmica de sotfware de qualidade preditvel e controlvel, operando de modo econmico em mquinas e ambientes reais Engenharia de Software ENGENHARIA DE SOFTWARE Uma disciplina da Cincia da Computao que oferece Mtodos, Tcnicas e Ferramentas para desenvolver e manter softwares com alta qualidade para a resoluo de problemas (Anneliese Mayrhauser 1990) Engenharia de Software Abrange um conjunto de trs elementos fundamentais: Mtodos, Ferramentas e Processos (Procedimentos)
Possibilitar ao gerente o controle do processo de desenvolvimento Oferecer ao profissional uma base para a construo de software de alta qualidade
D Engenharia de Software: Tecnologia em Camadas FOCO NA QUALIDADE (g.q.t) PROCEDIMENTOS/PROCESSOS (KPA) MTODOS FERRAMENTAS Engenharia de Software MTODOS: proporcionam os detalhes de como fazer para construir o software
Envolvem um amplo conjunto de tarefas ...
Engenharia de Software Planejamento e estimativa de projeto Anlise de requisitos de software Projeto da estrutura de dados Algoritmo de processamento Codificao Teste Manuteno Engenharia de Software FERRAMENTAS: fornecem suporte automatizado ou semi aos mtodos. = Existem atualmente ferramentas para sustentar cada um dos mtodos = Quando as ferramentas so integradas estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering PROCEDIMENTOS: constituem o elo de ligao entre os mtodos e ferramentas C Seqncia em que os mtodos sero aplicados C Produtos (deliverables) que se exige que sejam entregues C Controles que ajudam assegurar a qualidade e coordenar as alteraes C Marcos de referncia que possibilitam administrar o progresso do software Engenharia de Software ENGENHARIA DE SOFTWARE: compreende um conjunto de etapas que envolve MTODOS, FERRAMENTAS e PROCEDIMENTOS. Essas etapas so citadas como CICLOS DE VIDA ou MODELOS DE PROCESSO DE SOFTWARE Uma estratgia de desenvolvimento que englobe processos, mtodos e ferramentas, e as fases de desenvolvimento Engenharia de Software Desenvolvimento de software um processo de aprendizagem social e iterativo processo - dilogo em que o conhecimento embutido no software, interao entre usurios-projetistas, iterativo Quando se constri um produto importante seguir um conjunto de etapas (road map - processo de software) Uma estrutura para realizar as tarefas Engenharia de Software Engloba um PROCESSO, GERENCIAMENTO E MTODOS TCNICOS, FERRAMENTAS Engenharia Anlise, Projeto (design), Implementao, Verificao e Gerenciamento de entidades tcnicas Definio - O QU (What) Desenvolvimento - COMO (How) Suporte - MANUTENO (Change) - Segurana corretiva, adaptativa, melhoramento funcional, preventiva (Reengenharia) Engenharia de Software Viso Profissional de Qualidade requisitos PROCESSO DE CONSTRUO PRODUTO usurio requisitos atendidos PRODUTO COM QUALIDADE Qualidade de Software desenvolvedor usurio organizao Processo de Desenvolvimento SOFTWARE PRODUTO SOFTWARE COM QUALIDADE PROCESSO DE SOFTWARE requisitos requisitos atendidos Por que Modelar????? Uma empresa de software bem sucedida? Fornece software de qualidade e capaz de atender s necessidades dos usurios Desenvolver software de maneira previsvel e em determinado perodo, com utilizao eficiente e eficaz de recursos
Empresa com um NEGCIO vivel Por que Modelar????? Produto Principal: software capaz de satisfazer s necessidades de seus usurios e respectivos negcios O resto SECUNDRIO, mas no IRRELEVANTE (documentos bonitos, reunies sofisticadas, timos slogans, linhas de cdigo maravilhosas, interfaces ricas, ...) MODELAGEM a parte central de todas as atividades que levam implantao de um bom software
Por que Modelar????? Modelos so construdos para comunicar a estrutura e o comportamento desejado do sistema. Visualizar e controlar a arquitetura. Compreender melhor o sistema. Gerenciar os riscos... Exemplos: Construir uma casa para seu cachorro Construir uma casa para sua famlia (Qualidade) Construir um prdio comercial Por que Modelar????? Muitas empresas de desenvolvimento de software comeam querendo construir prdios altos, como se estivessem fazendo uma casinha de cachorro. Sorte ajuda Pessoas certas no momento adequado e com todas as tecnologias em alinhamento favorvel.... Desenvolvimento de software de qualidade uma questo de Arquitetura, Processo e Ferramentas Por que Modelar????? Modelagem uma tcnica de engenharia aprovada e bem aceita modelos de arquitetura de casas e de grandes prdios modelos matemticos a fim de analisar os efeitos de ventos e tremores de terra --> causas
O que um MODELO? Definio: Modelo Um modelo uma simplificao da realidade. Planos de detalhes, podem ser estruturais (organizao do sistema) ou comportamentais (dinmica do sistema) Construmos modelos para compreender melhor o sistema que estamos desenvolvendo. ajudam a visualizar o sistema como desejamos que seja especificar a estrutura e comportamento guia para construo do sistema documentam as decises tomadas
Definio: Modelo Construmos modelos de sistemas complexos porque no possvel compreend-los em sua totalidade. ajudam a visualizar o sistema como desejamos que seja especificar a estrutura e comportamento guia para construo do sistema documentam as decises tomadas Os melhores modelos esto relacionados realidade (modelos simplificam a realidade) Nenhum modelo nico suficiente. Conjunto de modelos independentes
Processo de Software Estrutura comum de processo Atividades guarda-chuva Atividades da estrutura Conjunto de tarefas Tarefas Marcos de controle Controle de qualidade (pontos SQA) Processo de Software Estrutura Comum de Processo definio das atividades de estrutura aplicveis a todos os projetos de software Conjuntos de Tarefa adaptao das atividades da estrutura s caractersticas do projeto e aos requisitos da equipe Atividades guarda-chuva apiam o modelo de processo (garantia de qualidade, gerenciamento de configurao, produo de documentos, etc...) Processo de Software Atualmente: maturidade de processo O SEI desenvolveu um modelo de maturidade da competncia (CMM), que define as atividades chave requeridas nos diferentes nveis de processo Os 5 nveis de maturidade de processo do modelo CMM (KPA - key process areas ~18) Inicial, Repetitivo, Definido, Gerenciado, Otimizado O que o CMM? Uma estrutura que descreve os elementos chaves de um processo de software eficaz. Um caminho de melhoramento evolucionrio (5 nveis de maturidade) para organizaes de software mudarem de um processo de software imaturo, ad hoc, para um processo maduro, disciplinado. CMM - Capability Maturity Model Capability Maturity Model (Modelo de Maturidade da Competncia) Maturidade da Competncia : competncia em controlar o Processo de Software (desenvolvimento, gerenciamento e manuteno) Maturidade da Competncia Maturidade do Processo de Software Maturidade de Processo de Software A maturidade dos processos de software de uma organizao influencia na sua capacidade de atingir metas de custo, qualidade e cronograma A qualidade do processo de software pode ser analisada atravs do nvel de maturidade do processo. Premissa Bsica Premissa bsica que est por baixo do trabalho da SEI sobre maturidade de processo: A qualidade de um produto profundamente determinada pela qualidade do processo de desenvolvimento e de manuteno usado para constru-lo. INICIAL Organizaes Caticas REPETITIVO Organizaes Disciplinadas DEFINIDO Organizaes Padronizadas GERENCIADO Organizaes Previsveis OTIMIZADO Organizaes com Melhoria Contnua Os 5 Nveis de Maturidade do CMM INICIAL Organizaes Caticas CMM: Nvel 1 de Maturidade O processo de software caracterizado como ad hoc, e ocasionalmente at mesmo catico. Poucos processos so definidos e o sucesso depende de esforos individuais e hericos. REPETVEL Organizaes Disciplinadas CMM: Nvel 2 de Maturidade Sabe-se o que se faz Intuio dos gerentes Processos administrativos bsicos so estabelecidos para acompanhar custo, cronograma e funcionalidade. A disciplina de processo est em repetir sucessos anteriores em projetos com aplicaes similares. DEFINIDO Organizaes Padronizadas Os processos de software, tanto para atividades administrativas quanto para de engenharia esto documentados, padronizados e integrados em um processo de software padro para a organizao. Todos os projetos usam uma verso aprovada do processo de software padro da organizao para desenvolvimento e manuteno de software. CMM: Nvel 3 de Maturidade GERENCIADO Organizaes Previsveis So coletadas medidas detalhadas da qualidade do processo e do produto (mtricas) Tanto o processo de software quanto os produtos so quantitativamente compreendidos e controlados. CMM: Nvel 4 de Maturidade OTIMIZADO Organizaes com Melhoria Contnua CMM: Nvel 5 de Maturidade Contnua melhoria de processo possvel por retornos quantitativos dos processos e das idias e tecnologias inovadoras Viso Profissional de Qualidade requisitos PROCESSO DE CONSTRUO PRODUTO usurio requisitos atendidos PRODUTO COM QUALIDADE Modelos de Processo ou Paradigmas de Engenharia de Software Uma estratgia de desenvolvimento que englobe processos, mtodos e ferramentas, e as fases de desenvolvimento... 1. Modelo Seqencial (ciclo de vida clssico) 2. Modelo de Prototipao 3. Modelo RAD (Rapid Application Development) 4. Modelos Evolutivos 1. Modelo Incremental e Espiral 5. Modelo de Espiral WinWin 6. Modelo de desenvolvimento Concorrente 7. Modelo de Montagem de Componentes 8. Modelo de Mtodos Formais 9. Tcnicas de 4a gerao 10. Modelo do RUP State of the Art: Modelos de Processo Escolha de um Modelo de Processo: C Qual o processo de desenvolvimento ser adotado? C Adequao do modelo de processo aplicao C Mtodos e ferramentas a serem utilizados C Controles e produtos que precisam ser entregues C Caractersticas dos processos: Visibilidade, Clareza, Apoio de Ferramentas, Produtividade, Qualidade, etc. Modelo de Ciclo de Vida Clssico (Cascata) modelo mais antigo e o mais amplamente usado da engenharia de software modelado em funo do ciclo da engenharia convencional requer uma abordagem sistemtica e seqencial para o desenvolvimento de software cada atividade uma fase em separado. A passagem entre fases formal. Engenharia de Sistemas Anlise de Requisitos Projeto Codificao Teste Manuteno Ciclo de Vida Clssico Atividades do Ciclo de Vida Clssico 1- ENGENHARIA DE SISTEMAS software faz parte de um sistema amplo envolve a coleta de requisitos em nvel do sistema, com uma pequena quantidade de projeto e anlise de alto nvel esta viso essencial quando o software deve fazer interface com outros elementos (hardware, pessoas e banco de dados) Engenharia de Sistemas Anlise de Sistemas engloba as tarefas da engenharia de sistemas: Identificar as necessidades dos usurios executar a anlise econmica e tcnica estabelecer as restries de prazo e custo um modelo arquitetnico do sistema produzido e representaes de cada subsistema importante so desenvolvidas PRODUTO: Especificao do Sistema - documento que forma as bases e definio do sistema para todo o trabalho de engenharia subseqente Engenharia de Sistemas Exige uma intensa comunicao entre o cliente e o analista
O cliente deve ser capaz de entender as metas do sistema e ser capaz de especificar para o analista
O analista deve saber quais perguntas fazer, quais conselhos dar 2- ANLISE DE REQUISITOS DE SOFTWARE o primeiro passo tcnico do processo de engenharia de software o processo de coleta dos requisitos intensificado e concentrado especificamente no software tarefa de descoberta, refinamento, modelagem e especificao escopo definido inicialmente refinado e aperfeioado em detalhes Atividades do Ciclo de Vida Clssico O analista deve compreender o domnio da informao, a funo, desempenho e interfaces exigidos os requisitos (para o sistema e para o software) so documentados e revistos com o cliente Mtodos: Anlise Estruturada, Anlise Orientada a Objetos, Mtodos Formais PRODUTO: Especificao de Requisitos Anlise de Requisitos 3- PROJETO traduo dos requisitos do software para um conjunto de representaes que podem ser avaliadas quanto qualidade, antes que a codificao se inicie se concentra em 4 atributos do programa: Estrutura de Dados Arquitetura de Software Detalhes Procedimentais Caracterizao de Interfaces Atividades do Ciclo de Vida Clssico
Projeto de Fluxo de Dados
Projeto Orientado a Objetos
Projeto 4- CODIFICAO traduo das representaes do projeto para uma linguagem artificial resultando em instrues executveis pelo computador Atividades do Ciclo de Vida Clssico 5- TESTES Concentra-se: nos aspectos lgicos internos do software, garantindo que todas as instrues tenham sido testadas nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados. Atividades do Ciclo de Vida Clssico 6- MANUTENO provavelmente o software dever sofrer mudanas depois que for entregue ao cliente
Caracterizada como o iceberg Atividades do Ciclo de Vida Clssico Tipos de Manuteno Manuteno Corretiva: diagnstico e correo de erros Manuteno Adaptativa: adaptao do software para acomodar mudanas em seu ambiente externo (Hardware / Software) Manuteno Perfectiva: exigncia do cliente para acrscimos funcionais e de desempenho Manuteno Preventiva: melhorar a confiabiliade e manutenibilidade futura (tcnicas de engenharia reversa e reengenharia) Manuteno Problemas com o Ciclo de Vida Clssico e projetos reais raramente seguem o fluxo seqencial que o modelo prope e logo no incio difcil estabelecer explicitamente todos os requisitos. No comeo dos projetos sempre existe uma incerteza natural eo cliente deve ter pacincia. Uma verso executvel do software s fica disponvel numa etapa avanada do desenvolvimento Problemas com o Ciclo de Vida Clssico e Iteraes e dificuldades para o planejamento e a superviso eCongelamento de fases iniciais e comprometimento do atendimento aos requisitos reais do cliente -Visibilidade do processo - Embora o Ciclo de Vida Clssico tenha fragilidades, ele significativamente melhor do que uma abordagem casual ao desenvolvimento de software Vantagens do Ciclo de Vida Clssico APROPRIADO QUANDO + o cliente definiu um conjunto de objetivos gerais para o software, mas no identificou requisitos de entrada, processamento e sada com detalhes + desenvolvedor no tem certeza da eficincia de um algoritmo, forma da interao homem/mquina Prototipao Prototipao Conversar com o Cliente Construir/Revisar prottipo Reviso e Teste pelo Cliente fim incio construo produto refinamento prottipo avaliao prottipo construo prottipo projeto rpido obteno dos requisitos Atividades da Prototipao 1- OBTENO DOS REQUISITOS: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos so conhecidos e as reas que necessitam de definies adicionais 2- PROJETO RPIDO: representao dos aspectos do software que so visveis ao usurio (abordagens de entrada e formatos de sada) 3- CONSTRUO PROTTIPO: implementao do projeto rpido serve como o primeiro sistema - recomendado que se jogue fora futuramente 4- AVALIAO DO PROTTIPO: cliente e desenvolvedor avaliam o prottipo
Atividades da Prototipao 5- REFINAMENTO DOS REQUISITOS: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. Ocorre neste ponto um processo de iterao que pode conduzir a atividade 1 at que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito Atividades da Prototipao
6- CONSTRUO PRODUTO: identificados os requisitos, o prottipo deve ser descartado e a verso de produo deve ser construda considerando os critrios de qualidade Atividades da Prototipao Prototipao + processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construdo + idealmente, o modelo (prottipo) serve como um mecanismo para identificar os requisitos de software +prottipo em papel ou sistema que retrata a interao com o usurio +prottipo que implemente algumas funes exigidas + Prottipo serve como mecanismo para identificar os requisitos do software ecliente no sabe que o software que ele v no considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. no aceita bem a idia que a verso final do software vai ser construda e fora a utilizao do prottipo como produto final
edesenvolvedor freqentemente faz uma implementao comprometida (utilizando o que est disponvel) com o objetivo de produzir rapidamente um prottipo. Depois de um tempo ele familiariza com essas escolhas, e esquece que elas no so apropriadas para o produto final Problemas com a Prototipao -ainda que possam ocorrer problemas, a prototipao um ciclo de vida eficiente. -a chave definir as regras do jogo logo no comeo -o cliente e o desenvolvedor devem ambos concordar que o prottipo seja construdo para servir como um mecanismo a fim de definir os requisitos RAD (Rapid Application Development) Adaptao do sequencial Modelo de desenvolvimento de software incremental que enfatiza um ciclo de desenvolvimento bastante curto (60 a 90 dias) Desenvolvimento em equipe (team) e modular Fases: Modelagem do Negcio, Modelagem dos Dados, Modelagem do Processo, Gerao da Aplicao, Teste e Turnover Modelos Evolutivos So iterativos Desenvolvendo novas verses ... Modelo Espiral acopla a natureza iterativa do modelo de prototipao com os aspectos controlados e sistemticos do modelo sequencial Modelo Incremental combina elementos do modelo sequencial com a filosofia iterativa do modelo de prototipao, liberao por incrementos Ciclo de Vida em Espiral Engloba as melhores caractersticas do ciclo de vida Clssico como o da Prototipao, adicionando um novo elemento: a ANLISE DOS RISCOS Segue a abordagem de passos sistemticos do Ciclo de Vida Clssico incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real Usa a Prototipao, em qualquer etapa da evoluo do produto, como mecanismo de reduo de riscos
deciso de continuar ou no na direo de um sistema concludo avaliao do cliente engenharia anlise dos riscos planejamento Atividades do Ciclo de Vida em Espiral 1- PLANEJAMENTO: determinao dos objetivos, alternativas e restries 2- ANLISE DE RISCO: anlise das alternativas e identificao / resoluo dos riscos 3- CONSTRUO: desenvolvimento do produto no nvel seguinte 4- AVALIAO DO CLIENTE: avaliao do produto e planejamento das novas fases Comentrios sobre o Ciclo de Vida em Espiral uma abordagem realstica para o desenvolvimento de software em grande escala. usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva. pode ser difcil convencer os clientes que uma abordagem "evolutiva" controlvel exige considervel experincia na determinao de riscos e depende dessa experincia para ter sucesso A cada iterao ao redor da espiral, verses progressivamente mais completas do software so construdas o modelo relativamente novo e no tem sido amplamente usado Comentrios sobre o Ciclo de Vida em Espiral Modelo Incremental Cada seqncia linear produz produz uma liberao por incremento do software Exemplo: Processador de Texto Primeiro incremento: ncleo do produto Em cada incremento: entrega de um produto operacional
DBC - Desenvolvimento Baseado em Componentes Evoluo da Tecnologia OO Adaptao do modelo espiral para o desenvolvimento de software Modelo de Componentes: CORBA (Common Object Request Broker Architecture), COM (Component Object Model - Microsoft), UML Componentes so construdos/empacotados para serem reutilizados em diferentes aplicaes (Reuso)
Modelo de desenvolvimento Concorrente Engenharia concorrente (1994) - aplicaes cliente/servidor Representado esquematicamente como uma srie de atividades tcnicas, tarefas e os estados associados a elas Atividades concorrentemente em diferentes estados Ex: Atividade de Engenharia do ModeloEspiral tarefas: prototipao, anlise, especificao de requisitos e projeto Modelo de Mtodos Formais Atividades que conduzem a uma especificao matemtica formal Notao matemtica rigorosa: especificar, desenvolver e verificar/analisar Eliminar ambiguidade, inconsistncia, incompletitude Abordagem: engenharia de software Cleanroom (sala limpa) Consomem tempo e custo Tcnicas de 4 a Gerao Concentra-se na capacidade de se especificar o software a uma mquina em um nvel que esteja prximo linguagem natural. Engloba um conjunto de ferramentas de software que possibilitam que: = o sistema seja especificado em uma linguagem de alto nvel e =o cdigo fonte seja gerado automaticamente a partir dessas especificaes Tcnicas de 4 a Gerao No h muito o que contestar:
= Quanto mais alto o nvel em que o software pode ser especificado a uma mquina, mais rapidamente o programa pode ser construdo
Ferramentas do ambiente de desenvolvimento de software de 4 a Gerao O ambiente de desenvolvimento de software que sustenta o ciclo de vida de 4 a gerao inclui as ferramentas: - linguagens no procedimentais para consulta de banco de dados - gerao de relatrios - manipulao de dados - interao e definio de telas - gerao de cdigos - capacidade grfica de alto nvel - capacidade de planilhas eletrnicas Obteno dos Requisitos Estratgia de Projeto Implementao usando 4GL Testes Atividades das Tcnicas de 4 a
Gerao 1- OBTENO DOS REQUISITOS: o cliente descreve os requisitos os quais so traduzidos para um prottipo operacional eo cliente pode estar inseguro quanto aos requisitos eo cliente pode ser incapaz de especificar as informaes de um modo que uma ferramenta 4GL possa consumir eas 4GLs atuais no so sofisticadas suficientemente para acomodar a verdadeira "linguagem natural" 2- ESTRATGIA DE "PROJETO": para pequenas aplicaes possvel mover-se do passo de Obteno dos Requisitos para o passo de Implementao usando uma linguagem de quarta gerao Para grandes projetos necessrio desenvolver uma estratgia de projeto. De outro modo ocorrero os mesmos problemas encontrados quando se usa abordagem convencional (baixa qualidade, manutenibilidade ruim, m aceitao do cliente) Atividades das Tcnicas de 4 a
Gerao 3- IMPLEMENTAO USANDO 4GL: os resultados desejados so representados de modo que haja gerao automtica de cdigo . Deve existir uma estrutura de dados com informaes relevantes e que seja acessvel pela 4GL 4- TESTE: o desenvolvedor deve efetuar testes e desenvolver uma documentao significativa. O software desenvolvido deve ser construdo de maneira que a manuteno possa ser efetuada prontamente. Atividades das Tcnicas de 4 a
Gerao Comentrios sobre as Tcnicas de 4 a Gerao PROPONENTES: reduo dramtica no tempo de desenvolvimento do software (aumento de produtividade) OPONENTES: as 4GL atuais no so mais fceis de usar do que as linguagens de programao = o cdigo fonte produzido ineficiente = a manutenibilidade de sistemas usando tcnicas 4G ainda questionvel Mudana na natureza de desenvolvimento de software mtodos convencionais aplicao de tcnicas de 4 a
Gerao demanda global demanda por software 1970 1980 1990 2000 Combinao dos Mtodos de Ciclo de Vida obteno preliminar dos requisitos modelo espiral
tcnicas 4G
prototipao
anlise dos requisitos
projeto
codificao
testes
manuteno
tcnicas 4G tcnicas 4G
modelo espiral: ensima interao
sistema completo prototipao ensima interao Engenharia de Software uma viso genrica O processo de desenvolvimento de software contm 3 fases genricas, independentes do modelo de engenharia de software escolhido: DEFINIO DESENVOLVIMENTO MANUTENO FASE DE DEFINIO: o qu ser desenvolvido Anlise do Sistema: define o papel de cada elemento num sistema baseado em computador, atribuindo em ltima anlise, o papel que o software desempenhar. Planejamento do Projeto de Software: assim que o escopo do software estabelecido, os riscos so analisados, os recursos so alocados, os custos so estimados, e tarefas e programao de trabalho so definidas. Anlise de Requisitos: o escopo definido para o software proporciona uma direo, mas uma definio detalhada do domnio da informao e da funo do software necessria antes que o trabalho inicie. Engenharia de Software uma viso genrica FASE DE DESENVOLVIMENTO: como o software vai ser desenvolvido Projeto de Software: traduz os requisitos do software num conjunto de representaes (algumas grficas, outras tabulares ou baseadas em linguagem) que descrevem a estrutura de dados, a arquitetura do software, os procedimentos algortmicos e as caractersticas de interface Codificao: as representaes do projeto devem ser convertidas numa linguagem artificial (a linguagem pode ser uma linguagem de programao convencional ou uma linguagem no procedimental) que resulte em instrues que possam ser executadas pelo computador Realizao de Testes do Software: logo que o software implementado numa forma executvel por mquina, ele deve ser testado para que se possa descobrir defeitos de funo, lgica e implementao Engenharia de Software uma viso genrica FASE DE MANUTENO: concentra-se nas mudanas que ocorrero depois que o software for liberado para uso operacional C Correo C Adaptao C Melhoramento Funcional Engenharia de Software uma viso genrica Correo: mesmo com as melhores atividades de garantia de qualidade de software, provvel que o cliente descubra defeitos no software. A manuteno corretiva muda o software para corrigir defeitos. Adaptao: com o passar do tempo, o ambiente original (por exemplo a CPU, o sistema operacional e perifricos) para o qual o software foi desenvolvido provavelmente mudar. A manuteno adaptativa muda o software para acomodar mudanas em seu ambiente. Engenharia de Software uma viso genrica Melhoramento Funcional: a medida que o software usado, o cliente/usurio reconhecer funes adicionais que oferecero benefcios. A manuteno perfectiva estende o software para alm de suas exigncias funcionais originais. Engenharia de Software uma viso genrica ATIVIDADES DE PROTEO as fases e etapas correlatas descritas so complementadas por uma srie de atividades de proteo. Revises: efetuadas para garantir que a qualidade seja mantida medida que cada etapa concluda. Documentao: desenvolvida e controlada para garantir que informaes completas sobre o software estejam disponveis para uso posterior. Controle das Mudanas: institudo de forma que as mudanas possam ser aprovadas e acompanhadas. Engenharia de Software uma viso genrica Concluso ENGENHARIA DE SOFTWARE pode ser vista como uma abordagem de desenvolvimento de software elaborada com disciplina e mtodos bem definidos. .....a construo por mltiplas pessoas de um software de mltiplas verses (Parnas 1987)