You are on page 1of 37

Aula 01 - Introduo

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

Robusto e altamente disponvel Eficiente

A loja no pode deixar de cobrar por produtos comprados pelo consumidor

A loja no pode parar de vender

O consumidor no pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memria, rede)

Amigvel e fcil de usar

A empresa quer investir pouco em treinamento

Altamente extensvel e adaptvel


A empresa tem sempre novos requisitos (para ontem!) A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.)

Reusvel

Vrias empresas precisam usar partes de um mesmo sistema

10

Aberto, compatvel, de fcil integrao com outros sistemas

A empresa j tem controle de estoque, fidelizao, etc. A empresa opta por uma determinada plataforma

Portvel e independente de plataforma (hw e sw)

Baixo custo de instalao e atualizao

A empresa tem um grande nmero de PDVs

11

Custo de desenvolvimento reduzido


A empresa consumidora quer investir pouco em software A empresa produtora tem que oferecer software barato

Tempo de desenvolvimento reduzido

Suporte rpido s necessidades do mercado

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

Qualidade de software e produtividade garantem:


Disponibilidade de servios essenciais Segurana de pessoas Competitividade das empresas

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

Cascata Modelos Iterativos


Espiral Incremental (ex: do RUP)

...

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

Notao com sintaxe e semntica bem definidas

com representao grfica ou textual

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

Conjunto de mtodos + processo

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

Processos de Software existentes Processo que iremos utilizar

38

You might also like