Download CS2200 Software Development - Computer Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Go (programming language) wikipedia , lookup

C Sharp syntax wikipedia , lookup

Java syntax wikipedia , lookup

Software quality wikipedia , lookup

Name mangling wikipedia , lookup

Object-oriented programming wikipedia , lookup

Scala (programming language) wikipedia , lookup

Java (programming language) wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Java performance wikipedia , lookup

Transcript
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
CS565
1
CS565 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.
CS565
2
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
3
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
4
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
5
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
6
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
7
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
8
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
9
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
10
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, AddisonWesley, 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
11
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 Sunmanaged 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
12
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
/**
* simply prints "Hello World!" to standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
A program can consist of one or more .java files.
CS565
13
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
14
Compilation/Interpretation
CS565
15
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
16
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
17
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
18
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
19
Dr Java
CS565
20
Dr 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.
CS565
21
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
22
Eclipse IDE
CS565
23
Java APIs
http://java.sun.com/j2se/1.5.0/docs/api/
CS565
24
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
25
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
CS565
26
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
27
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
28
UML
• The Unified Modeling Language (UML) is generalpurpose 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
29
Example: UML Class Diagram
CS565
30
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
31
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
32
Example: Together
CS565
33
Example: ArgoUML
CS565
34