cs352 software engineering (software engineering in the small)

28
CS352 Software Engineering (Software Engineering in the Small) Michael Oudshoorn and Ray Babcock

Upload: clinton-galloway

Post on 31-Dec-2015

40 views

Category:

Documents


0 download

DESCRIPTION

CS352 Software Engineering (Software Engineering in the Small). Michael Oudshoorn and Ray Babcock. Introduction. This course is taught by Michael Oudshoorn and Ray Babcock - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CS352 Software Engineering (Software Engineering in the Small)

CS352 Software Engineering(Software Engineering in the Small)

Michael Oudshoorn and Ray Babcock

Page 2: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 2

Introduction• This course is taught by Michael Oudshoorn and Ray

Babcock• Ray’s consulting times will be advertised outside of his

door. Please make an appointment with Jeannette if you want to see Michael.

• The lecture time for this course is Tuesday and Thursday 12:45pm-2:00pm.

• The course has a number of lectures and a number of assignments. Some lecture times will be used to facilitate cooperative projects.

• Lecture times will also be used for any class-wide announcements. You are expected to attend.

Page 3: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 3

Assumptions• We will assume that you have completed CS351

Software Engineering last semester.• CS352 is a project-based course that will give you the

opportunity to use all of the skills you learned last semester.

• There will be 2 major assignments, and some smaller activities, that must be completed this semester.

• You need to make a serious attempt at all assignments and exams in order to get a passing grade.

Page 4: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 4

Objectives• The objectives for CS352 are that you have the

opportunity to apply your skills from CS351 in a setting that models the real-world within the confines of the subject plans and objectives, and within the boundaries of a university course.

• We aim to develop and fine-tune your individual software engineering skills. [CS460/461 aims to develop your team-work].– This means you will take sole responsibility for your

work, but you will need to cooperate with others.

Page 5: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 5

Our hopes• By the time students finish this course they should have

real-world experiences that will see them well placed to get employment after taking CS460/461.

• Students should be able to talk to employers about the problems and issues involved in building large complex systems.

• Students will gain an understanding of the issues involved in cooperating and collaborating with others, while still making an individual contribution (i.e., you will be a critical member of a team).

Page 6: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 6

Individual-based• The projects are individual based. You will not be working as

a member of a team where the work is distributed across the team. You will however be cooperating with others in order to succeed.

• The aim is to develop appropriate skills for you to develop high quality correct code within a software development environment.

• Plagarism will not be tolerated. Even though solutions may be available on the internet you may not utilize them. You must design, build and test your own system.

• Penalties for cheating will be a score of 0 for that component and a 10% loss of available points for the project.

• Deadlines are firm. 20% of the available points are forfeited for each day (or part thereof) that a component is late.

• You can think of these are contractual penalties that apply to the project you are working on.

Page 7: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 7

Assessment• Quizzes – 10%• Exams

– Midterm – 20%– Final – 30%

• Assignments – 40%• There are 2 major projects.• A serious attempt must be made in all projects and

exams.• Expectation:

– High standards in the project work, i.e., high levels of professionalism.

– Treat this as though you are employed and an aiming to make an impression.

Page 8: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 8

Assessment• Contribution to assignment grades:

– Assignment 1: 0%– Assignment 2: 40%– Assignment 3: 40%– Journal: 20%

• Note that some of the assignments have multiple phases. Each of these phases will be graded separately and contribute toward the grade for the assignment.

Page 9: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 9

Resources available• Web pages found at www.cs.montana.edu/courses/352.• The projects will use some of the lecture time to allow

for the cooperation to take place. • Ray and/or Michael will be available to provide help and

assistance at these times.

Page 10: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 10

Consulting help• Like the real-world, you need to demonstrate a degree

of self sufficiency and initiative.• We expect you to be able to solve most of your own

problems!– Read the textbook– Use the library– Use the internet– Talk to your peers

• A TA will be available in a consulting room to offer limited assistance with coding problems.

Page 11: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 11

Textbooks• There are no fixed textbooks for this course. Like real-

life, you need to decide if you need one, and if so, which book best suits you.

Page 12: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 12

