Course Details
Subject {L-T-P / C} : CS3004 : 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, Halstead’s Software Science, project scheduling, staffing, Organization and team structure, risk management, configuration management. [8 hours]
Requirements analysis and specification: 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, design review, object-oriented software design: UML diagrams, use case modelling, unified process, 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, Statistical testing, 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 and prepare the SRS document for different real-life industrial projects.
2. Perform designing of different real-life industrial software using function-oriented approach (DFDs) and object-oriented approach (UML diagrams), code them, and test the developed software using different software testing strategies.
3. Apply different user interface design methods and computer aided software engineering (CASE) tools in the software development process.
4. Learn the different types of software maintenance, software engineering and re-engineering activities and reuse of software systems.
5. Apply different software project management activities and software quality management techniques / standards. in real-life industrial projects.
Essential Reading
- R. S. Pressman, Software Engineering: A Practitioner's Approach, McGraw Hill Publications , 2023
- R. Mall, Fundamentals of Software Engineering, PHI Learning , 2018
Supplementary Reading
- I. Sommerville, Software Engineering, Pearson Education , 2006
- A. Behferooz and F. J. Hudson, Software Engineering Fundamentals, Oxford University Press , 2000