Software Engineering

Course Objectives :

  1.  To introduce the basic concepts of the software development processes, Software requirements and specifications
  2.  To impart knowledge of Software Project Planning and various Software design techniques for developing large software systems.
  3. To understand Software Metrics, Software Reliability, and Quality assurance using ISO 9001 and SEI-CMM.
  4. To impart the knowledge and use of software engineering processes and tools in analysis, design, implementation, software testing, documentation, and maintenance for software systems.

Course Outcomes (CO)

  • CO 1 Ability to have an understanding of SDLC Models, Techniques for Requirement Elicitation, and SRS Document.
  • CO 2 To be able to explain Software Project Planning and various methods for software design
  • CO 3 To Understand Software Metrics, Software Reliability, and Quality assurance
  • CO 4 Ability to have an understanding of Software testing, documentation and maintenance.

UNIT-I

Introduction: Introduction to Software Engineering, Importance of software engineering as a discipline, Software applications, Software Crisis, Software Processes & Characteristics, Software life cycle models, Waterfall, Prototype, Evolutionary and Spiral Models.

Software Requirements Analysis & Specifications: Requirement engineering, Functional and non-functional requirements, User requirements, System requirements, requirement elicitation techniques like FAST, QFD & Use case approach, requirements analysis using DFD, Data dictionaries & ER Diagrams, Requirements documentation, Nature of SRS, Characteristics & organization of SRS, Requirement Management, IEEE Std. for SRS. 

UNIT-II

Software Project Planning: Size Estimation like lines of Code & Function Count, Cost Estimation Models, COCOMO, Putnam resource allocation model, Validating Software Estimates, Risk Management.

Software Design: Cohesion & Coupling, Classification of Cohesiveness & Coupling, Function Oriented Design, Object Oriented Design, User Interface Design.

UNIT-III

Software Metrics: Software measurements: What & Why, Token Count, Halstead Software Science Measures, Data Structure Metrics, Information Flow Metrics.

Software Reliability: Importance, Hardware Reliability & Software Reliability, Failure and Faults, Reliability Models- Basic Model, Logarithmic Poisson Model, Software Quality Models, CMM & ISO 9001.

UNIT – IV

Software Testing: Testing process, Functional testing: Boundary value analysis, Equivalence class testing, Decision table testing, Cause effect graphing, Structural testing: Path testing, Data flow and mutation testing, unit testing, integration and system testing, Debugging, Testing Tools & Standards.

Software Maintenance: Management of Maintenance, Maintenance Process, Maintenance Models,

Regression Testing, Reverse Engineering, Software Re-engineering, Configuration Management, Documentation.

Textbook(s):

  1. K. K. Aggarwal and Yogesh Singh, “Software Engineering”, New Age International, 3rd Ed., 2005.
  2. R. S. Pressman, “Software Engineering – A Practitioner's Approach”, McGraw Hill Int. , 5th Ed., 2001.
  3. Pankaj Jalote, “An Integrated Approach to Software Engineering”, Narosa, 3rd Ed., 2005.

References:

  1. Stephen R. Schach, “Classical & Object Oriented Software Engineering”, IRWIN, 1996.
  2. James Peter, W. Pedrycz, “Software Engineering: An Engineering Approach”, John Wiley & Sons.
  3. I. Sommerville, “Software Engineering”, Addison Wesley,8th Ed., 2009.
  4. Frank Tsui and Orlando Karan, “Essentials of Software Engineering”, Joes and Bartlett, 2nd Ed., 2010.
  5. Kassem A. Saleh, “Software Engineering”, Cengage Learning, 2009.
  6. Rajib Mall, “Fundamrntal of Software Engineering”, PHI, 3rd Ed., 2009.
  7. Carlo Ghizzi, Mehdi Jazayeri and Dino Mandrioli, “Fundamental of Software Engineering”, PHI, 2nd Ed., 2003.
  8. Carol L. Hoover, Mel Rosso-Ll 

Importance of Software Engineering

  1. Systematic Software Development
    Software engineering provides structured models like Waterfall and Spiral to manage software projects effectively. For example, developing a banking app with clearly defined phases reduces errors and missed deadlines.

  2. Managing Complexity and Scale
    Large projects, like an e-commerce platform (Amazon, Flipkart), require breaking down into modules for easier management and integration.

  3. Requirement Analysis & Specification
    Understanding user needs, such as in healthcare software, ensures the system supports doctors' and patients’ workflows without costly rework.

  4. Project Planning & Estimation
    Using models like COCOMO helps predict time and cost for projects, e.g., estimating resources for building a ride-sharing app like Uber.

  5. Software Design Principles
    Applying cohesion and coupling concepts allows designing maintainable systems, such as a modular CRM system that can add new features without major rewrites.

  6. Quality Assurance & Reliability
    Testing methods help find defects early in applications like online banking, ensuring security and reliability.

  7. Maintenance and Evolution
    After launch, software like social media platforms (Facebook, Twitter) require updates and bug fixes to stay relevant and secure.

  8. Risk Management
    Identifying risks early in projects such as autonomous vehicle software prevents costly failures or accidents.

  9. Professional Standards & Documentation
    Using IEEE standards ensures projects like government tax systems meet compliance and are maintainable.


Career Profiles in Software Engineering

  1. Software Developer / Software Engineer
    Writes code and builds applications. For example, a developer at Google working on the Chrome browser implementing new features and fixing bugs.

  2. Systems Analyst
    Works with stakeholders to understand requirements. For instance, analyzing business needs for a retail chain’s inventory system.

  3. Software Project Manager
    Oversees project progress. For example, managing a team building a mobile payment solution, ensuring deadlines and budgets are met.

  4. Quality Assurance (QA) Engineer / Software Tester
    Designs and runs tests to find software defects. Example: Testing a healthcare app to ensure patient data is secure and functions work correctly.

  5. Software Architect
    Designs the overall structure of software. For instance, architecting the scalable backend system of Netflix to handle millions of streaming users.

  6. Configuration Manager
    Controls software versions and releases. Example: Managing releases and versioning of an enterprise ERP software like SAP.

  7. Maintenance Engineer
    Fixes bugs and updates live systems. For example, maintaining and updating a legacy banking system to comply with new regulations.

  8. Requirement Engineer / Business Analyst
    Gathers and documents requirements. For example, defining the user stories for a fintech startup’s app based on customer interviews.

  9. Reliability Engineer
    Ensures software availability and reliability. Example: Monitoring cloud services uptime at Amazon Web Services and improving fault tolerance.

  10. DevOps Engineer
    Automates software deployment and infrastructure. Example: Creating CI/CD pipelines for continuous updates of a large social media platform.

  11. Risk Manager
    Identifies and mitigates project risks. For example, assessing security risks in developing an online voting system to ensure election integrity.

No comments:

Post a Comment