|Software Engineering||Learning Schedule|
|Pre-requisites: Basic Computing||3||0||0||3|
This course is an introduction to software engineering process. Students are learned about software development process models and examine life cycle phases of software starting from: planning, problem analysis, requirements definition, specification, design, implementation, testing, maintenance and project management. The course also presents a collection of techniques for formal software development including operational, algebraic, model-based, property-based specification methods for the verification of consistency and completeness of specifications and for the verification of software properties. Students will be given approximately assignments and coursework in a group project. Team software development project using concepts and methodologies learned in software engineering classes and has to build a practical implementation of software development.
The objective of this course is to:
- Design and develop software systems (including analysis, design, construction, maintenance, quality assurance and project management) using the appropriate theory, principles, tools and processes.
- Use appropriate computer science and mathematics principles in the development of software systems.
- Solve problems in a team environment through effective using various tools, techniques and processes.
- Introduce the current issues presently involved in effectively performing duties as a software practitioner in an ethical and professional manner for the benefit of society.
- Practice the lifelong learning needed in order to keep current as well as new challenging issues in real life scenario.
- Develop software in at least one application domains like Healthcare, safety, Society, Legal, Environment, Communica-tion etc.
At the end of the course student will be able to:
- To apply software engineering theory, principles, tools and processes, as well as the theory and principles of computer sci-ence and mathematics, to the development and maintenance of complex software systems.
- To design and validate various software prototypes and to develop quality software metrics.
- To participate, productively in software project teams involving students from both software engineering and other majors streams of computer scinec & engineering.
- To design and develop standard procedures through oral and written reports and software documentation evaluated by both peers and faculty.
- To elicit, analyze and specify software requirements through a productive working relationship with project stakeholders.
- Analyze and implement application of network system.
Unit I: Introduction to Software Engineering
Software Components, Software Characteristics, Software Crisis, Software Engineering Processes, Similarity and Differences from Conventional Engineering Processes, Software Quality Attributes. Software Development Life Cycle (SDLC) Models: Water Fall Model, Prototype Model, Spiral Model, Evolutionary Development Models, Iterative Enhancement Models.
Unit II: Software Requirement Specifications (SRS)
Requirement Engineering Process: Elicitation, Analysis, Documentation, Review and Management of User Needs, Feasibility Study, Information Modeling, Data Flow Diagrams, Entity Relationship Diagrams, Decision Tables, SRS Document, IEEE Stan-dards for SRS.
Software Quality Assurance (SQA): Verification and Validation, SQA Plans, Software Quality Frameworks, ISO 9000 Models, SEI-CMM Model.
Unit III: Software Design
Basic Concept of Software Design, Architectural Design, Low Level Design: Modularization, Design Structure Charts, Pseudo Codes, Flow Charts, Coupling and Cohesion Measures, Design Strategies: Function Oriented Design, Object Oriented Design, Top-Down and Bottom-Up Design. Software Measurement and Metrics: Various Size Oriented Measures: Halestead’s Software Science, Function Point (FP) Based Measures, Cyclomatic Complexity Measures: Control Flow Graphs.
Unit IV: Software Testing
Testing Objectives, Module Testing, Integration Testing, Acceptance Testing, Regression Testing, Testing for Functionality and Testing for Performance, Top-Down and Bottom-Up Testing Strategies: Test Drivers and Test Stubs, Structural Testing (White Box Testing), Functional Testing (Black Box Testing), Test Data Suit Preparation, Alpha and Beta Testing of Products. Static Test-ing Strategies: Formal Technical Reviews (Peer Reviews), Walk Through, Code Inspection, Compliance with Design and Coding Standards.
Unit V: Software Maintenance and Software Project Management
Software as an Evolutionary Entity, Need for Maintenance, Categories of maintenance: Preventive, Corrective and Perfective Main-tenance, Cost of Maintenance, Software Re-Engineering, Reverse Engineering. Software Configuration Management Activities, Change Control Process, Software Version Control, an Overview of CASE Tools. Estimation of Various Parameters such as Cost, Efforts, Schedule/Duration, Constructive Cost Models (COCOMO), Resource Allocation Models, Software Risk Analysis and Management.
- S. Pressman, Software Engineering: A Practitioners Approach, McGraw Hill.
- K. Aggarwal and Yogesh Singh, Software Engineering, New Age International Publishers.
- Rajib Mall, Fundamentals of Software Engineering, PHI Publication.
- Pankaj Jalote, Software Engineering, Wiley
- Carlo Ghezzi, M. Jarayeri, D. Manodrioli, Fundamentals of Software Engineering, PHI Publication.
- Ian Sommerville, Software Engineering, Addison Wesley.