Course Objectives :
- To introduce the basic concepts of the software development processes, Software requirements and specifications
- To impart knowledge of Software Project Planning and various Software design techniques for developing large software systems.
- To understand Software Metrics, Software Reliability, and Quality assurance using ISO 9001 and SEI-CMM.
- 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):
- K. K. Aggarwal and Yogesh Singh, “Software Engineering”, New Age International, 3rd Ed., 2005.
- R. S. Pressman, “Software Engineering – A Practitioner's Approach”, McGraw Hill Int. , 5th Ed., 2001.
- Pankaj Jalote, “An Integrated Approach to Software Engineering”, Narosa, 3rd Ed., 2005.
References:
- Stephen R. Schach, “Classical & Object Oriented Software Engineering”, IRWIN, 1996.
- James Peter, W. Pedrycz, “Software Engineering: An Engineering Approach”, John Wiley & Sons.
- I. Sommerville, “Software Engineering”, Addison Wesley,8th Ed., 2009.
- Frank Tsui and Orlando Karan, “Essentials of Software Engineering”, Joes and Bartlett, 2nd Ed., 2010.
- Kassem A. Saleh, “Software Engineering”, Cengage Learning, 2009.
- Rajib Mall, “Fundamrntal of Software Engineering”, PHI, 3rd Ed., 2009.
- Carlo Ghizzi, Mehdi Jazayeri and Dino Mandrioli, “Fundamental of Software Engineering”, PHI, 2nd Ed., 2003.
- Carol L. Hoover, Mel Rosso-Ll
Importance of Software Engineering
-
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. -
Managing Complexity and Scale
Large projects, like an e-commerce platform (Amazon, Flipkart), require breaking down into modules for easier management and integration. -
Requirement Analysis & Specification
Understanding user needs, such as in healthcare software, ensures the system supports doctors' and patients’ workflows without costly rework. -
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. -
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. -
Quality Assurance & Reliability
Testing methods help find defects early in applications like online banking, ensuring security and reliability. -
Maintenance and Evolution
After launch, software like social media platforms (Facebook, Twitter) require updates and bug fixes to stay relevant and secure. -
Risk Management
Identifying risks early in projects such as autonomous vehicle software prevents costly failures or accidents. -
Professional Standards & Documentation
Using IEEE standards ensures projects like government tax systems meet compliance and are maintainable.
Career Profiles in Software Engineering
-
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. -
Systems Analyst
Works with stakeholders to understand requirements. For instance, analyzing business needs for a retail chain’s inventory system. -
Software Project Manager
Oversees project progress. For example, managing a team building a mobile payment solution, ensuring deadlines and budgets are met. -
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. -
Software Architect
Designs the overall structure of software. For instance, architecting the scalable backend system of Netflix to handle millions of streaming users. -
Configuration Manager
Controls software versions and releases. Example: Managing releases and versioning of an enterprise ERP software like SAP. -
Maintenance Engineer
Fixes bugs and updates live systems. For example, maintaining and updating a legacy banking system to comply with new regulations. -
Requirement Engineer / Business Analyst
Gathers and documents requirements. For example, defining the user stories for a fintech startup’s app based on customer interviews. -
Reliability Engineer
Ensures software availability and reliability. Example: Monitoring cloud services uptime at Amazon Web Services and improving fault tolerance. -
DevOps Engineer
Automates software deployment and infrastructure. Example: Creating CI/CD pipelines for continuous updates of a large social media platform. -
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