Mostrando postagens com marcador Fundamentos da Engenharia de Software. Mostrar todas as postagens
Mostrando postagens com marcador Fundamentos da Engenharia de Software. Mostrar todas as postagens

2 de jan. de 2010

Processo e Modelo de Processo



Olá pessoal, hoje abordarei a diferença entre um modelo de processo de software e um processo de software. Exemplificarei também, dois modos pelos quais um modelo de processo de software pode ser útil para identificar possíveis aprimoramentos no processo.

Um processo de software é o que define quais atividades devem ser realizadas dentro de uma produção de sistemas, define também as pessoas envolvidas e os artefatos a serem gerados. Já o modelo de processo de software define a sequência com que as atividades são executadas e quais as pessoas estão envolvidas e quais os artefatos são gerados por cada atividade.

Um processo de software normalmente é dividido em vários processos menores para se melhor organizar a produção de software. Existem algumas abordagens ou ferramentas sugeridas pela engenharia de software que, à partir delas, é possível se identifcar a acurácia de um modelo de processo de software, e assim se sugerir as possíveis melhorias.

Sugestões de aprimoramento à partir de um modelo podem ser encontradas quando o mesmo é expresso na forma de "papel/ação", por exemplo, porque assim é viável identificar se os papéis estão bem distribuídos por recursos humanos do projeto. Podem ser identificados também no modelo de fluxo de dados, uma outra abordagem na qual observamos se as transformações nos artefatos estão gerando a evolução desejada ao produto final.

Bom, é isso pessoal. Fiquem à vontade para comentar a respeito. Concluo este post com a seguinte frase aprendida: é em tempos de crise que encontramos as melhores oportunidades de rever nosso processo.

Um grande abraço e até o próximo post! ;)

.

Os 4 Grande Atributos dos Produtos de Software



O tópico de hoje aborda os quatro principais atributos que todos os produtos de software devem possuir. Sem tais atributos, não podemos afirmar que o software seja de qualidade.

Estamos falando de Facilidade de Manutenção (Manutenibilidade), Confiança, Eficiência e Usabilidade. Segue abaixo o conceito de cada um dos atributos segundo o estudioso Ian Sommerville:

- Manutenibilidade: O software deve ser escrito de modo que possa evoluir para atender às necessidades de mudança dos clientes. É um atributo fundamental, pois a mudança de software é uma consequência inevitável de um ambiente de negócios em constante mutação;
- Confiança: O nível de confiança de um software tem uma série de características, incluindo confiabilidade, proteção e segurança. Um software confiável não deve causar danos físicos ou econômicos no caso de falha no sistema.
- Eficiência: O software não deve disperdiçar os recursos do sistema, como memória e ciclos do processador. Portanto, a eficiência inclui tempo de resposta, tempo de processamento, utilização de memória e etc;
- Usabilidade: O software deve ser usável, sem esforço excessivo, pelo tipo de usuário para o qual ele foi projetado. Isso significa que ele deve apresentar uma interface com o usuário e documentação adequadas.

Complementando com algumas outras características, sugiro também a Portabilidade, Rastreabilidade, Facilidade de Integração a Outros Sistemas e Aderência às Necessidades de Negócio (muito importante!). E vocês, podem sugerir mais alguns?

Um grande abraço a todos e até o próximo post! ;)

.

Software Genérico X Software Por Encomenda


Hoje gostaria de comentar e esclarecer os principais conceitos do que diferenciam o desenvolvimento de produto genérico de software e o desenvolvimento de software sob encomenda e refletir um pouco sobre o rumo ao qual estes conceitos estão tomando, evidenciando a proximidade entre ambos.

Produtos genéricos, ou produtos de caixinha como muitas vezes são conhecidos, são produzidos por uma organização de desenvolvimento e distribuídos no mercado a quem quiser comprá-los. Já os sistemas sob encomenda são vendidos a um cliente específico e é desenvolvido sob a ótica da necessidade de negócio desse cliente.

A diferença entre os dois está, a cada dia que passa, se tornando mais tênue, já que os sistemas genéricos estão sendo frequentemente customizados por seus compradores. Um forte exemplo disso são os sistemas ERP (Enterprise Resource Planning) : que empresa hoje não o usa de maneira customizada?

Um grande abraço a todos e até o próximo post! ;)

.

Por que o software é mais que um programa executável?

Os programas de software são mais do que os softwares executados pelos usuários porque para a sua produção são envolvidas diversas atrividades intrínsecas ao tipo de software desenvolvido.

Nos sistemas em que é utilizada uma abordagem cascata, por exemplo, as atividades são distintas e bem definidas e os seus custos são medidos separadamente e as atividades de teste e integração são mais caras. Na abordagem iterativa as mesmas atividades são realizadas mas em paralelo com a atividade de desenvolvimento. Já na abordagem por componentes os maiores custos se baseiam na integração e testes.

Portanto, o software é muito mais do que o produto executado pelo usuário final em termos de custo, já que muitas outras atividades e pessoas são necessárias para que se chegue ao produto.

.

29 de dez. de 2009

Afinal, o que é Engenharia de Software?



Existem atualmente inúmeras definições para a Engenharia de Software, sendo que todas elas convergem para o mesmo ponto de vista, explicado algumas vezes, com maior ou menor riqueza de detalhes. Ao longo deste artigo objetivei detalhar as que julguei mais interessantes.

Segundo a definição oficial do IEEE (Instituto de Engenheiros Eletricistas e Eletrônicos), conforme a Computer Society, seu subgrupo destinado a questões ligadas aos computadores, a Engenharia de Software baseia-se no estudo e aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software.

Mas vamos voltar um pouco mais no tempo, mais específicamente na conferência que idealizou a criação da Engenharia de Software, patrocinada pelo comitê de ciências da NATO em 1968, para buscarmos uma outra definição bastante interessante. Fritz Bauer propôs o seguinte enfoque para as atividades de desenvolvimento de software: "A criação de sólidos princípios de engenharia afim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais".

Segundo a definição também de um dos maiores estudiosos da Engenharia de Software, Ian Sommerville, a Engenharia de Software é uma disciplina de engenharia relacionada com todos os aspectos de produção de software, desde os estágios iniciais de especificação do sistema até a sua manutenção, ou seja, mesmo depois que este entrar em operação.

Portanto, a Engenharia de Software atua em um papel primordial dentro dos ciclos de vida do projeto e do produto de software, que é o de dar uma maior qualidade e produtividade ao software, baseando-se nos estudos e padrões de engenharia mais recomendados pela área de desenvolvimento de software.

Bom pessoal, é isso! Fiquem à vontade para postar novas definições que acharem interessantes. ;)

.