Software Engineering Introduction Course schedule
Software engineering • Application of engineering concepts to software production – design
Software engineering • Application of engineering concepts to software production – management
Software engineering • Application of engineering concepts to software production – budgeting • Application of engineering concepts to software production – quality control • Application of engineering concepts to software production – operations
Learning software engineering • There are at least three different approaches to learn software engineering
Learning software engineering The academic way 1
Learning software engineering • At least 180 hours attending courses on software engineering and related issues, e.g. in four specialised disciplines containing about 45 hours in class each. • Good theoretical background and training
Learning software engineering The hard way 2
Learning software engineering Self esteem Classify SE as “second class” knowledge (when compared e.g. with “hard sciences”) Complete degree Get job Get lost Get fired Get drunk Get back to school
Learning software engineering Pragmmatic Approach 3
Learning software engineering • One semester (~45 hours) – this is what we get! • Some theoretical material (attempting to optimise balance between depth and coverage) • “practical” experience while still at the university
Learning software engineering • Two parallel tracks: • Theoretical track: lecture material – software engineering in general, focusing on software construction. Textbook: Steve McConnell. Code Complete (2nd. edition). Microsoft Press. 2004. • Practical track: project development, from start to end.
Learning software engineering • Practical track: team work to • Build a software tool to help the development of applications of a certain type • Build at least two different applications using that tool
Learning software engineering • Practical track: • Teams – 5 or 6 students • Students in each team must organise themselves and deliver the requested products of each project phase obeying the corresponding deadlines
Learning software engineering • Theoretical track: synchronised with practical track, in order to provide the necessary theoretical background for each phase of the project.
Learning software engineering • Practical track – deliveries: • Lecture 2: names of students in each group • Lecture 6: requirements elicitation; general architecture; allocation of tasks within group • Lecture 10: detailed architecture; detailed project management methodology
Learning software engineering • Practical track – deliveries: • Lecture 16: unit testing • Lecture 22: integration testing • Lecture 26: applications • Lecture 30: complete documentation of tool and applications
Learning software engineering • What does computer programming have to do with all this?
Learning software engineering • Answer: the software tool to be built is a tool to develop and implement computer systems, using an integrated development environment.
Learning software engineering • To keep things relatively simple, we will stick to the netbeans environment (a relevant issue in itself, considering the expanding market of games for mobile phones)