Software Engineering: Prof. Archana Deshpande
Software Engineering: Prof. Archana Deshpande
Course Objective
1. 2. 3.
4.
5. 6. 7. 8.
To understand the fundamental concepts of SDLC phases Software Process Requirement Phase Data Modeling Practices OOA and OOD Tools Design Phase Testing Phase Software Standards and Metrics
Syllabus of SE
Unit 1 - Software, modules, process, process framework, process models, SEI-CMMI model, Introduction to Unified process and Agile Unit 2 Requirements engineering, Problem Definition, Scope, Negotiation, Requirements Management, Gathering Unit 3 - Structured Systems Tools and Techniques fact finding tools, FDD, ERD, CLD, DFD, Decision Trees, Decision Tables, Structured English Unit 4 - Software Engineering Practice Data Modeling, System Modeling, Hatley - Pirbhai Modeling, object oriented modeling through state transition diagrams
Unit 5 - UML tools and techniques for Web based/Object Oriented Applications Class Hierarchy diagrams, Use Case diagrams, Sequence diagrams Unit 6 - Design Process, User Interface Design, Cohesion, Coupling Unit 7 - Testing- Strategies, Techniques, Alpha, Beta, Unit, Integration, Validation, Regression, Smoke, System Testing, Debugging, Basis Path, Black box, White box, Boundary Value Analysis, Test Cases Unit 8 - Product Metrics: Software Quality, Function-based, Size-based, ISO
Books Recommended
Analysis and Design of Information Systems 2e by Senn Software Engineering A Practitioner's Approach by Roger Pressman Systems Analysis and Design by Elias Awad Introducing Systems Analysis and Design by Lee Systems Analysis & Design by Perry Edwards (McGraw Hill) Systems Analysis, Design & Introduction to Software Engineering (SADSE) - Parthasarthy S, Khalkar B W Management Information Systems Waman Jawadekar
Unit 1
Software Engineering and Software Process
Unit Objectives
To understand the concepts of Software Software Engineering Modules Process Process Models
Software
What is a Software?
Characteristics of a Software
Software is developed or engineered; not manufactured. Software doesnt wear out. Most software are custom built.
Categories of Software
System Application Engineering / Scientific Embedded Product Line Web Applications Artificial Intelligence
Software Module
What is a module?
Software Engineering
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software is Software Engineering. (IEEE) Software Engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (Bauer)
Tools
Quality focus Total Quality Management (TQM), Six Sigma, ISO, CMMI etc.
Process
A set of activities, methods, practices, and transformations that people employ to develop and maintain software and the associated products (e.g. project plans, design documents, code, test cases, user manuals etc.)
Process Framework
Process framework needs to identify small number of framework activities applicable to all software projects. Umbrella activities are applicable across the entire software process.
Framework activity # 2
Communication Planning Modeling Construction Deployment The framework activities are common to all the software process; details of the software process may change.
For example, modeling activity consists of two software engineering actions Analysis and Design. Analysis has a set of work tasks like requirements gathering, negotiation, specification, validation etc. Design has work tasks like data design, architectural design, interface design, and component design.
Umbrella activities
Software project tracking and control Risk Management Software Quality Assurance Formal Technical Reviews Measurement Software Configuration Management Reusability Management Work Product Preparation and Production
Process Models
Waterfall model
Incremental model
RAD model
Prototyping model
Spiral model
SEI - CMMI
SEI- CMM
Focuses on elements of essential practices and processes from various bodies of knowledge. Describes common sense, efficient, proven ways of doing business (which you should already be doing) - not a radical new approach. CMM is a method to evaluate and measure the maturity of the software development process of an organizations. CMM measures the maturity of the software development process on a scale of 1 to 5. CMM v1.0 was developed by the Software Engineering Institute (SEI) at Carnegie Mellon University in Pittsburgh, USA.
CMM was originally developed for Software Development and Maintenance but later it was developed for :
Systems Engineering Supplier Sourcing Integrated Product and Process Development People CMM Software Acquisition Others...
CMM Examples: People CMM: Develop, motivate and retain project talent. Software CMM: Enhance a software focused development and maintenance capability.
Unified process
Use case driven Architecture centric Iterative and incremental Formed by James Rumbaugh, Grady Booch, and Ivar Jacobson Unified Modeling Language (UML) - an industry standard for OO software development. Using UML, a framework developed for OO-SE called as Unified Process.
Phases of the UP
The UP defines the following four phases: The Inception phase concludes with the Objective milestone The Elaboration phase concludes with the Architecture milestone The Construction phase concludes with the Initial Operational Capability milestone The Transition phase concludes with the Product Release milestone
Rational Unified Process (RUP) originally developed by Rational Software, a company later acquired by IBM. Rational Rose popular UML modeling solution by IBM Agile Unified Process Basic Unified Process
Iterative and incremental development Self-organizing, cross-functional teams. Minimally planned tasks in small increments No long-term planning. Iterations last from one to four weeks. Emphasizes face-to-face communication Work in a single open office (called a bullpen Includes Scrum, Crystal Clear, Extreme Programming, Adaptive Software Development, Feature Driven Development, and Dynamic Systems Development Method (DSDM). These are now typically referred to as Agile Methodologies