Tags: %TAGME{ tpaction="" web="Main" tag="" }% view all tags

SCMP 348 Software and System Design

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 Highsmith

Design and programming are human activities; forget that and all is lost.
--Bjarne Stroustrup

Simplicity is prerequisite for reliability
--Edsger W.Dijkstra

Perfection (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-Exupery

Program testing can be used to show the presence of bugs, but never to show their absence!
--Edsger Dijkstra

A 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


Build management



<a name="Ian_Sommerville_Software_Enginee"></a>Ian Sommerville.
Software Engineering
Tenth Edition.
Addison-Wesley Publishing Company


<a name="Method_used_in_the_course"></a>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 Question 8
Quiz Answer 8
Discussion questions 2 each (4)
Total 20
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 Formation After listening to all project options, each student will submit applications for at least two. Applications
Initial Project Research Collecting 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 Engineering Study organization, interview stakeholders. Develop and present a software specification System Requirements Specification
Research Solution Options Consider 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 Management Consider 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 Design The 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 Architecture
  • System Design Document

System Prototype Several 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 Planning The team will create a system test plan with the goal of demonstraiting that the system meets the system specifications. Test Plan
System Delivery At 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 Documentation
  • Installation Documentation
  • System Demo
  • System 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.

<a name="Grading_Table"></a>Grading Table

Quiz Questions 5
Quizzes 5
Individual Homework 15
Team Project 50
Evaluation (Final Project Grade, Personal Statement, Medterm Assessment) 25
Total 100

2020 Team Projects: Teams


DateTopicReading / InfoQuizSlidesAssignment Due
Jan 14 Introduction Chapter 1, http://softwareimpact.bsa.org/
Jan 16

Partner Presentations

Project Introductions
Software Processes
Software process models
Process activities

Chapter 2.1-2.2, Discussion Questions Quiz Ch2_SW_Processes Questioneer
Jan 21 Partner Presentations
Project Introductions
Software Processes
Coping with change
The rational unified process
Chapter 2.3-2.4, Discussion Questions Quiz Ch2_SW_Processes Questions
Jan 23 Agile software development

Chapter 3, Agile Methods, Discussion Questions
20 Webapp testing tools

Quiz Ch3._Agile_SW_Dev Project Applications and resume
Jan 28 Team Assignments and Formation Activities
Tips for CEL Projects
Jan 28 Introduction to GitHub - a collaboration tool GIT Video - view for quiz,
GIT Tutorial - review for quiz, Discussion Questions
Quiz Git and GitHub
Introduction to Git anf GitHub
Git Cheat Sheet

Jan 30 Team First Meeting Meeting Report
Feb 4 Requirements Engineering Chapter 4.1-4.7
Discussion Questions
Quiz Ch4_Reg_Eng

Git HW

Project Proposal

Feb 6 Conceptual Database Design Crow's Foot Natation, Relational Database Design, LucidChartDatabaseDesign, Database Normalization, Normalization Video
Discussion Questions

Database Design Slides, Database Design Problem, LucidChart, Vertabelo

Database Normalization

Feb 11 Team Meeting SQLTutorial, Learn SQL, phpmyadmin Tutorial Example Requirements Document
Feb 13 System modeling Chapter 5.1-5.3, Discussion
Database Activity, PhoneApp - C++ ( GitHub), Python ( GitHub)
Quiz Ch5_System_modeling Requirements Draft,
Feb 18 System modeling
Team Meeting
Chapter 5.4-5.5,
Requirements Review with Instructor

UML Diagrams
Quiz Ch5_System_modeling Questions
Feb 20 Architectural design Chapter 6.1-4, Architectural Patterns, More Patterns, Discussion Quiz

MVC Examples
Layered Arch
Repository Arch
Client Server Arch
Pipe and filter Arch

Requirements Complete

Feb 25 Project Management Chapter 22.1-3, Example Risk Tables , Discussion Quiz Ch22_Project_management

Meet with professor as team to review Requirements prior to end of day 2/23

Feb 25 Project management, Risk Assessment Personality Style Self-Test, Workspace
System Architecture Draft
Feb 27 Team Meeting Team Pages

Database Design Exercise

phpMyAdmin Activity
System Architecture Review with Instructor

Feb 27 Risk Driven Approach to Software Creation Risk-Driven Model for Agile Software Architecture, Risk Tables, Discussion Questions
Spring Break
Mar 24 ACM Code of Ethics ACM Code of Ethics and Professional Conduct, Discussion Quiz

Ethical Theories
BBC Ethical Introduction

The Software Alliance

ACM Code of Ethics

System Architecture Complete
Mar 26 ACM Case studies

ACM Case Studies

Quiz UX Dark Patterns Risk Tables Phase one
Database Activity
Mar 31 Team Meeting

Team Form (fill in together)
Individual Form (fill in on your own)

Start at main meeting here: Link

Midterm Evaluation Due
Apr 2 Software Testing Chapter: 8:1-4, Discussion Quiz Chapter 8 Slides
JUint Tutorial
, Web App Testing
System Design Draft, Questions
Apr 2 Software Testing Testing Ideas
Apr 7 Team Meeting Team presentations of testing ideas. Mindfulness Can Improve Problem-Solving Skills
Apr 9 Dependability and security Chapter 10:1-4, Discussion Quiz Ch10_Dependable_systems System Design Complete ,
System Design Review with Instructor
Apr 14 Team presentation & Meeting Team Presentation of Prototype 1 Required Meeting Signup
System Prototype 1
Apr 16 Quality Management Chapter 24:1-4, Discussion Quiz

Quality Management Slides

Pair Programming
Extreme Programming
ISO 9001 in a Nutshell

Apr 21 Team Meeting
Apr 23 In class demonstrations System Prototype 2
Apr 28 Systems of Systems Chapter 20:1-4, Discussion Quiz Systems of Systems
SoS article
More Slides
Apr 30 Video

Watch before class: History of Software Engineering

Quiz Slides Questions
Apr 30 Team Meeting Test Plan
May 5 Distributed Software Engineering Ashleigh Zarley - Talk
Chapter 17
Quiz Distributed Systems Slides Test Report
May 7 Team Meeting Seven Unbreakable Rules Complete System Documentation
May 15 1:30-4:30 p.m. Each team presents full system design and demo Final Presentation Outline Presentation Schedule Presentation Assessment Form
Personal Statement

<a name="Disability_Statment"></a>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.

<a name="Software_project_grading_rubric"></a>Software project grading rubric

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 task Selected 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 presentation Provided minimal presentation of design problem and results. Presentation was reasonable and organized. Presentation presented mostly in a professional manner Presentation was coherent and well organized. Presentation presented in a professional manner
Give clear and coherent written final report Provided 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 team Contributions 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 project Project 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 problem Project document/solution exceeded the initial objectives. Innovative approaches were demonstrated in the design. Solution indicated a thorough understanding of project.
02-16 System modeling Chapter 5.4-5.5
C++ Database Activity, Discussion
Quiz Ch5_System_modeling.pptx Questions

Edit | Attach | Watch | Print version | History: r63 < r62 < r61 < r60 < r59 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r63 - 2020-05-15 - JimSkon
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback