MacInsiders Logo

Similar Threads
Review Review Starter Category Comments Last Post
Sfwr Eng 2s03 jp1390 2nd Year Course Reviews 1 05-13-2016 08:02 PM
Switching from Software Engineering to Game Design Rail24 Academics 6 06-15-2010 01:44 PM
McMaster Software Engineering Game Design andru Gaming 7 01-09-2010 10:42 PM
Mac's Software engineering and game design program rick Academics 5 09-09-2009 09:22 PM
Software Embedded versus Game Design? Ownaginatios Academics 31 03-20-2009 12:43 PM

SFWR ENG 2AA4 - Software Component Design

 
SFWR ENG 2AA4 - Software Component Design
lol, David Parnas
Published by Ownaginatios
12-24-2010
Published by
Ownaginatios's Avatar
Trolling ain't easy
Join Date: Jul 2008
Posts: 3,190

Author review
Overall Rating
90%90%90%
9
Professor Rating
90%90%90%
9
Interest
90%90%90%
9
Easiness
90%90%90%
9
Average 90%
SFWR ENG 2AA4 - Software Component Design

Software engineering 2AA4 is an introductory course to software component design, which in essence is the fundamental basis for object oriented programming.

This course is in a lot of ways a complement or a continuation of software engineering 2S03, which taught the functional and imperative programming paradigms.

The course is roughly divided into 3 parts:

1) The concept of information hiding, modularization and interfaces (OO-design fundamentals).

2) MIS (Module Interface Specification) and MID (Module Internal Design?) documents, pre/post-conditions + mathematical/formal specification

3) Verification/Testing

Information hiding and modularization with interfaces is the concept of making classes. A class is an abstract object with functions that can be used by other classes or programs. For a real world example, take a calculator. A calculator offers many functions on its interface with inputs (addition, subtraction. etc). You can use the calculator without having any idea how the internals actually work. The way the addition is done is the hidden information, and the functions you're accessing are part of the interface. If someone were to redesign all the internals to work more efficiently, the interface would still be the same meaning you would not have to learn anything new or change the way you use the calculator to use the new design. The whole point of modularization is hiding how things work and only telling the user what the things they can do are.

Defining these modules is done through the MIS and MID. To get an idea of what an MIS is, look at the java library for random classes. It's basically a description of how the interface of a module looks for people who are using the module in a program they're making. It describes what the module does, and what each of the functions within it do. The MID is a description of the internals of the module and how it's actually implemented. There can be several implementations of a module (which means several MIDs), but there can only be one MIS. The point of this is that you can swap out implementations of a module in a big program without having to also change other things within the program. It's a rather intuitive concept.

The pre-post condition and mathematical specification stuff is overlap with software engineering 2FA3, and is basically a formal mathematical way of specifying what a method does on the interface to the user as an alternative to natural language. The purpose of mathematical/formal specification is that it can literally be proven whether or not your specification is complete. It will make a lot more sense during 2FA3...

Verification/Testing is pretty much just whitebox/blackbox testing. Blackbox testing is testing the interface (making sure inputs produce the right outputs) and whitebox testing is testing so that each line of the actual program is hit at least once. Again, this will make more sense when you get there.

When I took this course, it was taught by Dr. Wassyng. He's a pretty good prof and likes to get a lot of class discussion going. Things he really likes to focus on are David Parnas (this guy that taught at McMaster a million years ago that 'allegedly' invented the idea of information hiding) and Tabular Expressions (one of the main research topics at McMaster for formally defining software specifications).

The breakdown was as follows:

4 Assignments 20% (5% each)
Midterm 30%
Final Exam (50%) [ You must get >50% on the final to pass the course ]

Overall I found this course pretty straight forward. Pretty much everything that's taught is intuitive. The midterm and final were both open book and involved problems such as writing MIDs/MISs, filling out tabular expressions and writing formal specifications.

As long as you pay attention in class and do the assignments, there is no reason you should get less than a 10 in this course.

kanishka says thanks to Ownaginatios for this post.

kanishka likes this.
Deleted Post
Edit/Delete Message
Click here to add your own review for SFWR ENG 2AA4 - Software Component Design!




Review Tools Search this Review
Search this Review:

Advanced Search

Posting Rules
You may not post new reviews
You may not post comments
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



McMaster University News and Information, Student-run Community, with topics ranging from Student Life, Advice, News, Events, and General Help.
Notice: The views and opinions expressed in this page are strictly those of the student(s) who authored the content. The contents of this page have not been reviewed or approved by McMaster University or the MSU (McMaster Students Union). Being a student-run community, all articles and discussion posts on MacInsiders are unofficial and it is therefore always recommended that you visit the official McMaster website for the most accurate up-to-date information.

Copyright © MacInsiders.com All Rights Reserved. No content can be re-used or re-published without permission. MacInsiders is a service of Fullerton Media Inc. | Created by Chad
Originally Powered by vBulletin®, Copyright © 2019 MH Sub I, LLC dba vBulletin. All rights reserved. | Privacy | Terms