1 / 28

CS352 Software Engineering (Software Engineering in the Small)

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

Download Presentation

CS352 Software Engineering (Software Engineering in the Small)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. 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. 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. 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). 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. 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. 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. 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. 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. 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. 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. 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. 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… 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 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). 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. 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. 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. 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. 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. 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. 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. CS352 - Software Engineering (AY2005)

  24. //: 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(); Socket Server CS352 - Software Engineering (AY2005)

  25. try { // 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(); } } } ///:~ Socket Server CS352 - Software Engineering (AY2005)

  26. //: 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; Socket Client CS352 - Software Engineering (AY2005)

  27. // 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(); Socket Client CS352 - Software Engineering (AY2005)

  28. // print the recieved message to // the STND output System.out.println( "message receievd: " + str); } finally { // System.out.println( "closing the socket..."); socket.close(); } } } ///:~ Socket Client CS352 - Software Engineering (AY2005)

More Related