Familiarity with Windows or Unix applications, and knowledge of advanced object
oriented programming is required. An entire software development cycle is executed
on a small scale project. The Object Oriented analysis, design, coding and testing
techniques using the Unified Modeling Language (UML) are discussed in detail.
Tools to support Software Engineering methods for Project Planning, Software
Configuration Management, and OOD are demonstrated and used by the students to
create sample Software Engineering work products. Some of these Computer Aided
Software Engineering (CASE) tools include MS Project, WinCVS, Visual Source Safe,
Visual Studio .NET, and Rational Rose. We will also cover issues concerned with
virtual development teams, where part of the team is located in another city or
even country.
Software Engineering is motivated from the perspective of the complexity and scale
of today’s Software Application development projects. Most companies accrue large
costs at the interface between business and development in the software development
cycle. It can be shown that most faults in application programming are created in the
first phase of requirements elicitation and are discovered only in the last phase when
the business client sees the final product. This course is aimed at students who plan
to join industry as developers building systems for business clients. The syllabus is
designed to work in co-operation with the software engineering course offered through
the CIS program at the School of Management. During the quarter the interaction with
business clients in industry is mimicked in the classroom. This set-up is designed to
expose students to issues they will face in industry. We discuss tools and mechanisms
for dealing with different types of situations that arise when business and development
collaborate in software projects.
No emphasis is put on user-interface design as this is a complex topic that cannot
be covered in the given time of a quarter.
Understanding the business requirements is a significant source of cost-reduction in a
software project. Familiarity with mechanisms for managing this exchange are of vital
importance in industry. Software Application engineering represents a key strategic
activity within the modern enterprise. The large investment on Information Technology
assets must be carefully managed not only on the business side but also by the technology
side. A sound background in Software Engineering methods and issues, will allow developers
to participate in creating an effective working environment in industry, managing product
creation, evolution and maintenance with the appropriate mechanisms and tools.
The student graduating from this course:
Knows about Software Engineering activities
Understands complexity of managing software development projects
Applies critical thinking about process and mechanisms employed to optimise software engineering activities
Controls application development
Learns to select the software development model that best fits a given application development scenario
Understands the importance and appropriateness of artifact generation
Can design the principal artifacts of the process such as User Requirements, Requirements Specifications, Functional Specifications, Detailed Conceptual Design, Test Specifications, and others.
Is able to carry-out the principal umbrella activities related to Software Project Management, such as Software Quality Assurance planning, Risk Analysis, Project Scheduling, Software Configuration Management and Change Control
Knows the rights and duties of the developer and the business persons involved in project
Knows how to find appropriate CASE tools to support software engineering process effectively