You are on page 1of 3

CSC3600: SOFTWARE ENGINEERING

The Background:
This course provides a basic understanding of the software life cycle and the methods and
techniques used in the disciplined development of software. It also introduce the students to
the concepts of and motivations for object-oriented analysis and design of software systems.
To train the students to effectively use these notations, concepts and patterns when designing
software systems and make efficient use of program-support tools

Rationale:
Managing a large software project is challenging and difficult task: it usually involves a large
number of people with different interests and backgrounds (clients, future users, system
engineers, telecommunications experts, network experts, system analysts, programmers etc.).
Once the system is put into actual use, it has to be maintained and adapted to changing
environments and new requirements. It is important for a computer scientist to understand the
different tools and techniques that have been proposed to carry out this task.

Objectives:
Upon completion of this course students should able to:
1. Design medium sized programs using formal methods
2. Document software requirements using formal and informal specification methods
3. Use a range of notational techniques to express different aspects of a design.
4. Be able to design and analyze programs using design patterns and UML
5. Effectively use Java libraries.
6. Plan and develop a large programming project using software engineering tools.

Prerequisite: CSC 2000

Course Content:

1. Overview of Software Engineering: Software engineering, Key challenges in software


engineering, CASE, professional and ethical responsibility
Software Process Models: Waterfall Model, Evolutionary Development, Computer Based
Software engineering (CBSE), Process iteration

2. Agile software development: Agile methods, Plan-driven and agile development, Extreme
programming, Agile project management

3. Requirements engineering: Functional and non-functional requirements, Software


requirements document, Requirements specification, engineering processes, elicitation and
analysis, validation and Requirements management

4. System modeling: Context models, Interaction models, Structural models, Behavioral models
and Model-driven engineering
4. Architectural Design: Architectural design decisions, Architectural views, Architectural
patterns, Application architectures

5. Object-oriented design using the UML: What is object-orientation, Modeling concepts,


Requirements capture, Requirements analysis, Object interaction, Specifying operations,
Specifying control, System architecture, System design.

6. Software testing: Test planning; test analysis and design; test execution; test reporting;
Acceptance testing

7. Quality and Risk management: Quality concepts and control techniques; Software
standards; Reviews and inspections; Quality assurance; Risk Management

8. Software process improvement and change management: Process measurement, analysis


and change; The CMMI process improvement framework; ISO and IEEE Software Engineering
standards; Version management; System building; Release management

9. Metrics and reliability assessment: Software metrics; Software complexity measures;


measures of software coupling and cohesion; Models and associated measures of software
quality.

10. Software maintenance and evolution: Impact Analysis; Versioning; Refactoring; Reverse
and Re-engineering of software; Lehman's Laws of Software Evolution
11. Distributed software engineering: Distributed systems issues; Client–server computing;
Architectural patterns for distributed systems; Cloud computing (Software as a Service, Platform
as Service, Infrastructure as a Service and Implications to Software Engineering);
12. Mobile software engineering: principles of software engineering for mobile devices and
best practices, including code reviews, source control, and unit tests.

Mode of Delivery:
Lectures: Three hours per week
Tutorials: One hour per week
Lab: Three hours per week

Assessments:
Continuous assessment (C.A.) 40%
C.A. Breakdown Assignments 20%
Tests 20%
Final (Theory) Examinations 60%

Prescribed books:
1. Ian Sommerville(2010), Software Engineering,9th Edition, Addison Wesley, ISBN: 978-
0137035151
2. Simon Bennett, Steve Mc Robb and Ray Farmer(2010) , Object-Oriented System Analysis
and Design using UML, 4th Edition, Mc Graw Hill, 2010, ISBN: 978-0077125363
Recommended books:
1. Roger S. Pressman(2009), Software Engineering: a practitioner’s approach, 7th edition.
McGraw-Hill, ISBN : 978-0071267823
2. Stevens Perdita, Pooley Rob (2000). Using UML: Software Engineering withy Objects and
Components, Addison-Wesley.

Journals
1. ACM Transactions on Computer Systems, Association for Computing Machinery, Inc.
ISSN 07342071,
2. Soft Robotics, Mary Ann Liebert Publishing, IEEE Xplore digital library, ISSN:2169-
5172
3. Integrated Computer-Aided Engineering, IOS Publishing Press, ISSN:1069-2509

You might also like