Course Details
Subject {L-T-P / C} : CS4061 : Fundamentals of Software Engineering { 3-0-0 / 3}
Subject Nature : Theory
Coordinator : Durga Prasad Mohapatra
Syllabus
Software development life cycle and Project Management: Software development life cycle (SDLC) models, software project management, project planning, project estimation, project scheduling, staffing, Organization and team structure, risk management, configuration management. [8 hours]
Requirements analysis and specification: Feasibility study, Requirements gathering and analysis, software requirements specification, formal systems specification, axiomatic specification, algebraic specification. [4 hours]
Software Design: Outcome of a design process, cohesion and coupling, layered arrangement of modules, approaches to software design, function-oriented software design: overview of SA/SD methodology, structured analysis, DFDs, structured design, detailed design, object-oriented software design: UML diagrams, OOD goodness criteria, user interface design, types of user interfaces, component-based GUI development. [10 hours]
Coding and Testing: Coding standards and guidelines, code review, software documentation, unit testing, black-box testing, white-box testing, debugging, integration testing, system testing. [8 hours]
Software reliability and Quality management: Software reliability, software quality, ISO 9000, SEI CMM, PSP, Six sigma, CASE Tools, Software maintenance, Software reuse. [6 hours]
Course Objectives
- To discuss the software engineering discipline, its evolution, impact and emergence of software engineering and explain the development and use of different software life cycle models for real-life industrial applications.
- To discuss different aspects of software project management, risk management and configuration management and explain various requirement elicitation, analysis and specification techniques.
- To discuss various software design methodologies, the impact of cohesion and coupling measures on the goodness of the software design.
- To discuss the importance of practicing different coding standards, guidelines and different testing strategies along with software reliability metrics and software quality management techniques & standards.
Course Outcomes
After reading this subject, students will be able to:
1. Choose a proper life cycle model for different real-life industrial applications, develop the SRS document, design the software using function-oriented approach (DFDs) and object-oriented approach (UML diagrams), code it and test the developed software using different testing techniques.
2. Understand the concepts of computer aided software engineering (CASE) and use different CASE tools in the development, maintenance and reuse of software systems.
Essential Reading
- R. Mall, Fundamentals of Software Engineering, PHI Learning , 2014
- R. S. Pressman, Software Engineering: A Practitioner's Approach, McGraw Hill Publications , 2006
Supplementary Reading
- I. Sommerville, Software Engineering, Pearson Education , 2006
- A. Behferooz and F. J. Hudson, Software Engineering Fundamentals, Oxford University Press , 2000