A ciência do Projeto de Software. Profa. Reane Franco Goulart

Documentos relacionados
4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

Algoritmos Computacionais

PARTE I - FUNDAMENTOS DE PROJETOS DE COMPUTADORES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Gerência e Planejamento de Projeto. Engenharia de Software Profa. Elisa Yumi Nakagawa 1 o semestre de 2016

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015

Lógica de Programação, Algoritmos e Estruturas de Dados

LO GICA E TE CNICA DE PROGRAMAC ÃO. TÁSSIO JOSÉ GONÇALVES GOMES

Engenharia de Software II

Arquitetura de Software. Fatec ES III - Prof. Dinis 1

Prof. Luiz A. Nascimento

Fundamentos de Programação de Computadores Linguagem C Função Unidade 08 Linguagem C - Função 1/18

Introdução à Programação extrema (XP)

FATORES E MÉTRICAS DE QUALIDADE

PROGRAMAÇÃO EXTREMA - XP

Análise e Projeto de Sistemas

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

Introdução à Computação: Máquinas Multiníveis

Paradigmas de Linguagens

LO GICA E TE CNICA DE PROGRAMAC ÃO. TÁSSIO JOSÉ GONÇALVES GOMES

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Introdução a programação Visão geral

Arquitetura e Organização de computadores

Java Básico. Aula 1 por Thalles Cezar

O PAPEL DO ANALISTA DE NEGÓCIOS NA AGILIDADE. Ainda precisamos de Analistas de Negócios?

Princípios da Engenharia de Software aula 03

INFORMÁTICA: Informação automática

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Professor Emiliano S. Monteiro

Estruturas de Repetição

Introdução à Programação de Computadores Fabricação Mecânica

Working 03 : Conceitos Básicos I

ORGANIZAÇÃO DE COMPUTADORES

GERENCIAMENTO DO TEMPO DO PROJETO


Aula I Introdução à Lógica de Programação

Programação Estruturada Aula - Introdução a Linguagem C

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Marcelo Henrique dos Santos

Estruturas de Repetição

3 Introdução aos algoritmos

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

Rational Unified Process (RUP)

Aula 06 - Máquina Multinível e Von Neumann

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

AULA 01: APRESENTAÇÃO

Profa. Reane Franco Goulart

Arquitetura e Organização de Computadores

INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO. ANÁLISE E DESENVOLVIMENTO DE SISTEMAS/PARANGABA PROF. MS. RONNISON REGES VIDAL Ceará, 01 de fevereiro de 2017

Desenvolvimento de Aplicações Desktop

Engenharia de Software

Análise de Requisitos

Introdução a Algoritmos - Revisão

Marcelo Henrique dos Santos

Introdução à Computação

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Linguagem de Programação I. Aula 10 Funções

Algoritmos. Laura Goulart. 11 de Dezembro de 2018 UESB. Laura Goulart (UESB) Algoritmos 11 de Dezembro de / 12

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

Introdução aos Algoritmos

Algoritmos e Técnicas de Programação

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

As Visões. Visões arquiteturais (revisão)

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

1 TECNOLOGIA ELEMENTAR CAPÍTULO 1 E-books PCNA. Vol. 1 TECNOLOGIA ELEMENTAR CAPÍTULO 1 INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO C.

Evolução do Software e os Tipos de Softwares Existentes. Profa. Reane Franco Goulart

Introdução aos Algoritmos

Análise de Sistemas Aula 4

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

AVALIAÇÃO DE INTERFACES

Introdução à plataforma Java

Análise e projeto de sistemas

semana 03/05/2014 a 09/05/2014 semana 10/05/2014 a 16/05/2014 semana 17/05/2014 a 23/05/ e 25/05/2014

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

LINGUAGEM E TECNICAS DE PROGRAMAÇÃO

Arquiteturas RISC e CISC. Adão de Melo Neto

COMISSIONAMENTO DE SISTEMAS DE AUTOMAÇÃO

Projetos Curriculares LEGO Education WeDo 2.0

Análise do problema. Desenvolvimento de programas. Desenvolvimento do algoritmo. Análise do problema

Arquitetura de Computadores

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Introdução à Ciência da Computação ICC0001 Prof. Diego Buchinger

1.1 Linguagens de Programação

Algoritmo de Programação. Aula1

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

O L A. Questionário OLA. Avaliação de Liderança Organizacional. Versão Portuguesa. Instruções Gerais

Ética. Interação com o público interno e externo. Professor Fidel Ribeiro.

Banco de Dados. Professor: Marcelo Machado Cunha IFS Campus Aracaju

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Agenda TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS. Aula 3 21/08/2012

Métodos de implementação de linguagens. Kellen Pinagé

MODELOS DE PROCESSO TÉCNICAS INTELIGENTES QUE APOIAM A CONSTRUÇÃO DE UM SOFTWARE

Puca Huachi Vaz Penna

Engenheiros de software (algumas vezes conhecidos no mundo da TI como engenheiros de sistemas ou analistas ) e outros interessados no projeto

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Transcrição:

A ciência do Projeto de Software Profa. Reane Franco Goulart

