Software Engineering
Software Engineering is an engineering discipline which is concerned with all aspects of software
production from early stages of system specification through to maintaining the system after it has gone
into use.
Main difference in software engineering compared to other engineering disciplines
It’s difficult for a customer to specify requirements completely
It’s difficult for the develop to understand fully the customer needs
It’s difficult to test software exhaustively
Software requirement changes regularly
Problem or Failure with Software Development
The quality of the software is not satisfactory
Software is costly
Software is difficult to maintain
Time schedule and Cost estimates of many software projects are grossly inaccurate
The productivity of the software people is not satisfactory to meet the demand
Difference between Software Engineering and Computer Science
Computer Science is the theory of fundamentals and Software Engineering is concerned with
practicalities of developing and delivering useful software.
Difference between Software Engineering and System Engineering
System Engineering is concerned with all aspects of computer based system development including
hardware, software and processor engineering. Software Engineering is the part of this process.
Reasons of Software needs to be changed
Errors in the system
Availability of new technology
Changes in the user requirements
Changes in the enterprise or Government policy
Software Quality Attributes
1. Bohem’s Classification
Current usefulness
The qualities expected from a software system in a user’s point of view
Efficiency Correctness
Reliability User friendliness
Usability Robustness
Potential usefulness
The qualities expected from a software system in a developer’s point of view
Maintainability
Modularity
Reusability
Portability
2. Mc Call’s Classification
Product Operation Product Revision Product Transition
Efficiency Maintainability Reusability
Reliability Flexibility Portability
Usability Testability Interoperability
Correctness
User friendliness
Robustness
The Software process Characteristics
Understandability Robustness
Visibility Maintainability
Acceptability Rapidity
Reliability Supportability
Water fall model processes
Software Requirement Analysis and Specification
Software Design
Coding (Implementation)
Testing
Maintenance
RAD model processes
Business Modeling
Data Modeling
Process Modeling
Application Generation
Testing and Turnover
Four Main task regions in Spiral Model
Determine goals, alternatives, constraints
Evaluate alternatives and risks
Develop and Test
Plan
Prototype
A prototyping is the smaller version of the system
Prototyping Techniques
1. Throw away prototyping
2. Evolutionary prototyping
Agile Process
Agile software engineering combines a philosophy and a set of development guidelines
Requirement Engineering Process
1. Feasibility Study
2. Requirement analysis and elicitation
3. Requirement Specification
4. Requirement Validation
Requirement Documents and Readers of Requirement Documents
User Requirements System Requirements Software Requirements Specification
System end users System end users Software Developers
System Architects System Architects System Architects
Client Engineers Client Engineers
Client Mangers Software Developers
Contractor Managers
Types of Requirements
Functional Requirements
Non Functional Requirements
Domain Requirements
Requirement Analysis Tools
Traditional Structured Methods Object Oriented Methods
Entity Relationship Diagrams Use Case Diagrams
Data Flow Diagrams Class Diagrams
Entity State Transition Diagrams Sequence Diagrams
State Transition Diagrams
Feasibility Study
A feasibility study is a short and focused study which is aimed to check the feasibility of the project
considering resources, cost/benefit, technology availability etc.
Requirement Specification
A detailed and precise description of system requirements is set to act as a basis for a contract between
customer and software developer.
Requirements Validation
Requirement validation is concerned with showing that the requirements actually define the system the
customer wants.
Requirement Validation Checks
Validity checks Realism checks
Consistency checks Verifiability
Completeness checks
Requirement Validation Techniques
Requirement Reviews Test case generation
Prototyping Automated consistency analysis
Design Activities involved in design process
Identification of sub systems
Identification of software components
Identification of software architecture
Data Design
Data Structure design
Algorithm Design
Interface Design
Design Specification
Software Design Principles
Abstraction
Modularity
Encapsulation
Polymorphism
Software Design Techniques
Top Down Decomposition
Bottom Up Design
Jason Structured Design
Object Oriented Design
Software Configuration Management
Software Configuration Management is the development and application of standards and procedures
for managing an evolving software product.