Title: CS556 Advanced Software Development Lectures 1 and 2
1CS556 Advanced Software DevelopmentLectures 1
and 2
- Lecturer Adrian ORiordan
- Office Computer Science Prefab, Kane Building
- Email a.oriordan_at_cs.ucc.ie
- Course Webpage http//www.cs.ucc.ie/adrian/cs565
.html
2CS565 Overview
- 5 Credit course
- 2 lectures a week Monday 12-1 And Thursday
10-11 - Practicals to be announced
- Tutorials as required
- Assessment will consist of an end-of-year written
examination (80) and continuous assessment
during the year (20). - You have to pass combined total. There is a
re-sit in the autumn your continuous assessment
mark is carried forward.
3CS565 On-line
- Webpage at http//www.cs.ucc.ie/adrian/cs565.html
- Will contain
- Course Overview - Syllabus, etc.
- Notices
- Lectures slides (as course progresses)
- Reading list and web links
- Assignments and Exercises
4CS565 Learning Outcomes
- Be able to write Java applications in a good
object oriented style - Be able to design medium sized software in a
structured manner - Be able to use object oriented abstractions and
methods in an appropriate way - Be able to employ the Java SWING library to write
professional looking GUI applications - Become familiar with software engineering
development process - Be able to use software tools to design UML
diagrams
5Teaching Methods
- It is important that you attend both the lectures
and any labs! - Notes will on slides and handouts.
- Assignments and exercises will be placed on the
course webpage during the year. - No textbook covers all the material exactly. See
the list of relevant books later on. - Readings will be assigned during the year.
6Course Contents I
- Part 1 Object Oriented Programming in Java
- (12 lectures approx.)
- Java Programming review of fundamentals
- Object Oriented Concepts in Java objects,
classes, encapsulation, inheritance,
polymorphism, generics - Event driven programming and Java Swing library
for GUI programming windows, buttons, lists,
menus, etc, - Optional Basic graphics programming in Java
lines, shapes, colours, etc. - Overview of Java J2SE Platform
7Course Contents II
- Part 2 Development in Java/UML
- (12 lectures approx.)
- Tools development tools, IDEs, building
applications, documentation, debugging - Software Development Lifecycle Overview
- Software Design Overview
- The Unified Modeling Language (UML) notation
class diagrams - classes, associations,
attributes and operations package notation -
subsystems
8CS565 Practical Component
- Java development with the command-line JDK and
with an IDE - object oriented programs
- event-driven GUI applications
- Software design in UML using a simple CASE tool
- Introduction to developing larger systems, e.g.
builds, plug-ins, debugging, deployment
9CS565 Useful Books on Java
- Many listed on course Webpage. Here are a few
comprehensive Java books - Big Java by Cay S. Horstmann Wiley, 2007
- Java How to Program (6th Edition) by Harvey
Paul Deitel Associates Prentice Hall, 2004 - Introduction to Java Programming - Comprehensive
Version (6th Edition) by Y Daniel Liang Prentice
Hall, 2006
10CS565 Useful Websites on Java
- Official sites
- java.sun.com Sun Microsystems developer network
contains APIs, downloads, support, etc. - jcp.org Java Community Process community
development of Java technology containing
repository of specifications - java.sun.com/docs/books/tutorial/ - Suns Java
tutorials - java.sun.com/javase/6/docs/ - SE6 documentation
- IDEs
- eclipse.org
- netbeans.org
- bluej.org
11CS565 Useful Books on Soft Dev
- Many listed on course Webpage. Here are a few
Software Engineering books - 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.
12Java Programming Language
- Java is an object oriented programming language
based on C and C-based object oriented languages
such as C and Objective C. Mesa, Oberon, and
Smalltalk were also influences. - Specifications of the Java language, the Java
Virtual Machine (JVM) and the Java API are
community-maintained through the Sun-managed Java
Community Process. - The Java Runtime Environment (JRE) is the
software required to run any application deployed
on the Java platform. End-users commonly use a
JRE in software packages and plugins. Sun
distributes a superset of the JRE called the Java
SDK which includes development tools such as the
Java compiler, Javadoc, and debugger.
13Program Development Basics
- The basics of Java programming consist of
specifying an algorithm and implementing this by
writing Java program code. The program or source
code is a set of instructions. - E.g. HelloWorldApp.java
- A program can consist of one or more .java files.
/ simply prints "Hello World!" to standard
output. / class HelloWorldApp public
static void main(String args)
System.out.println("Hello World!") // Display
the string.
14Java Programming Environment
- These are compiled into a .class files which is
bytecode. This is run on a JVM (Java Virtual
Machine) such as Suns Hotspot. - The bytecode is a standardized portable binary
format. Multiple .class files can be packaged
together into a .jar (Java archive). - The JVM runtime executes .class or .jar files by
emulating the JVM by interpreting it, or using a
just-in-time compiler (JIT).
15Compilation/Interpretation
16Java Technology
- Development Tools compiling (e.g. javac),
running (e.g. java), documenting (javadoc),
debugging - APIs (Application Programming Interface)
library specs - Deployment Technology applications, JAR files,
Web Start, plugins - User Interface and Graphics Toolkits Swing,
Java 2D - Integration Libraries JDBC database connect,
Java RMI - Components Java Beans, J2EE
17JDK
- Programmers can create Java applications using
simple tools such as editors, and command line
tools such as provided by Suns JDK (Java SE
Development Kit). - Basic tools include
- javac compiler for the Java programming language
- java launcher for Java applications
- javadoc documentation generator
- appletviewer run and debug applets
- jar create and manage Java Archive (JAR) files
- jdb Java Debugger
- Many other tools for e.g. security, rmi,
monitoring
18Using JDK
- Write your Java code in files usually one class
per file. Compile the code with javac. Fix the
compile errors and recompile. When there are no
more compile errors run the program wit the java
command. - Example
- Create a class Customer. Save in a file called
customer.java - Compile like so
- promptgtjavac customer.java
- And run like so
- promptgtjava customer
19Java IDEs
- IDEs (Integrated Development Environments) can
widely available to speed up the process and
provide increased support such as source code
control, class browser, build-automation tools,
and a debugger. - Popular Professional Java IDEs include
- NetBeans (Sun)
- Eclipse (Eclipse Foundation)
- JBuilder (CodeGear)
- JDeveloper (Oracle)
- Teaching and Learning (Interactive) IDEs
- BlueJ (bluej.org)
- Dr Java (drjava.org)
20Dr Java
21Dr Java IDE
- DrJava (drjava.org) is a lightweight programming
environment for Java designed specifically for
beginners. - DrJava supports the use of different Java
compilers, such as the traditional javac compiler
supplied with the JDK (versions 6, 5 or earlier). - Dr Java has an interactions pane, where you can
input Java expressions and statements and
immediately see their results - Dr Java has a definitions pane, where you can
enter and edit class definitions with support for
brace matching, syntax highlighting, and
automatic indenting.
22Dr Java Features
- Features include
- Text editing with syntax highlighting, brace
matching, line numbers,find and replace - Buttons for compiling and running
- Interactive interpreter - an extension of free
DynamicJava - Integrated javadoc
- Integrated debugger
- Integrated JUnit
- Project facility
- Language level facility
23Eclipse IDE
24Java APIs
- http//java.sun.com/j2se/1.5.0/docs/api/
25Software-Engineering-in-the-Large
- 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 development
- 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
26Software Engineering Discipline
- Software Engineering is relatively new field of
engineering - The term software engineering was coined in 1967
at a NATO study group. The first conference was
held in Germany in 1968. - it is commonly perceived that the quality of
software is not acceptable - buggy
- behind schedule
- not enough reuse
- Large-scale disasters attributed to software
defects offer sober warnings - The explosion of the Ariane 5 rocket
- Patriot missile failure during the Gulf War
Ariane 5
27The Software Development Lifecycle I
- A large software application can be seen as
having the following development steps - Requirements Analysis
- Customers and suppliers work together to identify
actual problems for which a solution is sought.
The feasibility of endeavour is determined. - System Specification
- A broad systems specification of "What is to be
done". - Design
- Produce a design specification for the new
system. Alternative ways of satisfying the
specification are explored. This is the "How".
28The Software Development Lifecycle II
- Implementation
- The chosen design is translated into executable
programs. Here is where issues such as the
choice of programming language are decided. - System Integration
- The completed system is assembled and checked to
see if it meets initial requirements. - Maintenance
- Manage the day-to-day support of system operation
as well as provision of any future upgrades. - Management of new releases
- Operations/Maintenance (patches, etc.)
- Retirement
- Product removed from service.
29UML
- The Unified Modeling Language (UML) is
general-purpose specification language for object
modeling. UML includes a graphical notation used
to create an abstract model of a system. - UML is controlled by the Object Management Group
(OMG) and is the industry standard for
graphically describing software. - The current version of UML (2007) is Version
2.1.1. - UML is not a method by itself although it is
compatible with the leading object-oriented
software development methods.
30Example UML Class Diagram
31Computer Aided Software Engineering
- Computer tool to assist developers
- Modelling and documentation
- Sometimes can generate system implementation
- In the 1980s separate tools became prominent for
analysis and design which entailed manual
conversion of the output of one tool to provide
the input of another. This lead to CASE tool
integration. - Many CASE tools simply act as repositories of
models and documents. They do not assist in the
creative part of modelling. Some CASE tools
attempt to provide more assistance, ranging from
simple prompts through to syntax/model checking.
32UML-supported CASE tools
- Commercial
- Rational/IBM XDE Java Edition and .NET Edition
- Borlands Together
- Telelogics System Architect 10
- Microsofts Enterprise Architect
- Ilogixs Rhapsody
- Gentlewares Poseidon for UML
- Free
- Tigris ArgoUML (Open Source)
- EclipseUML (Open Source)
- StarUML (Open Source)
33Example Together
34Example ArgoUML