Ciclo de vida Ciclo de vida: fases x atividades
Transcrição
Ciclo de vida Ciclo de vida: fases x atividades
Ciclo de vida • Fase de definição – Análise e Especificação – Estudo de Viabilidade – Estimativas Planejamento • Fase de desenvolvimento – Design – Implementação e integração – Verificação e Validação • Fase de operação – Distribuição, Instalação e Configuração – Utilização e administração – Manutenção – corretiva, evolutiva e adaptativa • Fase de retirada – Migração, reengenharia, engenharia reversa Engenharia de Software, © 2006 Jair C Leite Ciclo de vida: fases x atividades Atividades (variam de acordo com o modelo de processo) Possível distribuição de tarefas em cada Atividade x Fases migração evolução manutenção testes Implementação design especificação definição desenvolvimento operação retirada Fases (tempos) Engenharia de Software, © 2006 Jair C Leite Fase de Definição • deve-se analisar os requisitos, recursos e restrições para • apresentar soluções, • estudar a viabilidade, • planejar e gerenciar o desenvolvimento • a partir de estimativas e análise de riscos que se utilizam de métricas • Esta fase encerra-se com o contrato de desenvolvimento. Engenharia de Software, © 2006 Jair C Leite Fase de desenvolvimento • Design de Software – Design conceitual, design da interface de usuário, design da arquitetura de software, design de algoritmos e estruturas de dados • Implementação e integração – Codificação, compilação, integração e verificação de programas (testes, inspeção, depuração) • Verificação da qualidade – Testes beta, avaliação de usabilidade, avaliação de desempenho, etc. Engenharia de Software, © 2006 Jair C Leite Fase de Operação • • • • Distribuição e entrega Instalação e configuração Utilização Manutenção – Corretiva – correção de erros – Evolutiva ou adaptativa – novas versões • Novos requisitos • novas situações de operação – hardware, sistemas operacionais Engenharia de Software, © 2006 Jair C Leite Especificação de software (definição) • Processo de estabelecer quais serviços são necessários e quais as restrições estão associados ao desenvolvimento e operação do sistema. • Processo de Engenharia de Requisitos – Estudo de viabilidade • Econômica – relação custo/benefício; • Técnica – tecnologia e capacitação; • Jurídica – aspectos legais. – Levantamento e análise de requisitos • Entrevista, observação, reuniões – Especificação de requisitos • Documento contendo os requisitos do usuário e do sistema – funcionais e não-funcionais – Validação de requisitos • Avaliação do documento de requisitos – pertinência, consistência e integralidade. Engenharia de Software, © 2006 Jair C Leite Processo de Engenharia de Requisitos Feasibility study Requirements elicitation and analysis Requir ements specification Feasibility report Requirements validation System models User and system requirements Requirements document Fonte: Ian Sommerville Engenharia de Software, © 2006 Jair C Leite Design de Software • Processo de converter a especificação num conjunto de modelos que descrevem a estrutura e o comportamento do software, particionado em unidades abstratas. • Descreve como o software será realizado. • Modelos de processo mais atuais consideram que o design pode ocorrer simultaneamente com a especificação e com a implementação • Atividades - Visão tradicional: – Arquitetura, Especificação abstrata; Design das interfaces; Design de componentes; Design de algoritmos e estruturas de dados; • Atividades – Visão moderna: – Todas as anteriores e mais: Design conceitual e design das interfaces de usuário. Muitas vezes ocorrem na definição. Engenharia de Software, © 2006 Jair C Leite Processo de design de software Requirements specification Design activities Architectural design Abstract specification Interface design Component design Data structure design Algorithm design System architecture Software specification Interface specification Component specification Data structure specification Algorithm specification Design products Fonte: Ian Sommerville Engenharia de Software, © 2006 Jair C Leite Implementação: programação e depuração • Traduzir o design num programa removendo os erros. • A codificação deve refletir a estrutura e o comportamento descrito no design. • As unidades abstratas deve ser codificadas independentemente e depois integradas. • É necessário um controle e gerenciamento de versões. • Não existe um modelo específico para o processo de programação. • A depuração ocorre durante a programação utilizando algumas técnicas e ferramentas. Engenharia de Software, © 2006 Jair C Leite Verificação e Validação de software • Verificação e validação destina-se a mostrar – que o sistema está de acordo com a especificação – que ele atende às expectativas de clientes e usuários. • Diferentes formas de verificação – Inspeção analítica e revisão de modelos, documentos e código fonte. – Testes de correção, desempenho, confiabilidade robustez, usabilidade • Diferentes etapas – Desde a definição até a operação do software. Engenharia de Software, © 2006 Jair C Leite Testes e o processo de software Requir ements specification System specification System integration test plan Acceptance test plan Service System design Acceptance test Detailed design Sub-system integration test plan System integration test Module and unit code and tess Sub-system integration test Fonte: Ian Sommerville Engenharia de Software, © 2006 Jair C Leite O processo de testes Unit testing Module testing Sub-system testing System testing Acceptance testing Component testing Integration testing Fonte: Ian Sommerville User testing Engenharia de Software, © 2006 Jair C Leite Evolução de software • O software normalmente precisa evoluir, por variados motivos: – Mudanças no domínio de aplicação implicam em novos requisitos – Surgimento de novas tecnologias de software e hardware • A evolução de um software para uma nova versão ter: – Manutenção corretiva – Migração para uma plataforma mais avançada – Incorporação de novas funcionalidades Define system requirements Assess existing systems Existing systems Fonte: Ian Sommerville Propose system changes Modify systems New system Engenharia de Software, © 2006 Jair C Leite Ferramentas e ambientes de software • CASE – Computer-aided Software Engineering • Apóiam diversas atividades do desenvolvimento e do gerenciamento de software. • Tipos de ferramentas – – – – – – – – Planejamento – PERT, estimativas, planilhas Editores – de texto, de diagramas e modelos, de programas Compiladores, integradores e depuradores Ferramentas de prototipação visual Ferramentas de testes Ferramentas de documentação Ferramentas de reengenharia Ferramentas de requisitos – descrição, validação, rastreamento, etc. – Gerenciadores de configuração e mudanças Engenharia de Software, © 2006 Jair C Leite Classificação de tecnologias CASE CASE technology Tools Editors Compilers Workbenches File comparators Analysis and design Multi-method workbenches Integrated environments Programming Single-method workbenches Environments Process-centred environments Testing General-purpose workbenches Language-specific workbenches Engenharia de Software, © 2006 Jair C Leite