Overview SEIntroduction
Overview SEIntroduction
Software
Genaína N. Rodrigues
Departamento de Ciência da Computação
Universidade de Brasília
Quality
and
Productivity
Serious software and
systems development
http://www.home-dzine.co.za/diy/diy-doghouse.htm
http://silviarangel.wix.com/fotografa
It’s not about small
versus large
http://transmissionsmedia.com/the-inexplicable-precision-in-the-construction-of-the-great-pyramid-at-giza/
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
So our main goal is…
• Software and systems quality
• Software and systems
development and operation
productivity
• costs and deadlines
Relevance of software quality
■ Availability of important services
• home banking
• communication
■ People’s safety
• health monitoring
• air traffic control
• ABS
Practical impact
■ Companies competitiveness
■ Better products, smaller costs (long
term)
■ Attraction of new companies to
local ecosystems
• investments, more taxes
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
Cancellations
10240
5120
2560
1280
640
Points 320
160
80
40
20
10
0
0 10 20 30 40 50 %
Delays
10240
5120 Estimation
2560
1280 Real
640
Points 320
160
80
40
20
10
0
0 10 20 30 40 50 60 Months
http://cacm.acm.org/magazines/2015/7/188735-an-updated-
software-almanac/fulltext
Even worse in common
scenarios…
Different clients,
different products
http://www.androidauthority.com
Little reuse and agility, high
costs
!
!
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_ARENA
_SHOW_RANKING,GameMenu.MENU_OPTION_ID_HELP
};
//#else
//#public final int[] mainMenuCommands =
{GameMenu.MENU_OPTION_ID_PLAY,GameMenu.MENU
_OPTION_ID_CONFIG_SOUND,GameMenu.MENU_OPTI
ON_ID_HELP};
//#endif package com.meantime.j2me.gui;
/** Main pause menu options. Shown in the menu when game is
paused */ import java.util.Vector;
private final int[] mainPauseMenuCommands = {
GameMenu.MENU_OPTION_ID_RESUME,GameMenu.ME import com.meantime.j2me.util.Screen;
NU_OPTION_ID_TRACK_11,GameMenu.MENU_OPTIO import com.meantime.j2me.util.bvg.BVGAnimator;
N_ID_TRACK_12 //#if sku_id_se1
}private final int[] helpCommands = { //#if device_graphics_transform_midp2 //#
GameMenu.MENU_OPTION_ID_HELP_GOAL, //# import javax.microedition.lcdui.game.Sprite; //#g = originalG;
GameMenu.MENU_OPTION_ID_HELP_STRAIGHTS, //#else //#g.drawImage(bufferImg, 0, 0, 0);
GameMenu.MENU_OPTION_ID_HELP_CURVES, import com.meantime.j2me.util.game.Sprite; //#
GameMenu.MENU_OPTION_ID_HELP_ABOUT private static final int //#endif} catch(Exception e){
}; PRESENTATION_BACKGROUND_COLOR = e.printStackTrace();
/** Pause exit menu options */ 0x000000; }
private final int[] pauseMenuRestartCommands = { }
//#if device_screen_128x128 public void changeScreen (innewScreenIndex;
GameMenu.MENU_OPTION_ID_PAUSE_RESTART_YES this.nextScreenMode = newScreenMode;
, /** Initial car animation position x */ this.nextScreenParam = param; /**
private static final int CAR_LEFT_INITIAL_POS_X = * Shows the last screen shown.
-78; * If there's not a last screen (i.e., the screen index in
GameMenu.MENU_OPTION_ID_PAUSE_RESTART_NO
* the stack is public void goBack() {
}; private final int[] endRaceMenuCommands = {
/** Initial car animation position y */ int[] screenData = this.popSc
private static final int CAR_LEFT_POS_Y = 31; // avoid mainCanvas to go back to a waiting server
GameMenu.MENU_OPTION_ID_ARENA_POST_SCOR
screen
E,
/** Initial tire animation position y */ if (screenData[STACK_SCREEN_MODE_INDEX] ==
//# Resources.MAIN_SCREEN_MODE_ARENA_WAITING_
GameMenu.MENU_OPTION_ID_END_RACE_RETRY,
//#endif SERVER) {
GameMenu.MENU_OPTION_ID_END_RACE_SELECT_ /** Used to left tire animatiom position x */ this.goBack();
TRACK, private int currentTireleftPosX; private
BVGAnimator presentation_second_bvg; return;this.changeScreen(screenData[STACK_SCREEN_
GameMenu.MENU_OPTION_ID_BACK_MAIN_MENU private BVGAnimator arena_bvg; INDEX],
};\ gff screenData[STACK_SCREEN_MODE_INDEX],
//# private final int[] endRaceMenuCommands = { screenData[STACK_PARAM_INDEX]);
//# //# }
GameMenu.MENU_OPTION_ID_END_RACE_RETRY, Dffdsffffffffffffffffffffffffffffff this.goBack = true;
//# Ghrwds { }//#public void commandAction(Command c, Displayable d) {
GameMenu.MENU_OPTION_ID_END_RACE_SELECT_TR /** Constants to paint the scroll bar */ //#if (c == this.leftCommand) {
ACK, private static final int ARENA_SCROLL_HEIGHT //#this.keyPressed(LEFT_SOFT_KEY);
//# = 92; //#} else if (c == this.rightCommand) {
GameMenu.MENU_OPTION_ID_BACK_MAIN_MENU private static final int ARENA_SCROLL_POS_Y = //#this.keyPressed(RIGHT_SOFT_KEY);
//# }; */ 17; //#}
private int PREVIOUS_KEY_CODE = //#elif device_screen_128x117 //#}
MainCanvas.UP_PRESSED; //# //#
//# /** Constants to paint the scroll bar */ //#endif
private int NEXT_KEY_CODE = //# private static final int ARENA_SCROLL_HEIGHT =
MainCanvas.DOWN_PRESSED; 81;
/** Title of the menu*/ //# private static final int ARENA_SCROLL_POS_Y = 16;
private String menuTitle;
• Formalization
difficulties and
costs
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
Software quality factors, focus
on ethics and business value
■ Correctness
■ Robustness
■ Extensibility
■ Reusability
■ Compatibility
■ Portability
More factors, internal and
external
■ Performance
■ Scalability
■ Usability
■ Flexibility
■ Fault tolerance
Why would those
factors be important
for a store automation
system?
Not only quality, but
productivity too
■ Reduced development cost
• Consuming company wishes to invest little
in software
• Producing company should offer
“inexpensive software"
Class
Requirements discussion
and evaluation
Testing
Implementation
Project
Refactoring activities,
discussion
Management and evaluation
Project results
presentation
and evaluation
Classes are for
discussing the material
read before the class
qualidade com
relevância diferença
técnica e
ética aprendizado espírito
crítico agente
inovação transformador
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)
http://www.saasbook.info
• Dates?
Introduce yourself...
• Name
• What do you expect from this course?
• What questions do you have about the
course?
Choose your system
and join you team now!
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?
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?
Engenharia de Sistemas de
Software
Genaína N. Rodrigues
Departamento de Ciência da Computação
Universidade de Brasília