Nesta aula voc ter uma viso sobre o que a engenharia de software, os seus objetivos e conceitos bsicos.
Captulo 1 (Software and Software Engineering) do livro Software Engineering A Practioners Approach (de Roger Pressman) Captulo 1 (Introduction) do livro Software Engineering (de Ian Sommerville)
Estudo ou aplicao de abordagens sistemticas, econmicas e quantificveis para o desenvolvimento, operao e manuteno de software de qualidade. Engenheiros de software devem adotar uma abordagem sistemtica e organizada para seu trabalho e usar ferramentas e tcnicas/mtodos apropriados dependendo do problema a ser solucionado, das restries de desenvolvimento e dos recursos disponveis
Programas de computador e documentao associada Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral
Controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados Produtividade no desenvolvimento, operao e manuteno de software Qualidade versus Produtividade Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados
6
A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invs de indivduos usa princpios de engenharia ao invs de arte, e inclui tanto aspectos tcnicos quanto no tcnicos
O software que satisfaz os requisitos solicitados pelo usurio. Deve ser fcil de manter, ter boa performance, ser confivel e fcil de usar Alguns atributos de qualidade
Manutenibilidade Eficincia
O software deve evoluir para atender os requisitos que mudam O software no deve desperdiar os recursos do sistema O software deve ser fcil de usar pelos usurios para os quais ele foi projetado
Usabilidade
Correto
O consumidor no pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memria, rede)
Reusvel
10
A empresa j tem controle de estoque, fidelizao, etc. A empresa opta por uma determinada plataforma
11
12
Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da distribuio dos custos entre vrios clientes. Reuso, extensibilidade e adaptabilidade so essenciais para viabilizar tal distribuio.
13
Produtores Consumidores
14
25% dos projetos so cancelados o tempo de desenvolvimento bem maior do que o estimado 75% dos sistemas no funcionam como planejado a manuteno e reutilizao so difceis e custosas os problemas so proporcionais a complexidade dos sistemas
15
Essncias
Complexidade dos sistemas Dificuldade de formalizao
Acidentes
M qualidade dos mtodos, linguagens, ferramentas, processos, e modelos de ciclo de vida Falta de qualificao tcnica
16
Elementos
Modelos do ciclo de vida do software Linguagens Mtodos Ferramentas Processos
Atividades
Modelagem do negcio Elicitao de requisitos Anlise e Projeto Implementao Testes Distribuio Planejamento Gerenciamento Gerncia de Configurao e Mudanas Manuteno
17
Atividades
Artefatos Plano de Negcios Modelagem do negcio Plano de Projeto Elicitao de requisitos Plano de Riscos Anlise e Projeto Documento de Requisitos Implementao Mapeamentos A&P Testes Distribuio Documento de Caso de Uso Planejamento Documento de Arquitetura Gerenciamento Classes Gerncia de Configurao e Documento de Testes Mudanas Documento de Validao Manuteno Manual do Sistema
18
Uma representao abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produo e manuteno de software
19
...
20
21
22
Requisitos de sistema SEMPRE evoluem durante curso de um projeto. Assim a iterao do processo sempre faz parte do desenvolvimento de grandes sistemas Iteraes podem ser aplicadas a quaisquer dos modelos de de ciclo de vida Duas abordagens (relacionadas)
Desenvolvimento espiral Desenvolvimento incremental
23
Acrescenta aspectos gerenciais ao processo de desenvolvimento de software. anlise de riscos em intervalos regulares do processo de desenvolvimento de software planejamento controle tomada de deciso O processo representado como uma espiral em vez de uma seqncia de atividades Cada volta na espiral representa uma fase no processo No h fases fixas como especificao ou projeto voltas na espiral so escolhidas dependendo do que requerido Riscos so avaliados explicitamente e resolvidos ao
24
25
Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega so divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida Requisitos dos usurios so priorizados e os requisitos de mais alta prioridade so includos nas iteraes iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores
26
27
Usada para descrever os artefatos gerados durante o desenvolvimento de software Exemplos: UML, Java
28
Descrio sistemtica de como deve-se realizar uma determinada atividade ou tarefa A descrio normalmente feita atravs de padres e guias Exemplos: Mtodo para descoberta das classes de anlise no RUP.
29
Prov suporte computacional a um determinado mtodo ou linguagem Ambiente de desenvolvimento: conjunto de ferramentas integradas (CASE) Exemplos: Rational Rose, JBuilder
30
Conjunto de atividades
bem definidas com responsveis com artefatos de entrada e sada com dependncias entre as mesmas e ordem de execuo com modelo de ciclo de vida
31
Um conjunto de atividades cujo objetivo o desenvolvimento ou a evoluo do software Conjunto coerente de atividades para especificao, projeto, implementao e teste de sistemas de software
32
33
Engenharia de software uma disciplina de engenharia que est envolvida com todos os aspectos da produo de software Produtos de software consistem de programas desenvolvidos e documentao associada. Alguns atributos de qualidade do produto so manutenibilidade, eficincia e usabilidade O processo de software consiste nas atividades que so envolvidas no desenvolvimento de produtos de software
34
Mtodos so formas organizadas de produzir software. Eles incluem sugestes para o processo a ser seguido, as notaes a serem usadas, regras que governam as descries do sistema que so produzidas e diretrizes de projeto Ferramentas CASE so sistemas de software que so projetados para suportar as atividades rotineiras no processo de software, como edio de diagramas de projeto e verificao de consistncia dos diagramas
35
Daniel M. Berry. Myths and Realities in Software Development. W. Wayt Gibbs. Software's chronic crisis. Scientific American, September 1994. Alan Joch. How software doesn't work. Byte, December 1995.
36
38