Software Architecture: Design and Implementation
RMIT University Vietnam
Ho Chi Minh City, Vietnam
Area of Study
Computer Info Systems, Computer Programming, Computer Science, Information Technologies
Taught In English
Pre-requisite Courses and Assumed Knowledge and Capabilities
Enforced Prerequisite: Software Engineering Fundamentals
Required Prior Study: Advanced Programming OR Programming 1 or Programming Techniques
Note it is a condition of enrolment at RMIT that you accept responsibility for ensuring that you have completed the prerequisite/s and agree to concurrently enrol in co-requisite courses before enrolling in a course.
For your information the RMIT Course Requisites policy can be found at Course requisites – 126.96.36.199: http://www.rmit.edu.au/browse;ID=twx09y07zi1c
Host University Units12
Recommended U.S. Semester Credits3
Recommended U.S. Quarter Units4.5
Hours & Credits
This course provides students with an advanced understanding of software development with an emphasis on architecture and design and how this relates to programming and implementation. This course builds upon existing programming knowledge using Java as the implementation platform and assumes students already have a basic understanding of Java programming and basic OO concepts. Students will explore advanced OO concepts and the relationship between design in UML and its expression in code and how this is supported by modelling tools and development platforms; parallelism using multi-threading, and first principles client server architecture using socket communications and basic protocols. Students will also explore common OO design patterns and their application in domain specific contexts as well as User Interface Programming. This course serves as a pre-requisite for more specialized Java courses such as eCommerce, Web Services, Enterprise Architectures, and Mobile Application Development.
Objectives/Learning Outcomes/Capability Development
This course contributes to development of the following capabilities
Enabling Knowledge: knowledge and experience of software architecture design and implementation and how this is supported by modelling tools and integrated development environments; Understand the concept of software quality and how this can be a trade-off (e.g. performance versus reliability); Understand parallelism using multi-threaded systems and the challenges this poses in terms of implementation and testing; understand the fundamental principles of client-server applications using sockets and basic protocols.
Problem Solving: Ability to select patterns and architectures for a variety of multi-threaded and distributed applications, taking into account domain specific requirements and constraints. Ability to perform iterative development from the design stage through to implementation and testing using commonly available platforms and tools. Ability to develop software that meets specific quality constraints by understanding the impact of architecture, design and implementation techniques on such properties.
At the conclusion of this subject, the student should:
- Understand the purpose of OO design and where and how to apply OO concepts such as inheritance, polymorphism, abstract classes/interfaces and generics.
- Understand and apply common OO design patterns such as Model View Controller, Observer, Chain of Responsibility, Decorator etc.
- Be proficient using an integrated development environment such as Eclipse for project management, coding and debugging. Be proficient using a modelling tool such as Visual Paradigm for round trip engineering.
- Design and implement multithreaded systems taking into account synchronization issues and testing challenges.
- Design and develop client server applications from first principles using basic protocols without relying on external middleware or frameworks.
Overview of Learning Activities
Learning activities include presentation of concepts and demonstrations in the lecture, design issues, programming assignments and group discussions in the tutorials/ workshops. Regular feedback will be provided during the laboratory sessions. Java Helpdesk sessions provide help with programming tasks.
While a minimum attendance standard is not compulsory, non-attendance may seriously jeopardise the chances of success in this course. Clearly, non-attendance at an assessment will result in failure of that assessment. Where visa conditions apply, attendance is compulsory.
Overview of Learning Resources
Course notes, recommended references and Java software development tools.
You will make extensive use of computer laboratories and relevant software provided by the School. You will be able to access course information and learning materials through myRMIT and may be provided with copies of additional materials in class or via email. Lists of relevant reference texts, resources in the library and freely accessible Internet sites will be provided.
Use the RMIT Bookshop’s textbook list search page to find any recommended textbook(s).
Overview of Assessment
The assessment for this course comprises practical work involving the development of a complete application scenario (in two parts) and a final exam.
For standard assessment details, including hurdle requirements, relating to Computer Science and IT courses see: http://www.rmit.edu.au/compsci/cgi