Unit I Introduction to Software Engineering and Software Process Models Software Engineering Fundamentals : Introduction to software engineering, The Nature of Software, Defining Software, Software Engineering Practice. Software Process : A Generic Process Model, defining a Framework Activity, Identifying a Task Set, Process Patterns, Process Assessment and Improvement, Prescriptive Process Models, The Waterfall Model, Incremental Process Models, Evolutionary Process Models, Concurrent Models, A Final Word on Evolutionary Processes. Unified Process, Agile software development: Agile methods, plan driven and agile development. (Chapter 1) Unit II Software Requirements Engineering and Analysis Modeling : Requirements Engineering, EstabIishing the Groundwork, Identifying Stakeholders, Recognizing Multiple Viewpoints, working toward Collaboration, Asking the First Questions, Eliciting Requirements, Collaborative Requirements Gathering, Usage Scenarios, Elicitation Work Products, Developing Use Cases, Building the Requirements Model, Elements of the Requirements Model, Negotiating Requirements, Validating Requirements. Suggested Free Open Source tools : StarUML, Modelio, SmartDraw. (Chapter 2) Unit III Estimation and Scheduling Estimation for Software Projects : The Project Planning Process, Defining Software Scope and Checking Feasibility, Resources management, Reusable Software Resources, Environmental Resources, Software Project Estimation, Decomposition Techniques, Software Sizing, Problem-Based Estimation, LOC-Based Estimation, FP-Based Estimation, Object Point (OP)-based estimation, Process-Based Estimation, Estimation with Use Cases, Use- Case - Based Estimation, Reconciling Estimates, Empirical Estimation Models, The (v) Structure of Estimation Models, The COCOMO II Mode, Preparing Requirement Traceability Matrix Project Scheduling : Project Scheduling, Defining a Task for the Software Project, Scheduling. Suggested Free Open Source Tools : Gantt Project, Agantty, Project Libre. (Chapter 3) Unit IV Design Engineering Design Concepts : Design within the Context of Software Engineering, The Design Process, Software Quality Guidelines and Attributes, Design Concepts - Abstraction, Architecture, design Patterns, Separation of Concerns, Modularity, Information Hiding, Functional Independence, Refinement, Aspects, Refactoring, Object-Oriented Design Concept, Design Classes, The Design Model , Data Design Elements, Architectural Design Elements, Interface Design Elements, Component-Level Design Elements, Component Level Design for Web Apps, Content Design at the Component Level, Functional Design at the Component Level, Deployment-Level Design Elements. Architectural Design : Software Architecture, What is Architecture, Why is Architecture Important, Architectural Styles, A brief Taxonomy of Architectural Styles. Suggested Free Open Source Tool : Smart Draw (Chapter 4) Unit V Risks and Configuration Management Risk Management : Software Risks, Risk Identification, Risk Projection, Risk Refinement, Risk Mitigation, Monitoring, and Management, The RMMM Plan. Software Configuration Management : Software Configuration Management, The SCM Repository The SCM Process, Configuration Management for any suitable software system. Suggested Free Open Source Tools : CF Engine Configuration Tool, Puppet Configuration Tool. (Chapter 5) Unit VI Software Testing A Strategic Approach to Software Testing, Verification and Validation, Organizing for Software Testing, Software Testing Strategy - The Big Picture, Criteria for Completion of Testing, Strategic Issues, Test Strategies for Conventional Software, Unit Tesing, Integration Testing, Test Strategies for Object-Oriented Software, Unit Testing in the OO Context, Integration Testing in the OO Context, Test Strategies for WebApps, Validation Testing, Validation -Test Criteria, Configuration Review. Suggested Free Open Source Tools : Selenium, JUnit. (Chapter 6)