• Nenhum resultado encontrado

Software and systems engineering

N/A
N/A
Protected

Academic year: 2022

Share "Software and systems engineering"

Copied!
55
0
0

Texto

(1)

Software and systems engineering

Paulo Borba

Informatics Center

Federal University of Pernambuco

phmb@cin.ufpe.br ◈ twitter.com/pauloborba

(2)

Introduction to

software and systems

engineering

(3)

Engineering is…

the application of science

to the design, building and use of machines, construction, etc.

The Concise Oxford Dictionary

(4)

System =

Software +

People + Data + Hardware

(computers, sensors, phones, watches,

drones, etc.)

(5)

Quality and

Productivity

Software and systems

engineering is concerned with…

(6)

Serious software and systems development

http://www.home-dzine.co.za/diy/diy-doghouse.htm

http://silviarangel.wix.com/fotografa

(7)

It’s not about small versus large

http://transmissionsmedia.com/the-inexplicable-precision-in-the-construction-of-the-great-pyramid-at-giza/

(8)

Most software today is very much like an Egyptian pyramid with millions of bricks piled on

top of each other, with no

structural integrity, but just done by brute force and thousands of

slaves.

Alan Kay

http://en.wikipedia.org/wiki/Alan_Kay

(9)

So our main goal is…

• Software and systems quality

• Software and systems

development and operation productivity

• costs and deadlines

(10)

Relevance of software quality

Availability of important services

home banking

communication

People’s safety

health monitoring

air traffic control

car software

(11)

Practical impact

Companies competitiveness

Better products, smaller costs (long term)

Attraction of new companies to local ecosystems

investments, more taxes

(12)

Not always achieved,

almost never easy!

(13)

Software development issues, (crisis?)

Project cancellation rate of 18-40%

16-29% are successful

development time and cost go well beyond the estimative

in 33-53% of the analyzed projects

75% of the analyzed systems do not work as planned

Difficult reuse and maintenance

not sound evidence!

(14)

Laws?

(15)

http://cacm.acm.org/magazines/2015/7/188735-an-updated- software-almanac/fulltext

(16)

Cancellations

0 10 20 30 40 50 0

10 20 40 80 160 320 640 1280 2560 102405120

% Points

(17)

Delays

0 10 20 30 40 50 60 10240

5120 2560 1280 640 320 160 80 40 20 10 0

Months Points

Estimation Real

(18)

Even worse in common scenarios…

Different clients, different products

http://www.androidauthority.com

(19)

Little reuse and agility, high costs

Even with Android!

(20)

Little modularity and agility, more defects, high costs

{GameMenu.MENU_OPTION_ID_PLAY,GameMenu.ME NU_OPTION_ID_C

ONFIG_SOUND,GameMenu.MENU_OPTION_ID_A RENA_SHOW_RANKING,GameMenu.MENU_OPTI ON_ID_HELP};

//#else

//#public final int[] mainMenuCommands = {GameMenu.MENU_OPTION_ID_PLAY,GameMenu.

MENU_OPTION_ID_CONFIG_SOUND,GameMenu.

MENU_OPTION_ID_HELP};

//#endif

/** Main pause menu options. Shown in the menu when game is paused */

private final int[] mainPauseMenuCommands = { GameMenu.MENU_OPTION_ID_RESUME,GameMenu.ME NU_OPTION_ID_TRACK_11,GameMenu.MENU_OPTIO N_ID_TRACK_12

}private final int[] helpCommands = {

GameMenu.MENU_OPTION_ID_HELP_GOAL, GameMenu.MENU_OPTION_ID_HELP_STRAIGHTS, GameMenu.MENU_OPTION_ID_HELP_CURVES, GameMenu.MENU_OPTION_ID_HELP_ABOUT };

/** Pause exit menu options */

