34
CS565 1 CS556 Advanced Software Development Lectures 1 and 2 Lecturer: Adrian O’Riordan Office: Computer Science Prefab, Kane Building Email: [email protected] Course Webpage: http://www.cs.ucc.ie/~adrian/cs565 .html

CS5651 CS556 Advanced Software Development Lectures 1 and 2 Lecturer: Adrian O’Riordan Office: Computer Science Prefab, Kane Building Email: [email protected]@cs.ucc.ie

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

CS565 1

CS556 Advanced Software DevelopmentLectures 1 and 2

Lecturer: Adrian O’Riordan

Office: Computer Science Prefab, Kane Building

Email: [email protected]

Course Webpage: http://www.cs.ucc.ie/~adrian/cs565.html

CS565 2

CS565 Overview

5 Credit course2 lectures a week – Monday 12-1 And Thursday 10-11Practicals – to be announcedTutorials – 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.

CS565 3

CS565 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

CS565 4

CS565 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

CS565 5

Teaching 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.

CS565 6

Course 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

CS565 7

Course 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

CS565 8

CS565 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

CS565 9

CS565 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

CS565 10

CS565 Useful Websites on Java

Official sites

• java.sun.com Sun Microsystem’s 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/ - Sun’s Java tutorials• java.sun.com/javase/6/docs/ - SE6 documentation

IDEs

• eclipse.org• netbeans.org• bluej.org

CS565 11

CS565 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.

CS565 12

Java 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.

CS565 13

Program 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. }}

CS565 14

Java Programming Environment

These are compiled into a .class files which is bytecode. This is run on a JVM (Java Virtual Machine) such as Sun’s 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).

CS565 15

Compilation/Interpretation

CS565 16

Java 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

CS565 17

JDK

Programmers can create Java applications using simple tools such as editors, and command line tools such as provided by Sun’s 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

CS565 18

Using 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:

prompt>javac customer.java

– And run like so:

prompt>java customer

CS565 19

Java 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)

CS565 20

Dr Java

CS565 21

Dr Java IDEDrJava (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.

CS565 22

Dr 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

CS565 23

Eclipse IDE

CS565 24

Java APIs

http://java.sun.com/j2se/1.5.0/docs/api/

CS565 25

Software-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

CS565 26

Software 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

CS565 27

The 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".

CS565 28

The 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.

CS565 29

UML

• 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.

CS565 30

Example: UML Class Diagram

CS565 31

Computer 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.

CS565 32

UML-supported CASE tools

Commercial– Rational/IBM XDE Java Edition and .NET Edition – Borland’s Together– Telelogic’s System Architect 10– Microsoft’s Enterprise Architect– Ilogix’s Rhapsody– Gentleware’s Poseidon for UML

Free– Tigris ArgoUML (Open Source)– EclipseUML (Open Source)– StarUML (Open Source)

CS565 33

Example: Together

CS565 34

Example: ArgoUML