software engineering and outsourcing dragan jankovic tatjana stankovic faculty of electronic...
TRANSCRIPT
Software engineering and outsourcing
Dragan JankovicTatjana Stankovic
Faculty of Electronic EngineeringUniversity of Nis, Serbia
8th Workshop "Software Engineering Education and Reverse Engineering“ - September 2008
Outlines
Outsourcing Needed knowledge SE knowledge Theory versus practice Questionnaire Recommendations Conclusion
Outsourcing
Definition Kinds of outsourcing
Realization team Kind of jobs Location Developer status
Realization team
Complete out – all developers are out of company
Shared-major – major part of developers is out of company
Shared-minor – minor part of developers is out of company
One-man show
Kind of job
Complete development Subsystem development Shared development
Location
Home Office(s) shared with other developers Another company offices (part time) Company connected to the main
company Part of company (full time, part time)
Developers status
Full time Part time
Work for 2 or more companies Software companies Different kind of companies On-line
students
Outsourcing perspective in WECs
Knowledge - good Culture – more less similar to Europe
countries culture Time zone – 1-2 hour for Europe; 6
hours for USA Salary – depends of the region,
between 400-1000, sometime senior developer much more (1500 or more)
Needed knowledge Programming languages IDE (Integrated Developing
Environments ) Debugging Testing Documentation writing Organization Time estimation Collaborative work (e-mail, video-
conference, phone, meeting with company representative)
Software engineering knowledge
Software life cycle Vision Requirements Specification Design Programming Documentation Deployment Maintenance
Software development models Waterfall Incremental Iterative Boehm spiral model Agile methodologies (eXtreme
Programming) RUP-Rational unified process Microsoft Etc.
Models in (outsourcing) practice
Models in practice Iterative Incremental eXtreme Programming
What is missing? Theory versus practice Theoretical knowledge demonstrated
on examples Problems:
Exercises and labs very simple and time limited
Projects realized by one or two students Students – not very interested in
imaginary problems
Questionnaire
B.Sc. and M.Sc. working in outsourcing companies
Working experience – between 1 and 10 years
Different kind of outsourcing Some of them have been working for
different companies
Questions Year of your graduation Years (months) of your working experience (1-10) What knowledge did you need right at the beginning of your career
that you have not get during your studies? (Java, C#, Debugging…) Do you think that programming language knowledge attained
during your studies were enough? If not, quote knowledge that you think should be included in regular studies. (Web services, UML, JavaScript, …)
Do you find Software Engineering knowledge from the faculty usable in practice? (Yes, but not enough)
Would you change something and what? (Real projects, bigger teams…) What software-developing methods are used in your company:
Structured methods Data-oriented methods Object-oriented methods Formal methods (deals with mathematically based software
engineering methods) Prototype methods (involves software prototyping)
Questions Do you use knowledge taken from your studies related to the
areas below (All the time/Sometimes/Never)? Algorithms and programming Data structures Databases Object Oriented programming Parallel programming
Do you find software testing knowledge you’ve got from your studies satisfactory? (No)
How much do you think this knowledge is necessary in every-day practice? (Much/Less/Not at all) (Much)
Do you find project management, software documenting and software developing life-cycle knowledge taken from regular studies satisfactory? (Software doc. More, pr.m. less, but not enough)
What would you change? (Lecturers experts, real world examples)
Questions Are you satisfied with your project managers? (No)
Do project managers in your company use knowledge taken from their studies (according to your opinion)? (No)
For what software life-cycle activity have you taken the most information during your regular studies? (Code implementing)
And for what the least? (Requirements, testing, …)
How much are knowledge and theory related to software life-cycle and activities and the way of their implementation different from your every day practice experience?
What software life-cycle activities in practice have the biggest disagree with theory-knowledge you achieved from studies?
Outsourcing experience Authors
More than 10 years Different kinds of outsourcing Outsourcing for/in companies
RistanCase GMBH - Zurich, Switzerland Siemens A.G. – Munich, Germany Infineon A.G. - Munich, Germany Accordia LLC – New York, USA ABB, Baden, Switzerland
Colleagues
Recommendations
For University For companies For students
For University More practical exercises More practical labs Modification of SE curricula Practical works in groups Project group size more than 5 students Assistants with practical experiences Projects in companies Story from real life
For companies
It is not real to expect “yang ready full developer”
Learning period Demonstration with courses and
tutors To offer including of students in real
projects
For students
Force cooperation with assistants and professors
Force interactive lectures
Conclusion
Software engineering in our faculty gives very good experts, but there is place for improving
Experts as guest-lecturers should definitely be one of the improvements
The idea of the exception of investigation team at the university should be considered?
THANK YOU!