Lecturer: Adrian O’Riordan
Contact: email is a.oriordan@cs.ucc.ie
,
Office: prefab, behind Kane Building
Lectures: 25 in total
Monday @12:00 PF1 and Thursday @ ?
Practicals: Organised later (in PF1 also)
Webpage for course: http://www.cs.ucc.ie/~adrian/cs565.html
This contains:
Course overview
Lecture slides (as we go along)
Reading list
On-line resources
And will contain:
Assignments and exercise sets
Notices
Objectives:
To become familiar with the processes and technologies used in the construction of software systems. The focus will be on object oriented software design and development.
The technologies covered will include analysis, design based on
UML (Unified Modeling Language), CASE (Computer Assisted
Software Engineering) and Java (example language).
Prerequisites: Basic knowledge of computing including programming concepts.
Relates to Project and CS560 Formal Modelling and
Implementation of Systems.
Teaching methods: notes will on slides or handouts. Reading assignments will be also given during the year.
Assignments and exercises will be placed on the course webpage.
No textbook covers all the material exactly. See the list of relevant books later on.
Part 1: Object Oriented Programming & Design (14 lectures)
Object Oriented Concepts – objects, classes, encapsulation, inheritance, polymorphism, generics (2l)
Java Programming – review of fundamentals, new features in
Java 5, SWING classes (7l)
Static Modeling in UML (Unified Modeling Language) - Class
Diagrams, modelling classes, associations, attributes and operations (3l)
Model Management in UML - Package notation (2l)
Part 2: Selected Software Engineering Technologies
(10 lectures)
Development Tools, e.g. IDEs (Integrated Development
Environments), CASE (Computer Assisted Software
Engineering), SCM (Software Configuration Management) (3l)
Software Architecture – Architecture Description, Types of
Architectures, Software Frameworks (3l)
Software Engineering Process – Analysis, Design, Testing (2l)
Java Technology – J2SE; Comparison with C# and C++ (2l)
Optional topics covered by handouts
Selected Software Engineering Technologies - Client Server;
Outsourcing; Software Services & Components, Design Patterns
UML and Software Design
CASE tool is TogetherArchitect for Eclipse (Borland) – formerly
Together from TogetherSoft modeling product that provides an integrated modeling environment for designing processes and software applications, including design and coding built on top of Eclipse – uses plug-ins fully supports UML 2.0 and Java 5
Java programming – using JDK to implement basic Object
Oriented System Design and demonstrate Java library and
SWING proficiency
Software Engineering: A Practitioner's Approach 6th ed., Roger
Pressman, McGraw-Hill, 2004.
Software Engineering, 8th edition, Ian Sommerville, Addison-Wesley,
2006.
Code Complete: A Practical Handbook of Software Construction, Steve
McConnell, Microsoft Press, 1993.
Object-Oriented and Classical Software Engineering, Stephen R.
Schach, McGraw-Hill, 2004.
Java Software Solutions, 3 rd ed., Lewis and Loftus, Addison Wesley,
2003.
Objects First with Java, 2 nd ed., Barnes and Koelling, Pearson, 2005.
Note there are also many excellent book available on specific topics such as the
UML but these are not listed.
Course Website contains links to useful on-line resources.
The following are good jump off points/ portals for general Software Engineering Information.
http://directory.google.com/Top/Computers/Software/So ftware_Engineering/ Google Directory http://dir.yahoo.com/Computers_and_Internet/Program ming_and_Development/Tools/Software_Engineering/
Yahoo Directory http://www.dmoz.org/Computers/Software/Software_En gineering/ Open Directory Project
a concise working definition of software engineering : the methodology, techniques and tools related to the development and management of software from conception through requirements, design, implementation, deployment to the final retirement.
Large-scale Software Engineering
Project involves a team of people – need to manage process, people and artefacts
System takes a long-time to build – need to plan
Systems Complex – need powerful tools, methods and technologies
Need to reuse code/designs/process