Hint• “Design for change” should be your mantra.• Expect it, plan for it, design for it.• Quality is an important part of any software system. To

achieve that you have to know what you are doing well and what you are not doing well.– Keep a journal and observe what you do – you will

need to hand this journal in at the end of the course (it will be graded).

– Record how long it takes to repair errors.– Observe where you introduced the error into the

system.– Think about how you could improve to be:

• More productive• More accurate.• More efficient.

Page 13: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 13

Discussion problem• A discussion problem has been handed out today. • It will be discussed in class in about a weeks time. • You will need to have done the work prior to the

discussion as you may be called upon to present your thoughts/solution.

• You will be expected to participate in discussion.• Treat it as a project meeting in a professional

environment.

Page 14: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 14

Assignment 1• This assignment gets you to practice your research and

self-learning skills – much as would happen in industry.• You will learn some skills in graphical user interface

construction using Java.• You will learn about inter-application communication

through sockets.• More specific advice at the end of this lecture…

Page 15: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 15

Assignment 2• Each project (assignment 2 and 3) has multiple parts

and you will need to cooperate with your classmates in order to be successful.

• The first project is a game that needs to have a graphical interface and the potential to play directly with a human, as well as against another program. It will provide an opportunity to practise your skills in:– Software design specifications– Coding– Software management– Testing– Communication– Self learning

Page 16: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 16

Assignment 2• Everyone will need to understand the problem and

design a solution.• The design will be provided to another person to

implement and you will supervise the person implementing your design.

• Finally, a third person will test the implementation against the design to verify that it is correct and to evaluate the design.

• Therefore, everyone will be involved in 3 projects.• Each aspect must be done as an individual, although

you will need to communicate with others involved in the project.

• You will need to evaluate each other as part of the assignment (getting and receiving feedback from your peers is part of professional life).

Page 17: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 17

Assignment 3• You will be given a problem and will need to design a

solution that is efficient and robust.• The project will get you to focus on your skills of

developing well designed and constructed code, as well as have you interact with your classmates in a cooperative manner.

• This project is still being designed and so there are not a lot of details right now.

Page 18: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 18

Journal• The final assignment handin is the journal that you need

to maintain over the course of the semester. The journal and associated essay you will be asked to write will contribute toward your final grade. A serious attempt must be made in order to get a passing grade in the subject.

• The journal will be a bound book in which you handwrite (i.e., not done with a computer) the following things relating to all activities for project work in this subject.

Page 19: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 19

Journal• The journal should include:

– Thoughts on the design and specification of assignments– The design– Observations on your performance

• Number of bugs, what kind of bugs, how long they took to eradicate, what part of the process you were in when you found the bug, what part of the process were you in when you injected the bug

– Total time spent in design, specification, coding, testing, debugging, …

– Minutes of meetings regarding the assignment work.– Continued self-study on the types of errors you made and

why.– …

• It needs to be treated like an Engineering journal. It needs to demonstrate that you have followed best practices and that you have given due consideration to the various options and outline why you have made the choices that you have made.

Page 20: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 20

Journal• At least twice during the semester at appropriate

intervals we need to review the journal and make some observations about yourself. These observations need to be noted in the journal.

• We are not subscribing when you evaluate your own performance but recommend 1/3 of the way through the semester and 2/3 of the way through the semester.

• You will be writing an essay to accompany your journal submission and the essay will ask how the journal helped and what improvements you were able to identify in yourself, how you addressed the concerns and how successful was your attempt to deal with these issues.

Page 21: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 21

Assignment 1 – more details• Assignment 1 does not contribute to your final grade. • In a professional environment you often have to learn

things for yourself in order to use them in a project.• Assignment 1 represents one such instance.• In assignment 2 and 3 you will be asked to make use of

some libraries (Swing) and some programming techniques (sockets) that you may not previously have used.

• You may download whatever you need to learn these features. We recommend that you also write some code to make sure that you are sufficiently familiar with them.

• Remember, assignments 2 and 3 must be your own work.

Page 22: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 22

Swing• Swing is a Java Foundation Class (JFC) to assist in

building graphical user interfaces.• It has a demonstration

– DEMONSTRATION• Useful URL’s

