340 likes | 425 Views
CS556 Advanced Software Development Lectures 1 and 2. Lecturer: Adrian O’Riordan Office: Computer Science Prefab, Kane Building Email: a.oriordan@cs.ucc.ie Course Webpage: http://www.cs.ucc.ie/~adrian/cs565.html. CS565 Overview. 5 Credit course
E N D
CS556 Advanced Software DevelopmentLectures 1 and 2 Lecturer: Adrian O’Riordan Office: Computer Science Prefab, Kane Building Email: a.oriordan@cs.ucc.ie Course Webpage: http://www.cs.ucc.ie/~adrian/cs565.html CS565
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Dr Java CS565
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 definitionspane, where you can enter and edit class definitions with support for brace matching, syntax highlighting, and automatic indenting. CS565
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
Eclipse IDE CS565
Java APIs http://java.sun.com/j2se/1.5.0/docs/api/ CS565
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
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
The SoftwareDevelopment 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
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
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
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
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
Example: Together CS565
Example: ArgoUML CS565