{"id":43,"date":"2019-03-28T11:20:17","date_gmt":"2019-03-28T15:20:17","guid":{"rendered":"https:\/\/sites.bu.edu\/braude\/?page_id=43"},"modified":"2019-03-28T11:40:41","modified_gmt":"2019-03-28T15:40:41","slug":"met-cs-673-software-engineering","status":"publish","type":"page","link":"https:\/\/sites.bu.edu\/braude\/courses\/met-cs-673-software-engineering\/","title":{"rendered":"MET CS 673 Software Engineering"},"content":{"rendered":"<p>Last updated: <em>October 28, 2005<\/em><em>. <\/em><em>The most recent updates are usually in red type<\/em><\/p>\n<p><strong>Description:<\/strong> Techniques for the construction of reliable, efficient and cost-effective software.\u00a0 Requirements analysis, software design, programming methodologies, testing procedures, software development tools and management issues.\u00a0 Students design and implement a system in a group project.\u00a0 Laboratory course.<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td width=\"284\" valign=\"top\">Background   of the Instructor red if changed<\/td>\n<td width=\"283\" valign=\"top\">Midterm Description red if changed<\/td>\n<\/tr>\n<tr>\n<td width=\"284\" valign=\"top\">Evaluation   of Students red if changed<\/td>\n<td width=\"283\" valign=\"top\">Plagiarism red if changed<\/td>\n<\/tr>\n<tr>\n<td width=\"284\" valign=\"top\">Forums   &#8212; past and present red if changed<\/td>\n<td width=\"283\" valign=\"top\">Policies in Eric Braude\u2019s   classes <em>red if <\/em>changed<\/td>\n<\/tr>\n<tr>\n<td width=\"284\" valign=\"top\">Home page for Eric Braude<\/td>\n<td width=\"283\" valign=\"top\">Project   and Presentation red if changed<\/td>\n<\/tr>\n<tr>\n<td width=\"284\" valign=\"top\">Homework and due dates red   if changed<\/td>\n<td width=\"283\" valign=\"top\">Tools red if changed<\/td>\n<\/tr>\n<tr>\n<td width=\"284\" valign=\"top\">How   to Contact Eric Braude red if changed<\/td>\n<td width=\"283\" valign=\"top\">Textbooks and Materials red   if changed<\/td>\n<\/tr>\n<tr>\n<td width=\"284\" valign=\"top\">Learning Objectives red   if changed<\/td>\n<td width=\"283\" valign=\"top\">Topics and Class Dates red   if changed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><strong>Meeting Time:<\/strong> Thursdays 6:00-9:00 pm<\/li>\n<li><strong>Meeting Place:<\/strong> Charles River Campus FLR 121 (Fuller building, opposite the BU Bridge)<\/li>\n<li><strong>Prerequisites:<\/strong> Course in Data Structures and at least one 500-level programming course<\/li>\n<\/ul>\n<hr size=\"2\" \/><strong>Learning Objectives<\/strong><\/p>\n<p>Students will be able to plan software application projects, gather requirements, create an architecture, create a design, implement the code and test the product.<\/p>\n<hr size=\"2\" \/>\n<h3>Textbook and Materials<\/h3>\n<p>Required<\/p>\n<ul>\n<li>Optional: <em>Software Engineering: an Object-Oriented Perspective <\/em>by E. Braude (Wiley 2001)<\/li>\n<li>Updated notes<\/li>\n<li>The site for the above book contains a soft version of the case study that you may use for templates, as well as the full case study source code, and the slides for all classes.\u00a0 The latter correspond to the figures in the book.<\/li>\n<\/ul>\n<address>A good references (not required):<\/address>\n<p><em>Software Engineering: A Practitioner&#8217;s Approach <\/em>by R. Pressman (McGraw Hill)<\/p>\n<p>Additional References:<\/p>\n<p><em>The Mythical Man-Month 20th anniversary edition <\/em>by F. Brooks et al<\/p>\n<p><em>A Discipline for Software Engineering<\/em> by W. Humphries (&#8220;the PSP book&#8221;)<\/p>\n<p><em>Introduction to the Team Software Process<\/em> by W. Humphries (&#8220;the TSP book&#8221;)<\/p>\n<hr size=\"2\" \/>\n<h3>Project Structure<\/h3>\n<p>To reinforce a central concept in software engineering, students will work in teams on most project parts.\u00a0 Team leadership will change once during the semester.\u00a0 Specialization within groups may be permitted, but all members must know all parts.\u00a0 Teams will give presentations on the last day of class, and may be called upon to give in-progress reviews.<\/p>\n<h4>Presentation format for last class<\/h4>\n<p>The format of the presentation should be as follows.<\/p>\n<p>3 minutes approximately: Introduce members and describe what the application is supposed to do<\/p>\n<p>3 minutes approx: Show your design<\/p>\n<p>4 minutes approx: Give a demonstration if possible<\/p>\n<p>5 minutes: What did **not** work in the process<\/p>\n<p>5 minutes: What **worked well** in the process<\/p>\n<p>Use different people or pairs to present different parts.\u00a0 Have all set up in advance so that there is no waiting between presenters.<\/p>\n<hr size=\"2\" \/>\n<h3>Midterm<\/h3>\n<p>The midterm will probably be in the following form.<\/p>\n<p>1.\u00a0\u00a0 Describe a realistic process for developing a software application given the following circumstances \u2026&#8230;\u00a0 Explain your choice and show a rough schedule.<\/p>\n<p><em>Criteria:\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 a. Adequacy and appropriateness of the process <\/em><\/p>\n<p><em>(A = entirely appropriate number and type of phases)<\/em><\/p>\n<p><em>b. Clarity of description \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0(A = all expressed very clearly, with specifics)<\/em><\/p>\n<p>2.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Within the constraints mentioned in question 1, give parts of requirements documentation for the following application.\u00a0 Provide the most important headings for your documentation, as well as <em>illustrative examples<\/em> of content only.\u00a0 Omit &#8220;documents referenced&#8221;, interface specifications of all kinds, design constraints and &#8220;scope&#8221;.<\/p>\n<p>Your customer is \u2026\u2026.<\/p>\n<p><em>Criteria:\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 a. Clarity of requirements description (A = very clearly expressed examples) <\/em><\/p>\n<p><em>b. Completeness within the (sub) headings you have chosen (A = complete within the subheading; no redundancy) <\/em><\/p>\n<p>3.\u00a0\u00a0 Give an overall architecture of the software application described in question 2.\u00a0 Preferably, use two to four annotated diagrams.\u00a0 Accommodate expansion of the requirements; explain.<\/p>\n<p><em>Criteria: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 a. Clarity of design <\/em><\/p>\n<p><em>(A = very modular and very clear design; low coupling; high cohesion) <\/em><\/p>\n<p><em>b.\u00a0 Growth<\/em><em> potential of the design i.e. attention paid to reasonable future growth\u00a0 \u00a0\u00a0\u00a0 (A = all key areas and reasonable growth addressed). <\/em><\/p>\n<hr size=\"2\" \/>\n<h3>Evaluation of Students<\/h3>\n<p>There will be a midterm, together with assignments, given on most weeks for the first two thirds of the semester. The assignments will consist of group work on the term project.<\/p>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"251\">\n<tbody>\n<tr>\n<td width=\"69%\"><\/td>\n<td width=\"30%\"><strong>weight<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"69%\"><strong><em>Midterm <\/em><\/strong><\/td>\n<td width=\"30%\">35%<\/td>\n<\/tr>\n<tr>\n<td width=\"69%\"><strong><em>Project <\/em><\/strong><\/td>\n<td width=\"30%\">65%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Parts of assignments are evaluated equally unless otherwise stated.<\/p>\n<p>All members of the group will receive the same grade for each joint submission, factored by peer evaluations within the group.\u00a0 To fulfill your peer evaluation option, you must individually send me an e-mail, after the group&#8217;s final submission is made, apportioning your evaluation of the RELATIVE CONTRIBUTION TO THE GROUP&#8217;s GRADE as follows. Be fair and rational. Suppose that your group has n participants. Apportion 10(n-1) points among the team members excluding yourself. For example, members of a team consisting of A, B, C, and D, could be evaluated by member B as A=8, C=12, and D=10. The extent of this factoring will be decided by the instructor near the end of the course. Groups have the option to decline peer evaluations, in which case all participants will receive the same grade for each joint submission.<\/p>\n<p>Within each project, grades will be apportioned as follows.<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td width=\"148\" valign=\"top\"><strong>Final   submission<\/strong><\/td>\n<td width=\"148\" valign=\"top\">30%<\/td>\n<td rowspan=\"2\" width=\"148\" valign=\"top\">Influenced   by peer evaluations, if any<\/td>\n<\/tr>\n<tr>\n<td width=\"148\" valign=\"top\"><strong>Remainder<\/strong><\/td>\n<td width=\"148\" valign=\"top\">70%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Late homework is not accepted unless there is a reason why it was impossible to perform the work. In that case, the written reason should be attached to the homework, which will be graded on a pass\/fail basis.<\/p>\n<p>Please also read <strong>detailed information about grade averaging method.<\/strong><\/p>\n<hr size=\"2\" \/><strong>Plagiarism<\/strong><strong> <\/strong><\/p>\n<p>Please cite all references and uses of the work of other.\u00a0 All instances of plagiarism must be reported to the College for action.\u00a0 See plagiarism policy and reference.<\/p>\n<hr size=\"2\" \/><strong>Syllabus<\/strong><\/p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"0\" width=\"567\">\n<tbody>\n<tr>\n<td width=\"8%\"><strong><span style=\"text-decoration: underline;\">Dt<\/span><\/strong><strong><span style=\"text-decoration: underline;\">.<\/span><\/strong><\/td>\n<td width=\"5%\"><strong><span style=\"text-decoration: underline;\">Cls<\/span><\/strong><\/td>\n<td width=\"36%\"><strong><span style=\"text-decoration: underline;\">Topic<\/span><\/strong><\/td>\n<td width=\"48%\"><strong><span style=\"text-decoration: underline;\">Approximate project   schedule<\/span><\/strong><\/p>\n<p>Official assignments and due   dates are at <em>homework page and due dates<\/em><\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">9\/8<\/td>\n<td width=\"5%\">1<\/td>\n<td width=\"36%\"><strong>Review course contents <\/strong><\/p>\n<p><strong>Overview of software   engineering<\/strong><\/td>\n<td width=\"48%\">Tentatively form teams and   projects. Identify communication mechanisms.<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">9\/15<\/td>\n<td width=\"5%\">2<\/td>\n<td width=\"36%\"><strong>Process of Software   Engineering <\/strong><\/p>\n<p>Describe the problems and   challenges of developing software products; Describe steps in the process for   developing software products; summarize and compare various models (top-down,   incremental, spiral etc.); the Capability Maturity Model<\/td>\n<td width=\"48%\">Finalize teams.<\/p>\n<p>List informal requirements of   project, describe the challenges, explore feasibility; volunteer skill   specialization (e.g. Java) Summarize process alternatives; apportion   feasibility retirement.<\/p>\n<p>Investigate legacy system;   develop program to learn tools.<\/p>\n<p>Develop SCMP and prototype<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">9\/22<\/td>\n<td width=\"5%\">3<\/td>\n<td width=\"36%\"><strong>Software Project Management<\/strong><\/p>\n<p>Introduce project management   concepts, development metrics and risk management; the Personal Software   Process. Refine informal requirements. Implement prototype parts. Scheduling,   quality assurance, configuration management; inspection techniques I.<\/td>\n<td width=\"48%\">Draft project management plan,   metrics, describe risks with retirement Apportion detailed risk retirement   tasks; draft project management plan; draft configuration management plan.   Refine informal requirements. Apportion skill matrix.<\/p>\n<p>Reverse engineer legacy system.<\/p>\n<p>Develop SPMP<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">9\/29<\/td>\n<td width=\"5%\">4<\/td>\n<td width=\"36%\"><strong>Requirements Analysis I<\/strong><\/p>\n<p>Introduce the concept of system   engineering; describe requirements analysis and C-requirements<\/td>\n<td width=\"48%\">Build prototypes and proof-of-concept   experiments.<\/p>\n<p>Develop SRS<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">10\/6<\/td>\n<td width=\"5%\">5<\/td>\n<td width=\"36%\"><strong>Requirements Analysis II<\/strong><\/p>\n<p>Describe and apply D-requirements<\/td>\n<td width=\"48%\">Define requirements for project<\/p>\n<p>Develop SRS<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">10\/20<\/td>\n<td width=\"5%\">6<\/td>\n<td width=\"36%\"><strong>Design I: Essentials <\/strong><\/p>\n<p>Design principles and concepts;   Define &#8220;architecture&#8221; and review alternatives<\/td>\n<td width=\"48%\">Specify design for project   modules; Decompose project into 3-7 modules for group execution. Specify   interfaces.<\/p>\n<p>Develop SDD<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">10\/27<\/td>\n<td width=\"5%\">7<\/td>\n<td width=\"36%\"><strong>Design II: Design   Techniques <\/strong><\/p>\n<p>Describe alternative design methods;   match with requirements<\/td>\n<td width=\"48%\">Develop SDD<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">11\/3<\/td>\n<td width=\"5%\">8<\/td>\n<td width=\"36%\"><strong>Implementation<\/strong><\/p>\n<p>Programming standards etc.<\/p>\n<p>Code inspections<\/td>\n<td width=\"48%\"><\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">11\/10<\/p>\n<p>online<\/td>\n<td width=\"5%\">9<\/td>\n<td width=\"36%\"><strong>Integration<\/strong><\/p>\n<p>Describe integration and unit   testing<\/td>\n<td width=\"48%\"><\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">11\/10<\/td>\n<td width=\"5%\">10<\/td>\n<td width=\"36%\"><strong>Testing<\/strong><\/p>\n<p>Describe testing strategies and   techniques; inspection techniques<\/p>\n<p>Review for midterm<\/td>\n<td width=\"48%\"><\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">11\/17<\/td>\n<td width=\"5%\">11<\/td>\n<td width=\"36%\"><em>Midterm<\/em><\/td>\n<td width=\"48%\"><em> <\/em><\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">12\/1<\/td>\n<td width=\"5%\">12<\/td>\n<td width=\"36%\"><strong>Maintenance <\/strong><\/td>\n<td width=\"48%\"><\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">12\/8<\/td>\n<td width=\"5%\">13<\/td>\n<td width=\"36%\"><strong>Project Presentations<\/strong><\/td>\n<td width=\"48%\">Project due; Present results<\/td>\n<\/tr>\n<tr>\n<td width=\"8%\">12\/12<\/td>\n<td width=\"5%\"><\/td>\n<td width=\"36%\"><strong>(no class)<\/strong><\/td>\n<td width=\"48%\">Individual project assessments   due<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr size=\"2\" \/><strong>Tools<\/strong><strong> <\/strong><\/p>\n<p>Here are some (mostly free) tools to consider<\/p>\n<p>For configuration management: Freepository , <a href=\"https:\/\/sourceforge.net\/\">SourceForge<\/a><\/p>\n<p><strong>Forums &#8212; past and present<\/strong><\/p>\n<p>Spring 1999; Summer 1999; Fall 1999; Spring 2000; Fall 2000; Spring 2001; Spring 2002;<\/p>\n<p>Fall 2002; <span style=\"text-decoration: underline;\">Spring 2003<\/span>; Summer 2003; Fall 2003; Spring 2004<\/p>\n<p>Fall 2004: Spring 2005<\/p>\n<p>Fall 2005:<\/p>\n<p>Post message: 673F05@yahoogroups.com<\/p>\n<p>Subscribe: 673F05-subscribe@yahoogroups.com or go to the site at http:\/\/groups.yahoo.com\/group\/673F05\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last updated: October 28, 2005. The most recent updates are usually in red type Description: Techniques for the construction of reliable, efficient and cost-effective software.\u00a0 Requirements analysis, software design, programming methodologies, testing procedures, software development tools and management issues.\u00a0 Students design and implement a system in a group project.\u00a0 Laboratory course. Background of the Instructor [&hellip;]<\/p>\n","protected":false},"author":2828,"featured_media":0,"parent":22,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/43"}],"collection":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/users\/2828"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/comments?post=43"}],"version-history":[{"count":1,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/43\/revisions"}],"predecessor-version":[{"id":44,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/43\/revisions\/44"}],"up":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/pages\/22"}],"wp:attachment":[{"href":"https:\/\/sites.bu.edu\/braude\/wp-json\/wp\/v2\/media?parent=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}