Software engineering and outsourcing Dragan Jankovic Tatjana Stankovic Faculty of Electronic Engineering University 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 , sometime senior developer much more (1500 or more)
Needed knowledge Programming languages IDE (I ntegrated Developing Environments ) Debugging Testing Documentation writing Organization Time estimation Collaborative work ( , 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!