private final int[] pauseMenuRestartCommands = {

GameMenu.MENU_OPTION_ID_PAUSE_RESTART_YES ,

GameMenu.MENU_OPTION_ID_PAUSE_RESTART_NO }; private final int[] endRaceMenuCommands = {

GameMenu.MENU_OPTION_ID_ARENA_POST_SCOR E,

GameMenu.MENU_OPTION_ID_END_RACE_RETRY,

GameMenu.MENU_OPTION_ID_END_RACE_SELECT_

TRACK,

GameMenu.MENU_OPTION_ID_BACK_MAIN_MENU };\

//# private final int[] endRaceMenuCommands = { //#

GameMenu.MENU_OPTION_ID_END_RACE_RETRY ,

//#

GameMenu.MENU_OPTION_ID_END_RACE_SELEC T_TRACK,

//#

GameMenu.MENU_OPTION_ID_BACK_MAIN_MEN U

//# }; */

private int PREVIOUS_KEY_CODE = MainCanvas.UP_PRESSED;

private int NEXT_KEY_CODE = MainCanvas.DOWN_PRESSED;

/** Title of the menu*/

private String menuTitle;

private Image rewardUserImageMainMenu;public static final int TRACK_SELECTION_MENU = 5;

//#if feature_arena_enabled /** * Post ranking menu

*/ public static final int POST_SCORE_MENU = 10;

//#endif

package com.meantime.j2me.gui;

import java.util.Vector;

import com.meantime.j2me.util.Screen;

import com.meantime.j2me.util.bvg.BVGAnimator;

//#if device_graphics_transform_midp2 //# import javax.microedition.lcdui.game.Sprite;

//#else

import com.meantime.j2me.util.game.Sprite;

private static final int

PRESENTATION_BACKGROUND_COLOR = 0x000000;

//#if device_screen_128x128

/** Initial car animation position x */

private static final int CAR_LEFT_INITIAL_POS_X = -78;

/** Initial car animation position y */

private static final int CAR_LEFT_POS_Y = 31;

/** Initial tire animation position y */

//#

//#endif

/** Used to left tire animatiom position x */

private int currentTireleftPosX; private BVGAnimator presentation_second_bvg;

private BVGAnimator arena_bvg;

gff //#

Dffdsffffffffffffffffffffffffffffff Ghrwds {

/** Constants to paint the scroll bar */

private static final int ARENA_SCROLL_HEIGHT = 92;

private static final int ARENA_SCROLL_POS_Y = 17;

//#elif device_screen_128x117 //#

//# /** Constants to paint the scroll bar */

//# private static final int ARENA_SCROLL_HEIGHT = 81;

//# private static final int ARENA_SCROLL_POS_Y = 16;

//#if sku_id_se1 //#

//#g = originalG;

//#g.drawImage(bufferImg, 0, 0, 0);

//#

//#endif} catch(Exception e){

e.printStackTrace();

} }

