Instructor: Suthep Madarasmi, Ph.D.
E-mail:
Website: suthep@kmutt.ac.th
Telephone: 02-470-9083, 5
Lab Hours: Mon 8:30 – 10:20. http://www.cpe.kmutt.ac.th/~suthep/cpe333
CPE 1121.
TA:
Email:
Thanyalak Chalermarre porcpe@gmail.com
Telephone: _______________
Please bring your laptop or loan one from department for each lab. There should be at least 1 machine per 2 persons.
Lab Objectives
Software Engineering (SE) is a disciplined approach to the development of software. As software development projects grow in size to millions of lines of code or thousands of functions / classes, the management of the entire development process can only be possible with a disciplined, engineering approach. For example, to build a house for your dog, you may not need much engineering skills and you can think the design as you hammer away. To build a home you need more detailed design, more coordination among the builder team, more discipline on schedule, budget, and etc. Even then some level of informal treatment and a few flaws can be tolerated. However, if you were to build a 20 storey building, strict engineering guidelines must be followed from the onset. The same is true with software engineering. Thailand is becoming a center for software development where large systems such as ERP, Hotel
Management, Hospital Management, and Financial
Management systems are being developed that can only succeed with strict adherence to software engineering principles.
A software product is not just the program code or program executable. That is only one of the components of the software product. Other parts of the deliverables include scope document, requirements document, design document, data/database, technical manual (components required, data dictionary, and sitemap for future maintenance), version information, and user documentation.
Since this is part of the Hands-on Active Learning curriculum, we would like students to understand not only the theoretical aspects of software engineering, but to get first-hand experience of the entire development process. Interestingly, the
“programming” aspect which most students think is the core of software engineering will not be covered as part of your exercises due to time limitations. However, students will be exposed to many processes related to the development process without any actual code development.
The lab work will include individual student work and group/team work. The individual work will focus on developing individual capability on the use of SE tools so that each student understands the core concepts in order to be a contributing member of their team. The group work will provide students with teamwork skills and an opportunity to get hands-on experience on working on a large project under strict process guidelines which will also be set by the team members. It is hoped that through the lecture and lab experiences, students will gain the discipline and maturity needed to work effectively in the local or international software industry.
Integrated Language Content
This course will emphasize good writing and presentation skills. Up to 25% points will be deducted for poor writing style, grammatical, or spelling mistakes in each lab work.
Standard Practices
In all your lab work, we expect you to use standard practices such as diagrams using UML and not come up with your own style of diagram. For each part, students will have to research and read the literature on software engineering to be able to do a good job.
Course Grades Distribution
1.
2.
Lecture Part: Midterm, Final, Quiz, Assignments, Participation
Lab Part: Weekly Individual Lab Work a.
UML: Use Case Diagram b.
UML: Collaboration Diagram c.
Project Management
50%
15%
d.
UML: State Diagram e.
UML: Data Relationship Diagram f.
Configuration Management Tools g.
Testing Tools
3.
Lab Part: Team Development Procedure Manual with 1 Example Project a.
Project Proposal Document b.
Requirements Specification Document (Analysis) c.
Design Document
35% d.
Development process and procedure specifications for:
Standards in Key Documents and Deliverables: Project Proposal Document, Analysis
Document, Design Document, Technical Specifications Manual, User Manual.
Project Registration Form
Define Coding Standards and Review Process for team effort and for easy maintenance
Project Planning, Monitoring, Control (Time Sheets), and Final Costing Method.
Requirements Management - initial work, defect fixes, change requirements.
Product Quality Assurance Method. Black box, white box testing, integration testing.
Defects types, tracking, and measurements.
Configuration Management Procedure for all deliverables
Work / Task Assignment Procedure to Employees to include project tracking capability, configuration management, etc.
Measures for timeliness, various types of defects (at each level), design problems, requirements problems.
For each you can mention the tool you will use and describe the parts of the tools to use.
You may design your own new software to manage your software development processes as an internal tool.
You have graduated from KMUTT with a degree in computer engineering. A company called Global System
Integrators (GSI) just hired you along with a few friends. The focus of their business is information systems that need to communicate with some hardware equipment as embedded systems. Examples of software developed by
GSI include Payroll system with link to card reader/fingerprint reader/time machine, Point of Sales system linked to credit card machine, Document management software linked to scanner, Hospital patient care system linked to blood pressure monitor and heart monitor, Personnel information system with smart card printer, Laboratory management software linked to blood sugar test equipment, etc. After working there for 6 months and completing
2 projects you find out that they don’t have a good software engineering system at all, resulting in all kinds of production and management problems. You decide to tell the boss that “Sir, your company uses no software engineering principles at all. You simply ask us to get the programming work done somehow. You should consider improvement to at least have the processes at CMMI level 2 such as requirements management, quality assurance, project monitoring/control/ planning, measurements, and configuration management”. Your boss is upset at your remark at first, but then decides to challenge you instead:
“Your Bangmod team is currently working on this __Fingerprint__ project already, right? (let’s say Payroll
System with Finger Print Reader Machine + Time Clock). Since you are so smart, why don’t you get this project done ‘The Right Way!’. Design a software engineering methodology that will be suited for the kind of work we do at GSI which is information systems with some equipment interface. Get this company into shape for CMMI level
2 processes and also make sure our projects are on time with no bugs, if possible. So you all must write up documentation on how we should run our processes and also give examples using the __Fingerprint__ project you are currently working on.”
Form a team of 5 students to work on this. For the first assignment you will need to develop the Project Proposal
Document. Choose a software Project Title that represents your company’s type of work, Team Members, Project
Summary, Summary Use Case diagram (with only key narratives), Conceptual Design for Project Scope (modules and function description), Rough Time Estimate per Phase, Project Price Proposal including basis for the price
(this basis is called a proxy).