– http://java.sun.com/docs/books/tutorial/uiswing/– http://examples.oreilly.com/jswing2/code/

• There are lots of useful examples here that should help you become familiar with the workings of Swing.– Remember, you do not have to be an expert in all of

the Swing functions. Think about what you are likely to use when writing a board game.

Page 23: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 23

Sockets• Sockets are like a pipe connecting two programs. One

establishes the socket and the other connects to it. Once connected, a socket allows 2-way communication between the programs.

• This is a convenient way to allow data exchange between two programs.

• Examples are provided from the course web page.– Note that the socket needs to use ports in the range

12000 – 12040 in order to get through the firewall.

Page 24: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 24

Socket Server//: tcpServer0.java// SYNOPSIS: tcpServer0 // DESCRIPTION: The program creates

a// tcp socket in the inet domain, binds it

to// port 12020, listen and accept a

connection// from tcpClient0, and receives any

message// arrived to the socket and prints it out/////////////////////////////////////////////////////////////

////////////

import java.io.*;import java.net.*;

public class tcpServer0 { // Choose a port outside of the range

1-1024: public static final int PORT = 12020;

public static void main(String[] args) throws IOException { // Create a Server Socket and binds it

to // the port 12020 ServerSocket s = new

ServerSocket(PORT); // System.out.println("Started: " + s); try { while (true)

{ // Blocks until a connection occurs: Socket socket = s.accept();

Page 25: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 25

Socket Servertry {

// System.out.println("Connection

// accepted: "+ socket);// Read from InputStream from the Socket

BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()));

// get the Recived string String str = in.readLine(); // print the received message to

// the STND output System.out.println("message

receieved: " + str);

// !!! Send a response PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(

socket.getOutputStream())),true);

// send a response to the

tcpClient out.println("Howdy to you too");

// Always close the two sockets... } finally {

// System.out.println("closing..."); socket.close(); } } //while true } finally { s.close(); } } } ///:~

Page 26: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 26

Socket Client//: tcpClient0.java// SYNOPSIS: tcpClient0 <hostname>// DESCRIPTION: The program creates a tcp

socket in the inet // domain, connects to tcpServer0

running at <hostname> // and waiting at port 12345, sends

the message "HI" and exits//////////////////////////////////////////////////////////////////////

/////////

import java.net.*;import java.io.*;

public class tcpClient0 { public static void main(String[] args) throws IOException { if (args.length != 1) { System.out.println("Usage: java

tcpClient0 hostname"); System.exit(0); } // Connect to the given machine InetAddress addr =

InetAddress.getByName(args[0]);

// System.out.println("addr = " + addr); // try to connect tcpServer // !!! You need to bind to a local port so that

the response from // !!! the server can get through the firewall,

so replace as // !!! shown. The allowable ports are 12000

- 12040, so both // !!! tcpServer0.PORT and tcpClient0.PORT

have to be in the // !!! range 12000 - 12040. The socket

constructor below creates // !!! the socket, binds it to the local address

and port // !!! INADDR_ANY is wildcard for any IP

address.

byte [] INADDR_ANY = {0,0,0,0};// !!!Taking a few liberties with the example to

avoid a lot of futzing // !!!around. int tcpClient0_PORT = 12030; int tcpServer0_PORT = 12020;

Page 27: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 27

Socket Client

// Socket socket = // new Socket(addr,

tcpServer0.PORT); Socket socket = new Socket (addr,

tcpServer0_PORT, InetAddress.getByAddress

(INADDR_ANY), tcpClient0_PORT); // Guard everything in a try-finally to

make // sure that the socket is closed:

try { // Output is automatically flushed // by PrintWriter: PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(

socket.getOutputStream())),true);

// send "HI" to the tcpServer out.println("HI");

// !!! Get a response and print it

BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream()));

// get the Received string String str = in.readLine();

Page 28: CS352 Software Engineering (Software Engineering in the Small)

CS352 - Software Engineering (AY2005) 28

Socket Client// print the recieved message

to // the STND output System.out.println(

"message receievd: " + str);

} finally {// System.out.println(

"closing the socket...");

socket.close(); } }} ///:~