0% found this document useful (0 votes)
34 views46 pages

Overview SEIntroduction

The document discusses software and systems engineering. It notes that engineering principles must be applied to software development to ensure quality and productivity. Issues with current software development practices like high project cancellation rates and cost overruns are examined.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views46 pages

Overview SEIntroduction

The document discusses software and systems engineering. It notes that engineering principles must be applied to software development to ensure quality and productivity. Issues with current software development practices like high project cancellation rates and cost overruns are examined.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 46

Engenharia de Sistemas de

Software
Genaína N. Rodrigues
Departamento de Ciência da Computação
Universidade de Brasília

(slides concedidos pelo prof. Paulo Borba – CIn/UFPE)


Introduction to
software and systems
engineering
Engineering is…

the application of science


to the design, building and use
of machines, construction, etc.
The Concise Oxford Dictionary
System =
Software +
People + Data +
Hardware
(computers, sensors,
phones, watches,
drones, etc.)
Our society depends on
software systems

Every year, 33 billions lines


of code (LOC) are created
or modified
Grady Booch, 2008.
Software and systems
engineering is concerned with…

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;

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
Essential causes of
software issues
• Increasing
systems
complexity

• 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

■ Integrity, privacy and security

■ 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"

■ Reduced development time


• Quick support and attention to market
needs
“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
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
Course overview
Starting a new job…
Tasks
• Managing software project
• Managing tasks, configurations and changes
• Defining, maintaining and managing requirements
• Implementing, maintaining and executing tests
• Designing, implementing and maintaining features
• Creating or adapting features
• Finding and fixing bugs
• Refactoring
• Finding and fixing reuse and modularity issues
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, refactoring
• Modularity and reuse tools
• code clone detection, quality metrics analysis
You will not become a
software engineer with
this course, but you will
find out the way to
become one
Course structure
Study and
analysis of
book and site
material

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

Do not expect to learn


only through classes!
Dedication of 12 hs per
week. Read a lot!

Make sure you make


the most of this
excellent opportunity!
Principles and goals
teoria e competência
prática mundial
pesquisa e
cooperação diferencial

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)

• Behave as CS elite, impact and ROI


Problemas para alunos
do CIn
Outro problema que alguns parecem ignorar é que o
CIn
CIC exige total dedicação do aluno ao curso. Enquanto
é verdade que o aluno precisa se esforçar e, afinal, o
CIn
CIC é da UFPE,
UnB 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…
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
CIC
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…
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)
You should primarily
study by reading the
textbook!
Studying by reading the slides and wikipedia is a
very bad idea!
Extra classes with
teaching assistants

• 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

(slides concedidos pelo prof. Paulo Borba – CIn/UFPE)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy