Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - în limba engleză
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID0007	Software Engineering	

Semester	Hours: C+S+L	Category	Status	
4	2+1+1	speciality	compulsory	

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
LAZAR Ioan	Ph.D.	Lect.	Programming  Languages and Methods	*			

Associated faculty members
Name and	Scientific	Institution	Type of	Type of activity	
surname	title		position	C	S	L	

III. Course objectives
At the completion of this course, the students will/should:
a) have a systematic knowledge concerning application development methodologies
b) be familiar with the modern concepts and techniques in the field of software development
c) know the models developed and modeling tools used in the software development process
d) understand the importance of documentation during the whole software development process.	

IV. Course contents
1. SOFTWARE PROCESS
2. SOFTWARE DEVELOPMENT: PRINCIPLES AND ACTIVITIES
3. MODELING SOFTWARE PROCESSES AND SYSTEMS 
4. UNIFIED MODELING LANGUAGE
5. REQUIREMENTS GATHERING, ENGINEERING, AND SPECIFICATION
6. ANALYSIS MODELING
7. SOFTWARE DESIGN: CONCEPTS AND MODELS
8. PRINCIPLES OF O-O DESIGN
9. DESIGNING ARCHITECTURE, DATA, AND PROCESSES 
10. COMPONENT DESIGN
11. USER INTERFACE DESIGN
12. SOFTWARE TESTING: TECHNIQUES AND METHODS
13. DEPLOYMENT 
14. SOFTWARE PROJECT PLANNING 	

V. Bibliography
1. FLAATEN, P.O., MCCUBBREY, D.J., O'RIORDAN, P.D., BURGESS, K.: Foundations of Business Systems, Dryden Press, 1st ed. 1989, 2nd ed. 1997.
 2. FOWLER, M., SCOTT, K.: UML Distilled: A Brief Guide to the Standard Object Modeling Language, Addison-Wesley, 2nd ed., 1999.
 3. IACOBSON, I., BOOCH, G., RUMBAUGH, J.: The Unified Software Development Process, Addison-Wesley, 1999.
 4. MARTIN, R.C.: Agile Software Development: Principles, Patterns, and Practices, Prentice Hall, 2002.
 5. PÂRV, B.: Analiza şi proiectarea sistemelor, Univ. Babeş-Bolyai, CFCID, Facultatea de Matematică şi Informatică, Cluj-Napoca, 2002, 2003, 2004. 
 6. PRESSMAN, R.S.: Software Engineering - A Practitioners Approach, McGraw-Hill, 3rd ed. 1992; 4th ed. 1996, 5th ed. 2001, 6th ed. 2005. 
 7. SCHACH, S.R.: Object-Oriented and Classical Software Engineering, McGraw-Hill, 5th ed., 2002, 6th ed. 2005.
 8. SOMMERVILLE, I.: Software Engineering, Addison-Wesley, 5th ed. 1996, 6th ed. 2000, 7th ed. 2004. 	

VI. Thematic of didactic activities per weeks
1. SOFTWARE PROCESS
 The life-cycle of a computer program
 Software engineering: history, definitions
 Waterfall life cycle
 Prototyping
 The spiral model, Boehm
 The staged model
 Incremental change
 Extreme Programming, XP
2. SOFTWARE DEVELOPMENT: PRINCIPLES AND ACTIVITIES
 Problem solving and software development
 Communication: principles and tasks
 Planning: principles and tasks
 Analysis modeling: principles and tasks
 Design modeling: principles and tasks
 Construction: principles and tasks
 Deployment and operation: principles and tasks
3. MODELING SOFTWARE PROCESSES AND SYSTEMS 
 System modeling
 Business process modeling
 Tools for software modeling
4. UNIFIED MODELING LANGUAGE
 UML. General issues
 Modeling requirements 
 Modeling classes
 Modeling behavior
 Modeling architecture
5. REQUIREMENTS GATHERING, ENGINEERING, AND SPECIFICATION
 Requirements analysis process
 Starting requirements analysis
 Communication techniques
 Requirements synthesis
 Requirements specification 
 Requirements validation
6. ANALYSIS MODELING
 Definitions, steps, elements, methods
 Use case modeling 
 Static modeling
 Dynamic modeling
 Data flow modeling
7. SOFTWARE DESIGN: CONCEPTS AND MODELS
 Fundamentals of software design
 Design steps
 Design concepts
 Design models
8. PRINCIPLES OF O-O DESIGN
 Architecture and dependencies
 Class design: principles
 Architectural design: principles (module reuse, module coupling)
 Arhchitectural patterns
9. DESIGNING ARCHITECTURE, DATA, AND PROCESSES 
 Architecture design. Software components 
 Data design
 Process design
10. COMPONENT DESIGN
 Logical architecture of the software system
 Responsibility-driven design
 OO design: steps
11. USER INTERFACE DESIGN
 Human-computer interaction
 Interface design rules
 User interface models
 User interface construction
12. SOFTWARE TESTING: TECHNIQUES AND METHODS
 Verification and validation
 Software testing: steps and techniques
 Testing methods
13. DEPLOYMENT 
 Packing and installing 
 Software maintenance
14. SOFTWARE PROJECT PLANNING
 Human factors involved in the software development process 
 The organization of the software development process 
 Other planning activities
 The software project plan	

VII. Didactic methods used
The course is based on the following methods: exposure, conversation, didactical proof, modelling, and the discussion of some case studies and programming examples. 
Each student must develop three software projects.	

VIII. Assessment
The grading activities are:
 2 quizzes during lectures (10%)
 3 programming projects (45%)
 written midterm exam (20%)
 written final exam (25%)
The final mark is computed as weighted average of the individual marks obtained.
(the weights are given in brackets).
Exam and quiz questions refer to the teaching material and mandatory readings. Programming projects involve small incremental changes to an existing open source project.

IX. Additional references
1. Agile Modeling Homepage, [http://www.agilemodeling.com].
2. Software Engineering Body of Knowledge, IEEE, 2004. [http://www.swebok.org].	

	Dean,							Chair head,

	Date,							Course responsible,
	24.09.2009						Lect. Dr.  LAZAR Ioan