What Is Software?: A Set of Programs Designed For Specific Pre-Defined Purpose(s)
What Is Software?: A Set of Programs Designed For Specific Pre-Defined Purpose(s)
What Is Software?: A Set of Programs Designed For Specific Pre-Defined Purpose(s)
Input
Process
Output
You wont work on the same project all your life. You wont work in the same company all your life. Maintenance work is difficult without documentation. To experience the importance of documentation, work on another persons project part without documentation.
System Study
Construction
Implementation
Testing
Software Process
Process Maturity Levels SEIs CMM
Level 1: Initial Level 2: Repeatable Level 3: Defined Level 4: Managed Level 5: Optimized
Physical DFD of current system Logical DFD of current system Data Dictionary of current system
Construction Phase
Select programming language. Map Project Specifications document terms into programming language terms. Construct data structures / classes / objects from class taxonomies in Domains Analysis outputs. Construct Database from Data Dictionary. Construct User Interface. Input and output formats. Write Algorithms for processes. Directory structure and files list.
Construction Phase
Coding
Commenting is extremely important. Every variables purpose must either have a comment or must be mentioned in one of the project documents. Every functions / procedures purpose must either have a comment or must be mentioned in one of the project documents. Have checklist for every project part.
Testing Phase
Modular approach during development makes testing easier Testing strategies Test cases mapped from Customer requirements Checklists specified-actual comparison Errors during development Defects after delivery to customer Defect Rates Validation testing building the right product Verification testing building the product right 80% errors caused by 20% code in most software Higher chances of errors in test cases with boundary values input
Black box testing functionality-based White box testing all execution paths exercised Integration testing as each module is integrated into the system Regression testing repeat previous tests as integration progresses. Unit testing individual program Top-down approach whole to parts, stubs and drivers required Bottom-up approach parts to whole System testing Alpha testing by customer at developers place Beta testing by end-users at customers place
System Testing
Software must work properly with the other parts of organizations system Recovery testing force failure and see if recovery is proper Security testing sensitive info protection Stress testing abnormal situations, high loads Performance testing high priority for Realtime embedded systems
Debugging
Errors during development. Defects after delivery. Observation and noting effects. Trace cause(s) from observed effects. List of probable causes. Test each probable cause and eliminate irrelevant ones and arrive at actual cause(s). Partitioning or decomposing large problem into smaller, simple problems. Inference and deduction. Fixing one bug may cause another new one.
Software Metrics
Project, LOC, Effort, Cost, Errors, Defects, People Errors per KLOC Defects per KLOC Cost per LOC Pages of document per KLOC Errors per person-month LOC per person-month Cost per page of document
Software Metrics
Costing based on LOC has drawbacks. So, Function Points-based costing replaced it. Function Points
No. of user inputs No. of user outputs No. of user inquiries No. of files No. of external interfaces Count and Complexity Factor for each parameter Count * Complexity Factor gives the final measure
Implementation Phase
If System Study was done precisely, most implementation issues would have been handled at the beginning of the project itself. Checklist containing end-users, locations, hardware & software configuration. Software Configuration Management is the task that solves most technical issues during implementation. Having a good rapport with people at customer site is critical for implementation and finetuning. Implementation may lead to Corrective Maintenance. Communication and co-ordination with customer and endusers.
Maintenance
Starts after delivery only. Good design considers maintenance issues. SDLC applicable in this phase. Checklists containing end-users, locations, hardware & software configuration. Software Configuration Management is critical and is an umbrella activity. Adaptive Maintenance must begin with Impact Analysis. Communication and co-ordination with customer and endusers is important. MTTC = Mean Time-To-Change
Reverse Engineering
Design document for a software not available. Analyze program to create specifications. Extract design from source code. Recover design from whatever is available in the project.
C.A.S.E.
Computer-Aided Software Engg. CASE tools automate software engg. tasks in every step of the process. CASE tools usually generate code as well. But dont expect it to generate the whole software!!! CASE tools build a framework for projects. e.g.: Rational Rose by Rational Software Corporation which uses a process framework named RUP (Rational Unified Process) which is based on UML (Unified Modeling Language).