O que é a ciência do projeto de software? É a ciência para elaborar planos e tomar decisões sobre software. Auxilia as pessoas a tomar decisões como: Qual deveria ser a estrutura do código de nosso programa? É mais importante focar em ter um programa rápido ou um programa cujo código seja de fácil leitura? Para nossas necessidades, qual linguagem de programação deveríamos usar?

Projeto de Software não aborda assuntos como!!! Qual deveria ser a estrutura da empresa? Quando deveríamos ter reuniões de equipe? Quais horas do dia os programadores deveriam trabalhar? Como deveríamos avaliar o desempenho de nossos programadores?

Projeto de Software não aborda assuntos como!!! Essas não são decisões sobre seu projeto, são decisões sobre você ou sua empresa. É importante tomar essas decisões de modo adequado muitos projetos de software falharam porque não tinham um bom gerenciamento.

Como tomar as decisões técnicas corretas sobre o software? Qualquer coisa que envolve a arquitetura de seu sistema de software ou as decisões técnicas que você toma enquanto cria o sistema se enquadra na categoria de projeto de software.

Pessoas envolvidas nas decisões Todo programador que está trabalhando em um projeto de software está envolvido em projeto. O desenvolvedor líder está encarregado de projetar a arquitetura geral do programa inteiro. Os programadores seniores estão encarregados de projetar suas próprias grandes áreas. Os programadores juniores estão encarregados de projetar suas partes do programa, mesmo que sejam tão simples quanto uma parte de um arquivo.

Pessoas envolvidas nas decisões Todas as pessoas que escrevem software são projetistas. Cada pessoa em uma equipe de software é responsável por se certificar de que seu código está bem projetado. Um projetista deve sempre estar disposto a ouvir sugestões e feedback, porque os programadores normalmente são pessoas que têm boas ideias. Qualquer decisão deve ser tomada por uma pessoa, não por um grupo de pessoas.

Como tornar a ciência de projeto de software em CIÊNCIA? O projeto de software não é uma ciência. O que é uma ciência? Sua definição é um pouco mais complexa, para que um assunto seja uma ciência, ele tem que passar por certos testes: Conhecimento coletado, ou seja, tem que ser composta de fatos - não de opiniões esses fatos devem ter sido reunidos em pesquisa em livros, artigos, dentre outros. Conhecimento deve ter algum tipo de organização dividido em categorias e as partes devem estar relacionadas umas às outras em termos de importância.

Como tornar a ciência de projeto de software em CIÊNCIA? Uma ciência deve conter verdades gerais ou leis básicas. Deve dizer como fazer algo no universo físico como é a aplicação no trabalho ou na vida. Uma ciência é descoberta e comprovada por meio de método científico. No mundo do software, tem-se muito conhecimento; ele foi coletado e também organizado. Todas as partes exigidas para se fazer uma ciência.

Leis Fundamentais do Projeto de Software Existem duas áreas importantes que devem ser observadas no desenvolvimento do projeto de software: leis claramente declaradas e verdades inabaláveis que nunca falharam. Desenvolvedores de softwares experientes sabem qual é a coisa certa a fazer, mas por que aquela é a coisa certa? O que torna algumas decisões certas e algumas decisões erradas?

Quais são as Leis Fundamentais do Projeto de Software? Existe um conjunto de definições, fatos, regras e leis para desenvolvimento de um software. Definições dizem o que algo é e como você o usaria. Fatos são apenas declarações verdadeiras sobre algo. Regras são declarações que abrange, algo específico e ajudam a orientar decisões, mas não o ajudam a prever o que acontecerá no futuro ou a descobrir outras verdades. As regras dizem se deve ou não tomar alguma decisão.

Quais são as Leis Fundamentais do Projeto de Software? Leis são fatos que serão sempre verdadeiros e abrangem uma ampla área de conhecimento. Elas ajudam a descobrir outras verdades importantes e permitem que você preveja o que acontecerá no futuro. De todas as leis são as mais importantes.

Quais são as Leis Fundamentais do Projeto de Software? Exemplo: Fato: diferença entre um mau e um bom programador é o entendimento: maus programadores não entendem o que estão fazendo, e bons programadores, sim. Regra: um bom programador deve fazer tudo o que puder para tornar o que ele escreve o mais simples possível a outros programadores. Definição: um programa é: uma sequencia de instruções dadas ao computador e as ações executadas por um computador como resultado de ter recebido instruções.

Quais são as Leis Fundamentais do Projeto de Software? Se a pessoa trabalha na área de desenvolvimento de software há muito tempo, possivelmente já se deparou com algumas dessas ideias antes. O que você já respondeu quando deparou com questões assim: Eu sabia que esse dado particular era comprovadamente verdadeiro? Eu sabia quão importante ele era?

Quais são as Leis Fundamentais do Projeto de Software? Eu poderia tê-lo comunicado claramente a outra pessoa para que ela o entendesse completamente? Eu entendi como ele se relacionava com outros dados na área de desenvolvimento de software? Se puder responder sim a algumas dessas perguntas, enquanto que antes dizia não ou talvez. Dessa forma você obteve um tipo específico de entendimento, e essa compreensão é uma parte enorme do que diferencia uma ciência de um mero conjunto de ideias.

Quais são as Leis Fundamentais do Projeto de Software? Vejam alguns exemplos no apêndice do livro: Apendice B - fatos - leis - regras - definicoes.pdf