CS352 Software Engineering (Software Engineering in the Small) - PowerPoint PPT Presentation

About This Presentation
Title:

CS352 Software Engineering (Software Engineering in the Small)

Description:

Title: PowerPoint Presentation Last modified by: michael Created Date: 1/1/1601 12:00:00 AM Document presentation format: Letter Paper (8.5x11 in) Other titles – PowerPoint PPT presentation

Number of Views:25
Avg rating:3.0/5.0
Slides: 29
Provided by: csMontana4
Category:

less

Transcript and Presenter's Notes

Title: CS352 Software Engineering (Software Engineering in the Small)


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
  • Rays 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 1245pm-200pm.
  • 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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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.

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.

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

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

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

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.

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.

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.

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.

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.

22
Swing
  • Swing is a Java Foundation Class (JFC) to assist
    in building graphical user interfaces.
  • It has a demonstration
  • DEMONSTRATION
  • Useful URLs
  • 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.

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.

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

25
Socket Server
  • 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()

26
Socket Client
  • // tcpClient0.java
  • // SYNOPSIS tcpClient0 lthostnamegt
  • // DESCRIPTION The program creates a tcp
    socket in the inet
  • // domain, connects to
    tcpServer0 running at lthostnamegt
  • // 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

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


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()
  • ///
Write a Comment
User Comments (0)
About PowerShow.com