Brett Heath-Wlaz (bheathwl) Project: Bear Advisor *** Component Diagram *** +-------------------+ | HTML interface | +------------> | and Connection | <------+ | | Manager component | | | +-------------------+ | | ^ ^ | | | | | | | | | | | | | V V V V +-----------+ +--------------+ +-----------+ +-----------+ | Login and | | Course | | Grades | | Admin | | Security | | Registration | | Component | | Tools | | Component | | Component | | | | Component | +-----------+ +--------------+ +-----------+ +-----------+ | | | | | | | | | | | | | ___________ | | | / \ | | +---> |\___________/| <-+ | | Database | | | Component | <----------+ \___________/ *** Component Descriptions and Assignments *** The HTML interface and Connection Manager component is responsible for generating the HTML pages that users see and interact with. It will be able to create "semi-custom" pages, based on information from the database. This module keeps a list of connected users, and will notify the appropriate sub-component whenever a user performs an action. The sub-components will perform the action, and request that the appropriate feedback be displayed to the user. This module is I/O only, and has no logic or database access. Component assigned to: Emily Leventhal The Login and Security Component handles all matters related to security and authentication. It verifies user credentials through the Kerberos server, and sets up a secure connection to the user. It informs the Connection Manager of successful logins, so that the user can interact with the system normally after logging in. Component assigned to: Melissa Cheng The Course Registration Component allows the user to view and change course registration information. This includes courses and grade options. The HTML interface will report when the user tries to perform one of these actions (eg. drop a course) and this component will handle the request. This component has database access, and changes to registration information will be made from this component. After each action, this component will instruct the HTML interface to give certain feedback to the user. Component assigned to: Brett Heath-Wlaz The Grades Component allows the user to view grade reports from previous semesters and order transcripts. The HTML interface will report when the user tries to perform one of these actions (eg. view last semester's grades) and this component will handle the request. This component has database access, and grade information will be read from the database by this component. This component will instruct the HTML interface to give certain feedback to the user, like displaying the requested grades. Component assigned to: Neelu Bedi The Admin Tools component allows privileged users (administrators) to perform special actions on the database. The Login Module can determine which users are "privileged", and can tell the HTML module to allow those users to access the admin tools. When a privileged user performs an administrative action (such as backing up the database), the HTML interface reports the action to this module, and the request is carried out. This component then instructs the HTML module to give appropriate feedback. Component assigned to: Rikard Grafstroem The Database component is where all the information about students and users is stored. This component must provide an interface to a database with all this information. Nearly all mid-level components use this component, so it must provide the ability to retrieve all the data requested. Access should be as efficient as possible. Component assigned to: David Yun *** External Dependencies *** This project requires the ability to serve web pages, and use Secure Sockets to do so securely. Access to an authentication server is required to identify users. This project requires access to student and course data to put in the database. *** Team Organization *** The project lead will be Joe Fuqua. He has expressed great interest in taking an organizational role in the project, and is skilled in keeping people on schedule and organized. He will be responsible for setting intermediate goals and checkpoint deadlines, and keeping people focused on the right goals. Joe will also be responsible for writing the user documentation for the project. Brian Chuck will be the lead tester and debugger for the project. Brian will stay in touch with individual programmers, and ensure that they are producing good, working code. Brian will also make himself available to help people with code or design problems that they encounter. Finally, Brian will ensure that the team members communicate effectively with one another, and will serve as moderator if conflicts arise. Rikard Grafstroem, David Yun, Emily Leventhal, Melissa Cheng, Brett Heath-Wlaz, and Neelu Bedi will be the team's programmers. They will each be responsible for a component, as described above, and will be responsible for desiging, writing, and testing that component thoroughly. *** Schedule *** by Mon, 3-6: Finalize organization and top-level design. by Fri, 3-10: Finalize interfaces between components. Distribute among programmers. All programmers commence coding. by Wed, 3-15: Database and HTML components should create and test stub implementations. Database component should have dummy data. Distribute among programmers. by Fri, 3-24: First integration. Test all components individually, compile bug list. Distribute among programmers, lead tester. by Wed, 4-5: Complete bug fixes and code refinements from first integration. Second integration. Retest components, update bug list. Distribute among programmers, lead tester. by Mon, 4-10: Complete bug fixes and code refinements from second integration. Freeze code functionality. Final integration. Address bugs on an individual basis. by Fri, 4-14: Finish fixing integration bugs. All programmers commence full system tests. Address bugs on an individual basis. by Wed, 4-19: Finish full system tests. Complete documentation. All team members commence documentation review. Address documentation fixes on an individual basis. by Fri, 4-21: Complete documentation fixes. *** Assumptions *** I assumed that the administrative tool was to be available through the same HTML interface as everything else.