SCMP 348.00 Software and System Design S20

James Skon, Hayes 310, 740-427-5369
Department of Mathematics and Statistics
Spring 2020
Location and Time : Hayes Hall 203, Time: 2:40-4:00, Days: TH
Online Office hours:

These are my scheduled office hours. I am available at other times by appointment, just email with a request. You may join the meet and listen as others asking questions. If you wish to speak to me privately please just ask, and I will create a private conference link.

  • Monday-Thursday 1:00-2:30 pm. Google Meet Link. Phone in: ‪+1 631-619-8958‬ PIN: ‪927 696 037‬#
  • You may contact me via google hangout as skonjp@kenyon.edu ( https://hangouts.google.com) anytime between 8:00am-6:00pm EST. If I don’t answer I’m unavailable, try again later.
  • Emails will be answered as quickly as possible, but may not be answered evenings or weekends.

Information on shift to online

As we move the course online, information about the change will be posted here.

1. The text book may be access for free on Moodle: https://moodle.kenyon.edu/mod/lti/view.php?id=81439

Also here: https://bookshelf.vitalsource.com/# Just search for “Software Engineering”

2. The class will meet as scheduled, but online, using google meet. There will be a durable google meet links for the class, as well as links for each of the Teams. You can call in with a phone if the internet is not working

You can use your group meeting link any time, not just during the class times.

3. Access to cslab.kenyon.edu: Because you are off campus you cannot access this machine using SSL (e.g. PUTTY or ssh) to get a terminal session or to transfer files. The solution is to run a Kenyon Windows VM, which actually is running on campus, and will have full access to the server. You will be able to use PUTTY or ssh, and use Notepad+ to access and edit files. Here are the instructions: https://lbis.kenyon.edu/node/476

You will not be able to transfer files to and from your personal computer to cslab.kenyon.edu using this method. If you need files transfered OCCASIONALLY (i can’t do this a lot) just send it to me, or tell me where it is on the server, and I will do it for you.

4. All assignments will still be due, but the due dates shifted one week later.

5. See my office hours above.

The best way to get a project done faster is to start sooner
–Jim HighsmithDesign and programming are human activities; forget that and all is lost.
–Bjarne StroustrupSimplicity is prerequisite for reliability
–Edsger W.DijkstraPerfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away
–Antoine de Saint-ExuperyProgram testing can be used to show the presence of bugs, but never to show their absence!
–Edsger DijkstraA primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.
–Niklaus Wirth

Course description

A study of software design project that requires planning, analysis, design, implementation, testing and maintenance. Different methods of planning, definition, requirements analysis, and cost estimation are considered. A central component of the course is a semester long team project which engages a team of 3-5 students in the analysis, design, implementation, and documentation of a significant applied project. The goal of this team project is for the students to engage with the material as they work to solve a real world problem. These projects are real needs of organizations in the surrounding community (including Gambier, Knox county, and at times, beyond). Prerequisite: SCMP118 Introduction to Programming or SCMP318 Software Development or SCMP218 Data Structures

Off Campus Travel Requirements

This course involves colaboration with off-campus community partners, for and with whom you will be descovering system requirements and designing and implementing solutions. This typically will require weekly or bi-weekly meetings on the romote site with the organizational partner. Kenyon College will provide transportation with KAT (Knox Area Transit) on an as needed basis. The students are required to work with the partners to set up meeeting times, and then work this the instructor who will facilitate the provisioning of transportation. Student will need to give the instructor at least 3 days notice prior the the transportation need.

Objectives of the course for the student

  1. To recognize the significance of using engineering methodologies in software design and development.
  2. To learn how to apply software engineering techniques and methodologies to the development task.
  3. How to develop and construct a software specification.
  4. How to develop and construct a software design.
  5. How to verify and validate software.
  6. To apply various techniques of software management.
  7. To work as the member of a design and development team to develop a product for a real world entity in the community.
  8. To establish connections between academic knowledge and civic life.
  9. To develop professional communication skills by working within and across communities, context, and social structures.

Team Management

Trello – https://trello.com/

Automated testing

https://www.selenium.dev/

Build management

Travis

Text

<a name=”Ian_Sommerville_Software_Enginee”></a>Ian Sommerville.
Software Engineering
Tenth Edition.
Addison-Wesley Publishing Company
2015
website
SE.jpeg

Method used in the course

This course will use a combination of limited lecture, mostly discussion, team projects work, team project presentations. The team’s projects are a central activity in the course. The project is specifically design to require you to function as a member of a team. Each team is responsible for internal organization and assignment of member responsibilities. People in the group should be assigned to have primary responsibilities for specific aspects. This does NOT mean they do all the work on that aspect, rather that they coordinate, and facilitate the work they are responsible for making sure it is complete and coherent. You should plan for regular (at least weekly) scheduled meetings.

This course is a higher level course. Student should expect to spend between 8-10 hours outside of class per week on the class work and project. If you are spending less then 8 hours a week outside of class, you will not be able to keep up with the assignments and work.

Daily questions and answers, and quizzes: As mentioned above, this class will be discussion oriented. You will be expected to read the daily readings (or in some cases watch videos) prior to each class in which it is covered. You will submit on Moodle one interesting, non-trivial “question” or “problem” based on the reading. You will also write a ½ to 1 page comprehensive solution or answer to that question or problem. The question should preferably require some type of problem solving, analysis, or synthesis. The question should only require information from the required reading to answer. The answer should be quite complete. It is assumed you will write a question for which you understand the answer, and that the answer will be complete. You will also want to take notes on the chapter as you read it, as you will see below. In addition, you will need to write 1 or 2 questions about topics or concepts you feel need reinforcing in class discussion. Please be specific for these. The questions/answers and discussion questions are to be submitted via Moodle by 8:00 a.m. the day of the class. (If you submit these to me by 4:00 p.m. the day before class you will receive 1 point extra credit.). You are also to submit all questions to the appropriate class discussion board. For class one of the questions will be used as a small quiz question that everyone must answer (on moodle) (the author of the question does not need to take quiz, they get an automatic 100%) to write a solution or answer to the question. Note that the in class answers are not expected to be as complete as the answer supplied by the author of the question. You will be given 5 minutes for this task. You will only be allowed to use your written notes from the chapter. We will then submit these, and begin discussing the discussion question. Grading will be as follows:

ItemMax Points
Quiz Question8
Quiz Answer8
Discussion questions2 each (4)
Total20

Software Engineering Team Project . Each student will participate on a software engineering team, working through the processes as a team. As seen in the grading below there are a variety of activities, some team oriented, and some individual. Participation in all team activities, and completion of individual work is essential to this aspect of the course. The activities the team engages in will include the following critical phases, with each phase having an associated document, and presentation.

Engagement with Collaborators. Central to the success of this type of project is close engagement and collaboration among the project partners, stakeholders and the student creators. It is essential that communication and collaboration be maintained throughout the project. It is thus expected that the students initiate and maintain contact our partners on a regular basis. This includes providing them with drafts of the project specifications, plans, designs, prototypes, and solutions for review and feedback. Meetings can occur in person or virtually. Each meeting must be documented on the provided reflections forms (see reflection section below). Meetings are expected to occur at least once a week.

A least once a week each team must complete a team partner meeting reflection form. A different team member will fill in this form after each meeting, cycling through team members so a certain member will fill one in every 4th meeting. The form is here: Partner Meeting Reflection Form.

PhaseActivityDocument and presentation
Project Selection and Team FormationAfter listening to all project options, each student will submit applications for at least two.Applications
Initial Project ResearchCollecting initial information of the partner’s needs, and producing an inital description of what is the nature of the problem that need solving. What are the major functions, and and what information needs to be managed.Project Proposal
Requirement EngineeringStudy organization, interview stakeholders. Develop and present a software specificationSystem Requirements Specification
Research Solution OptionsConsider platforms and architectures of possible solutions. This includes use of existing components (open source or commercial), languages, and the organization (architecture of proposed solutions.)Project Options overview and table
Risk Assessment and ManagementConsider the aspects of the system and it’s building that present the highest risks to failure. Evaluate the relative levels of risks, and select the most important for mitigation. Then design a risk mitigation strategy for those (1-3) that present the greatest overall risk. This activity will be repeated periodically.Risk Tables
System DesignThe team will select an solution option and create a system architecture and a system design. The design will include a specification of all system components, a specification of the interfaces between the components, and between the components and external entities, and a user interface specification and mock-up.System ArchitectureSystem Design Document
System PrototypeSeveral interations of protoypes will be created. These will serve to demonstrate the system functions and look and feel. These will also serve to mitagate rish by testing and trying out aspects not well understood, as well as providing an example for the stakeholders for feedback.Demonstration,
System Code and Documentation
System Test PlanningThe team will create a system test plan with the goal of demonstraiting that the system meets the system specifications.Test Plan
System DeliveryAt the end of the course the team will present a working system or prototype system to the community entity. This will include a presentation and demonstration, as well as all code and documentation.Operation DocumentationInstallation DocumentationSystem DemoSystem Presentation

Reflection. A central part of this course is critical reflection, reflection about the processes used, reflections about preparing for meetings with community partners, reflections about the quality and effectiveness of interactions with community partners, reflections about the methods, advantages, and effectiveness of team work, and reflections about the processes of proof reading, critiquing, and unifying the work produced by the team. This is seen below in the reflection component of each phase.

The goal will be to, for each of the phases above, engage in the following reflective activities:

  1. Outcomes:
    1. What were the specific objectives of your meeting? What goals did you have?
    2. What is the time and place (or mode) of the meeting?
    3. Who was present?
    4. Give a summary of the the meeting outcomes.
    5. What new questions arose that need to be addressed.
  2. Describe:
    1. How did you prepare before meeting with project principals to gather information for this phase?
    2. Who did you interact with in order to proceed with the assignment? Why with this person? How useful was the information gathered?
    3. In what ways did you work as a team? In particular, did you divided the work among team member, and if so, how did you divide it? Alternatively, did you actively work together as a group, and on what parts?
  3. Examine:
    1. How did your interactions with project principals go? Were you appropriately prepared? Did you miss anything important?
    2. Did you use your time, and the time of the project principals effectively as you gather information? How effective were you in recording the information from these meetings in ways that are useful for moving the projects forward.
    3. Compare and contrast the value of working individually on components of the project verses working together actively as a team.
    4. How effective were you in working together to produce output that was well integrated, complete, and error free? Was there unnecessary duplication of effort?
  4. Articulate Learning:
    1. What did you learn about preparing for interactions with project principals? What will do to prepare for future phases to improve effectiveness and productivity of these interactions.
    2. What did you learn about having effective and productive interactions with project principals? How with you improve record keeping? How will you prepare for follow-up queries?
    3. What did you learn about effective team work? Can you categorize and describe the types of work that is best done individually verses done as a team?
    4. How can you work more effectively to check and improve each other’s work, and to better integrate the corporate work product into a unified, cohesive document?

One unexcused absence is allowed. After that, your final grade will be reduced by 2% per each unexcused absence. Also coming late or leaving early (without a written excuse) will result in a ‘late’. Three of these will count as a full unexcused absence.

Grading Table

CategoryPercent
Quiz Questions5
Quizzes5
Individual Homework15
Team Project50
Evaluation (Final Project Grade, Personal Statement, Medterm Assessment)25
Total100

2020 Team Projects: Teams

Schedule

DateTopicReading / InfoQuizSlidesAssignment Due
Jan 14IntroductionChapter 1, http://softwareimpact.bsa.org/
https://trello.com/
Ch1_Introduction
 FirstDay
Jan 16Partner PresentationsProject Introductions
Software Processes
:
Software process models
Process activities
Chapter 2.1-2.2, Discussion QuestionsQuizCh2_SW_ProcessesQuestioneer
 Questions
Jan 21Partner Presentations
Project Introductions
Software Processes
:
Coping with change
The rational unified process
Chapter 2.3-2.4, Discussion QuestionsQuizCh2_SW_ProcessesQuestions
Jan 23Agile software developmentChapter 3, Agile MethodsDiscussion Questions
20 Webapp testing tools
 Junit5
QuizCh3._Agile_SW_DevProject Applications and resume
Questions
Jan 28Team Assignments and FormationActivities
Tips for CEL Projects
ProjectTeams2020
Jan 28Introduction to GitHub – a collaboration toolGIT Video – view for quiz,
GIT Tutorial – review for quiz, Discussion Questions
QuizGit and GitHub
 Introduction to Git anf GitHub
 Git Cheat Sheet
Jan 30Team First MeetingMeeting Report
Feb 4Requirements EngineeringChapter 4.1-4.7
Discussion Questions
QuizCh4_Reg_EngQuestions
Git HW
Project Proposal
Feb 6Conceptual Database DesignCrow’s Foot NatationRelational Database DesignLucidChartDatabaseDesignDatabase NormalizationNormalization Video
 Discussion Questions
QuizDatabase Design SlidesDatabase Design ProblemLucidChartVertabeloDatabase NormalizationQuestions
Feb 11Team MeetingSQLTutorialLearn SQLphpmyadmin TutorialExample Requirements Document
Feb 13System modelingChapter 5.1-5.3, Discussion
Database ActivityPhoneApp – C++ ( GitHub), Python ( GitHub)
QuizCh5_System_modelingRequirements Draft,
Questions
Feb 18System modeling
Team Meeting
Chapter 5.4-5.5,
Requirements Review with Instructor

Discussion
UML Diagrams
QuizCh5_System_modelingQuestions
Feb 20Architectural designChapter 6.1-4, Architectural PatternsMore PatternsDiscussionQuizCh6_Architectural_design
 MVC Examples
Layered Arch
Repository Arch
Client Server Arch
Pipe and filter Arch
Requirements Complete

Questions
Feb 25Project ManagementChapter 22.1-3, Example Risk Tables , DiscussionQuizCh22_Project_managementQuestions
Meet with professor as team to review Requirements prior to end of day 2/23
Feb 25Project management, Risk AssessmentPersonality Style Self-TestWorkspace
System Architecture Draft
Feb 27Team MeetingTeam PagesDatabase Design ExercisephpMyAdmin Activity
System Architecture Review with Instructor
Feb 27Risk Driven Approach to Software CreationRisk-Driven Model for Agile Software ArchitectureRisk TablesDiscussionQuestions
Spring Break
Mar 24ACM Code of EthicsACM Code of Ethics and Professional ConductDiscussionQuizEthical Theories
 BBC Ethical IntroductionThe Software AllianceACM Code of Ethics
Questions
System Architecture Complete
Mar 26ACM Case studiesACM Case Studies
 Discussion
QuizUX Dark PatternsRisk Tables Phase one
Database Activity
Questions
Mar 31Team MeetingTeam Form (fill in together)
Individual Form (fill in on your own)
Start at main meeting here: LinkMidterm Evaluation Due
Apr 2Software TestingChapter: 8:1-4, DiscussionQuizChapter 8 Slides
JUint Tutorial
Web App Testing
System Design DraftQuestions
Apr 2Software TestingTesting Ideas
Apr 7Team MeetingTeam presentations of testing ideas.Mindfulness Can Improve Problem-Solving Skills
Apr 9Dependability and securityChapter 10:1-4, DiscussionQuizCh10_Dependable_systemsSystem Design Complete ,
System Design Review with Instructor
Questions
Apr 14Team presentation & MeetingTeam Presentation of Prototype 1Required Meeting Signup
 https://meet.google.com/mtd-poyv-njk
System Prototype 1
Apr 16Quality ManagementChapter 24:1-4, DiscussionQuizQuality Management SlidesPair Programming
 Extreme Programming
ISO 9001 in a Nutshell
Questions
Apr 21Team Meeting
Apr 23In class demonstrationsSystem Prototype 2
Apr 28Systems of SystemsChapter 20:1-4, DiscussionQuizSystems of Systems
 SoS article
 More Slides
Questions
Apr 30VideoWatch before class: History of Software Engineering
Discussion
QuizSlidesQuestions
Apr 30Team MeetingTest Plan
May 5Distributed Software EngineeringAshleigh Zarley – Talk
Chapter 17
QuizDistributed Systems SlidesTest ReportQuestions
May 7Team MeetingSeven Unbreakable RulesComplete System Documentation
May 151:30-4:30 p.m.Each team presents full system design and demoFinal Presentation OutlinePresentation SchedulePresentation Assessment Form
Personal Statement

Disability Statment

Kenyon College values diversity and recognizes disability as an aspect of diversity. Our shared goal is to create learning environments that are accessible, equitable, and inclusive. If you anticipate barriers related to the format, requirements, or assessments of this course, you are encouraged first to contact the office of Student Accessibility and Support Services (SASS) by emailing Erin Salva at salvae@kenyon.edu, then to meet with the instructor to discuss accommodation options or adaptations.

Software project grading rubric

CategoryDeveloping
1-3
Competent
4-7
Accomplished
8-10
Score
Articulate requirements and design of the Project.Demonstrated understanding of requirement and design issues.Articulated requirement and design of the project. Described most constraints and variables to be maximized or minimized.Clearly articulated requirements and design and underlying issues. Clearly articulated constraints and variables to be maximized or minimized. Correctly answered clarifying questions, demonstrating mastery of issues.
Plan the solution and implementation of the project.Identified some critical tasks. Created plan with some foreseeable problems.Identified critical tasks. Delegated tasks to team members. Created plan for task and project completion that is workable with some modifications.Identified critical tasks. Delegated tasks to team members. Accurately estimated time and resources for critical tasks. Created credible plan for task and project completion.
Choose appropriate tools and methods for each taskSelected appropriate tools and methods for most tasks. Identified strengths and weakness of most chosen tools.Selected appropriate tools and methods for each task. Identified strengths and weaknesses of various tools and methods. Cited reasons for choices.Selected appropriate tools and methods for each task. Articulated strengths and weakness of various tools and methods. Discussed and gave credible justification for choices.
Give clear and coherent oral presentationProvided minimal presentation of design problem and results.Presentation was reasonable and organized. Presentation presented mostly in a professional mannerPresentation was coherent and well organized. Presentation presented in a professional manner
Give clear and coherent written final reportProvided acceptable final report detailing all project phases and results.Provided acceptable final report detailing all project phases and results. Report was reasonable and organized. Report was provided mostly in a professional manner.Provided acceptable final report detailing all project phases and results. Report was coherent and well organized. Report presented design in a clear and professional manner.
Function well as a teamContributions of team members’ variable. Lack of leadership on the project. Many individual contributions with some overlap.Most team members contributed. Little or no duplication of effort. Conflicts usually amicably resolved. Team members demonstrated some understanding of the overall project.Each team member contributed to the success of the design. Little or no duplicated effort. Few conflicts, amicably resolved. .Team members able to respond to audience’s questions throughout the presentation.
Create well documented set of life cycle products specific to the projectProject documents/solution was acceptable but limited due to the background of the team.Project documents/solution met objectives set for the project. Project documents/solution considerations showed team generally understood the problemProject document/solution exceeded the initial objectives. Innovative approaches were demonstrated in the design. Solution indicated a thorough understanding of project.

Presentation Rubric

  1. Clear Introduction
  2. Overview
  3. Clarity
  4. Evidence of Preparation
  5. Description of System Architecture
  6. Use of diagrams and visual aids
  7. Entire Team Involvement
  8. Organization
  9. Demonstration
  10. Overall quality

Scroll to Top