public void changeScreen (innewScreenIndex;

this.nextScreenMode = newScreenMode;

this.nextScreenParam = param; /**

* Shows the last screen shown.

* If there's not a last screen (i.e., the screen index in * the stack is public void goBack() { int[] screenData = this.popSc

// avoid mainCanvas to go back to a waiting server screen

if (screenData[STACK_SCREEN_MODE_INDEX] ==

Resources.MAIN_SCREEN_MODE_ARENA_WAITING_

SERVER) { this.goBack();

return;this.changeScreen(screenData[STACK_SCREEN _INDEX],

screenData[STACK_SCREEN_MODE_INDEX], screenData[STACK_PARAM_INDEX]);

} this.goBack = true;

}//#public void commandAction(Command c, Displayable d) { //#if (c == this.leftCommand) {

//#this.keyPressed(LEFT_SOFT_KEY);

//#} else if (c == this.rightCommand) { //#this.keyPressed(RIGHT_SOFT_KEY);

//#}

//#}

//#

//#endif

(21)

Teams that don’t

achieve share common

deficiencies

(22)

Essential causes of software issues

• Increasing systems

complexity

• Formalization

difficulties and

costs

(23)

Accidental causes of software issues

Lack of proper education

Poor quality of languages, tools, techniques, and processes

Organizational issues

poor management

conflicts

ethics and business values

(24)

Software quality factors, focus on ethics and business values

Correctness

Robustness

Extensibility

Reusability

Compatibility

Portability

(25)

More factors, internal and external

Performance

Scalability

Integrity, privacy and security

Usability

Flexibility

Fault tolerance

(26)

For example, why

would those factors be important for a store

automation system?

(27)

Not only quality, but productivity too

Reduced development cost

Consuming company wishes to invest little in software

Producing company should offer

“inexpensive software"

Reduced development time

Quick support and attention to market

needs

(28)

“Inexpensive software”

Not only a result of lower

development costs, but also of the cost distribution among a number of

clients

Reuse, extensibility and flexibility are important factors for achieving such distribution

(29)

Trade-offs between

quality and productivity

• Investing too much in quality can reduce productivity in the short term

• Neglecting quality can impact

productivity even in the short term

• Professional ethics should not be part of

the trade-off

(30)

To obtain software

quality and productivity, teams have to deal with

those issues in a

professional way!

(31)

Course overview

(32)

Starting a new job…

Tasks

1.Defining, maintaining and managing requirements 2. Managing configurations and changes

3.Managing software project

4.Implementing, maintaining and executing tests

5.Designing, implementing and maintaining features

•Creating or adapting features

•Finding and fixing bugs 6.Refactoring

•Finding and fixing reuse and modularity issues

(33)

Starting a new job…

Background

Process and collaboration technologies

git, github, modular development

Software architecture concepts

web architecture, patterns

Programming and testing technologies for SaaS (software as a service)

groovy, grails, HTML, Javascript, cucumber

Modularity and reuse tools

code clone detection, quality metrics analysis

(34)

You will not become a software engineer with this course, but you will

find out the way to

become one

(35)

Systems

(up to 6 people per system)

ResS (https://github.com/pauloborba/ResS)

TA (https://github.com/pauloborba/TA/)

RPA (https://github.com/pauloborba/RPA/)

Redu (https://github.com/OpenRedu)

other (existing) systems written in Grails/

Rails (or any other platform with support for cucumber, code cloning and metrics tools)

(36)

Course structure

Class discussion and evaluation

Study and analysis of book and site

material

Project activities, discussion and evaluation

Project results presentation and evaluation Requirements

Configuration Management Project Management

Testing Implementation Refactoring

(37)

Classes are for

discussing the material read before the class

Do not expect to learn

only through classes!

(38)

Dedication of 12 hs per week. Read a lot!

Make sure you make the most of this

opportunity!

(39)

https://sites.google.com/a/

cin.ufpe.br/engenharia-de- software-e-sistemas-2017-1/

Carefully read the site!

https://is.gd/ess_cc20171

(40)

Principles and goals

qualidade com

relevância diferença

teoria e prática

técnica e aprendizado inovação

pesquisa e cooperação

ética

diferencial

espírito

crítico agente

transformador competência

mundial

(41)

Expectations

Ethical behavior

Basic knowledge and skills of all topics

basic conformance with all evaluation itens

Attendance to all classes and evaluation sessions

Punctuality

Good time management and minimum

dedication of 12 hours a week (including classes)

Behave as CS elite

(42)

Evaluation items

(learning goals)

(43)

Overall evaluation formula

• No MANAs and 90% MA is 10

• No MANAs and 70% MA is 9

• No MANAs and 50% MA is 8

• No MANAs is 7

• 90% MA or MPA is 6 …

• 0.5 bonus from behavioural goals and

number of MAs

(44)

Avaliações das metas

• Questionários

• Mini-provas

Prova

• Final (e segunda chamada da prova)

(45)

Concept average evaluation

function computeAverage(mas,mpas,manas,lastConcept) { var average = ""

if (lastConcept == "MA" && (manas+mpas <= 1) &&

(manas==0 || mas>=1)) { average = "MA"

} else if ((lastConcept == "MA" && (manas <= 2)) ||

(lastConcept == "MPA" && (manas <= 1)) ||

(lastConcept == "MANA" && (mas+mpas >= 2))) { average = "MPA"

} else {

average = "MANA"

}

return average }

(46)

Problemas para alunos do CIn

Outro problema que alguns parecem ignorar é que o CIn exige total dedicação do aluno ao curso. Enquanto é verdade que o aluno precisa se esforçar e, afinal, o

CIn é da UFPE, não de uma instituição qualquer, com o perdão da palavra, fica difícil de manter o estudo, a

própria dedicação e a motivação em alta com a

montanha de exercícios, listas e miniprovas dados ao aluno. Os professores, em geral, tendem a pensar que apenas a disciplina deles existe e os alunos se vêem frequentemente inundados de coisas para fazer…

(47)

Problemas para alunos do CIn

Acho que uma das grandes dificuldades dos cursos do CIn é a questão que quando você comete um deslize a grande tendência é esse deslize se agravar. Reprova

uma cadeira, perde acesso a benefícios, fica triste por achar que não é bom o suficiente, reprova mais uma, acha que agora lascou tudo de vez e sente agonia só de ir pra faculdade. Acho que uma solução é mostrar que mesmo falhando, há solução e há espaço pros

alunos e indicaria um acompanhamento para alunos que estejam com problemas…

(48)

Textbook

Engineering Software as a Service: An Agile Approach Using Cloud Computing

by David Patterson and Armando Fox http://www.saasbook.info


(Portuguese version is available, but English skills are very important for a software engineer)

(49)

You should primarily study by reading the

textbook!

Studying by reading the slides and wikipedia is a very bad idea!

(50)

Extra classes with teaching assistants

• Mandatory for those having problems with

the discussed material

(51)

Introduce yourself...

Name

• What do you expect from this course?

• What questions do you have about the

course?

(52)

Choose your system and join your team

now!

(53)

Team work

Choose a time-keeper – and for each discussion point, write down what you talk about and agree on:

Team members: who are you? Name, background, study profile, etc.

Contact information: exchange phone, e-mail, skype, etc.

Meeting time: Next meeting and weekly meeting times?

Roles: who has which competences?

Time plan: what is the initial time plan for the project?

(54)

More team work

Collaboration management: How do you plan to manage the collaboration within your team and with stakeholders? (e.g. write a

collaboration plan)

Conflict resolution: write a list of work-norms and a list of social norms. How do you plan to sanction team members not following the

norms? How do you plan to deal with conflicts?

The project: what are your initial thoughts and ideas?

(55)

Software and systems engineering

Paulo Borba

Informatics Center

Federal University of Pernambuco

phmb@cin.ufpe.br ◈ twitter.com/pauloborba

Referências

Documentos relacionados

• “…Se puder verificar equipes incompletas no início da próxima aula seria uma mão

To control scope, we need to manage a list of tasks... To control time, we need to manage

Little modularity and agility, more deffects,   high costs..

“As a large program is continuously changed, its complexity, which reflects deteriorating. structure, increases unless work is done to maintain or

Congestão nasal e coriza PGs e Leucotrienos Secreção glandular Colinérgico e Histaminérgico Resposta Sistema Rinite alérgica • Sintomas - Rinorréia - Congestão nasal -

Por meio das análises de HPLC apresentadas no item 5.6.2, podemos observar que os dispositivos obtidos por método direto não apresentaram capacidade de liberar o

Azenes iela 16, Riga LV–1048 Phone: 37 1 2911 7796 sandratreija@yahoo.com docomomo Lebanon George Arbid, chair Arab Centrer for Architecture George Mrad Building, 4th floor Salim

a) No Brasil, o arrasto é tido como uma das modalidades mais rentáveis, visto que suas redes são capazes de capturar milhares de toneladas de pescado ao ano. b) Não existe