What is Software 1. It is a set of programs and related documentation which activates hardware and get things done. 2. Instructions that when executed provide desired function and performance, Data structures that enable the programs to adequately manipulate information and Documents that describe the operations and use of the programs. 3. Software is a set of instructions to acquire inputs and to manipulate them to produce the desired output in terms of functions and performance as determined by the user of the software. It also includes a set of documents, such as the software manual, meant for users to understand the software system. Today's software comprises the Source Code, Executables, Design documents, Operations and System Manuals and Installation and Implementation Manuals.
Types of Software Software is classified into two classes : Generic and Customized. Generic software is designed for a broad customer market whose requirements are very common, fairly stable and well understood by the software engineer. Customized products are those that are developed for a customer where domain, environment and requirements being unique to that customer and cannot be satisfied by generic products. Requirements and specifications in a generic product are controlled by the developer, whereas in the case of the customized product, these are controlled by the customer and influenced by the practices of that industry. The bare minimum essential attributes of good software are four Maintainability Dependability Efficiency Usability
Categories of Software All such software applications are categorized into five types for convenience. They are System Software : It is the enabler and service provider to software applications loaded on the computer system. It regulates the system’s performance and helps to run user-initiated applications. (DOS, Unix) Business Software : It can be generic or customer specific product. Some are common to all industries while some deal with industry specific information processing requirements. (ERP, SCM, CRM Packages) Design and Scientific Software : It deals with processing requirements in their specific field. They are written for specific applications using the principles and formulae of each field. Continued ….
Categories of Software ….. Continued ……. Embedded Software : When software written to perform certain functions under control conditions and further embedded into hardware as a part of larger systems, is called embedded software. Artificial Intelligence : it uses non numerical algorithms which use the data and information generated in the system, to solve the complex problems. These problem scenarios are not generally amenable (responsive) to problem-solving procedures, and require specific analysis and interpretation of the problem to solve it.
What is Engineering Engineering means Design & Build. So software engineering means systematic, structured and professional approach of designing and developing software. Software engineering is a layered technology to provide maximum quality. It is defined as discipline that addresses Economic, Design, Maintenance, Implementation aspects of the software. It is systematic, scientific and methodical use of standards, models and algorithms in design and development. It considers issues like hardware, operating systems, interoperatability between platforms, performance, scalability and upgrades.
System Analyst / Software Engineer Designing & Implementing systems to suit organizational needs are the functions of system analyst. He/she plays a major role in seeing business benefit from computer technology. He is a person who conducts a methodical study and evolution of an activity to identify its desired objectives in order to determine procedures by which these objectives can be gained. (Methodical study – Define Objectives – Decide procedures – in controlled environment – with available resources – to achieve common goals) System Analyst / Software Engineer - Interpersonal Skills Communication Understanding Teaching ( Educating people ) Selling ( selling ideas, promoting innovations ) Creativity ( Own ideas ) Authority ( Confidence to tell people what to do ) Responsible Versatility ( Doing different projects & handling changes )
System Analyst / Software Engineer - Technical Skills 1. Analysis and Modeling abilities 2. Conceptualize a software solution and support it by design. 3. Dynamic interface (Blending technical and non-technical considerations in functional specifications and general design.) 4. Project Management (scheduling, coordinating, staffing, directing, planning, control) 5. Problem solving (reducing problems to their elementary levels, developing alternative solutions ) 6. Domain knowledge of software systems. 7. Essential Technology and language skills - Basic Knowledge
Change agent Investigator & monitor Architect Psychologist Salesperson Politician User interface analyzer Behavioral issues System contracts Conflict solutions. Role of System Analyst / Software Engineer Role of System Analyst / Software Engineer in each phase of SDLC
What is System Types of System Elements of the System Characteristics of the System Organizational relationship among functioning units. Deterministic / Probabilistic Open / Closed system Physical / Abstract Empirical / Conceptual Natural / Manmade Social / Man-machine / Exclusive machine <ul><ul><ul><li>Inputs </li></ul></ul></ul><ul><ul><ul><li>Outputs </li></ul></ul></ul><ul><ul><ul><li>Processes </li></ul></ul></ul><ul><ul><ul><li>Control </li></ul></ul></ul><ul><ul><ul><li>Feedback </li></ul></ul></ul>Organization Interaction Interdependence Integration Environment Boundaries and Interface Quality Central Objective
What is a System It is a collective entity consisting of groups of elements that are interdependent, interrelated and that interact to achieve certain objectives. A system could be a part of bigger system. System Definition General systems theory is concerned with “developing a systematic, theoretical framework upon which to make decisions. It discourages thinking in a vacuum and encourages consideration of all the activities of the organisation and its external environment. The idea of systems has become more practical and necessary in conceptualizing the interrelationship and integration of operations, especially when using computers. Thus a system is a way of thinking about organizations & their problems. It also involves a set of techniques that helps in solving problems. The term system is derived from the Greek word “Systema” which means a organizational relationship among functioning units or components. e.g. Transport system, Telephone system.
Common Characteristics of Any System Organization :- Arrangement of components to achieve objectives. Such a arrangement portrays a system sub-system relationship, define the authority structure, specifies formal flow of communication and formalizes chain of commands. Interaction :- Manner in which components functions with each other. Interdependence :- Proper coordination and linking of components. Integration :- It is the completeness of the system Central Objective :- user must know the central objective early in the analysis for successful design and conversion. Environment :- It is the source of external elements that impinge on the system. In fact it often determines how a system must function Boundaries & Interface :- A system should be defined by its boundaries. i.e. the limits that identify its components, processes, and interrelationship when it interfaces with another system. e.g. a teller system in commercial bank is restricted to the certain related activities.
Concept of sub-system & supra system Sub system Supra system Super system Human beings… Organisation… Industry… Economy… Global economy. Deterministic & Probabilistic System A deterministic system operates in a predictable manner and in a given environment. The behavior of the system’s internals is known with certainty.In other words, in a deterministic system the next state of the the system can be predicted without doubt if the current state of the system is known. In contrast, a probabilistic system operates in an unpredictable manner. The behavior of the system internal is probabilistic and hence its outcome becomes unpredictable. Even if the status of the current system is known, the next state of the system cannot be predicted with certainty.
Closed or Open System A closed system is one that is self contained and self reliant (dependent), and does not need to interact; it is not influenced by the external environment. Open systems are designed to exchange or to interact with the environment and react to inputs accordingly. These systems are designed to receive undefined inputs. The design and architecture of the open system is such that it is easily adaptable to changes arising out of environmental changes. Exercise : write short note on Physical / Abstract Systems Empirical / Conceptual Systems Natural / Manmade Systems Man-machine / Exclusive machine Systems A large complex system is built with principles to ensure effective system design. The principles used in system building are Decomposition Simplification Decoupling
<ul><ul><ul><li>1. Identify & Understand the problem </li></ul></ul></ul><ul><ul><ul><li>2. Breaking down the problem into sub problems – Modularity </li></ul></ul></ul><ul><ul><ul><li>3. Objective Definition </li></ul></ul></ul><ul><ul><ul><li>4. Preliminary Investigation - Fact Finding - Information Gathering </li></ul></ul></ul><ul><ul><ul><li>5. Feasibility Study </li></ul></ul></ul><ul><ul><ul><li>6. System Analysis </li></ul></ul></ul><ul><ul><ul><li>7. System Design </li></ul></ul></ul><ul><ul><ul><li>8. Coding - Programming </li></ul></ul></ul><ul><ul><ul><li>9. Testing </li></ul></ul></ul><ul><ul><ul><li>10. Implementation </li></ul></ul></ul><ul><ul><ul><li>11. Maintenance & Support </li></ul></ul></ul>System Development Life Cycle (SDLC)
Modularity Software architecture embodies modularity; that is, software is divided into separately named and addressable components, called modules that are integrated to satisfy problem requirements.Modularity is the single attribute of software that allows a program to be intellectually manageable. As the number of modules grows, the effort (cost) associated with interfacing the modules also grows. Coupling - Coupling is a measure of interconnections among modules in software structure and program structure. The concept is used in design and architecture.
Questionnaire Random Sampling Document Study Interviews Observation Fact Finding Techniques Define Prime objectives. Define sub-system (modular) objectives. Definition of system procedures and functions. Definition of system constraints. Definition of system maintenance responsibility. Objective Defination
<ul><li>Technical </li></ul><ul><li>Operational </li></ul><ul><li>Economical </li></ul><ul><li>Social </li></ul><ul><li>Motivational </li></ul><ul><li>Technical Feasibility - Analysis showing the feasibility of meeting requirements through software capability, reliability, availability and the skills of development team. It is concerned with whether the system proposed for development can be computerized. But due to rapid & fantastic development in the hardware industry, now technical feasibility means whether to & how to computerize. This calls for a look on the software and computer experts rather than the hardware. </li></ul>Feasibility Study
Operational Feasibility - analysis of the operational environment (users, work culture, capacity and capability of organisation etc.) to confirm whether the system will succeed in actual usage even though it is technically and economically feasible. It focuses on the willingness and ability of the management, employees, customers and suppliers of an organization to operate, use and support a proposed system. Economical feasibility :- It is basically cost benefit analysis. consideration of Startup Cost ( Salaries to programmers and analysts, preparation of data and system manuals, other supporting documents, cost of additional hardware and training ) & Operational Cost ( H/w or S/w rental of depreciation charges, Salaries of operating staff, maintenance staff, installation cost, overheads) Steps to be followed in CBA Cost benefit Analysis 1. Study the information 2. Define the objectives 3. Determine various inputs & outputs 4. Establish main system 5. Identify changes 6. Estimate cost involved 7. Estimate benefits 8. Perform CBA
Analysis Phase - it involves preparing a detailed analysis of the different functions to be carried out by the system and identification of the data flow among the different functions. Each function required by the user is studied carefully and then recursively decomposed into various subfunctions and the data flows. Detailed Study of Existing System’s procedures, Existing Systems Document Study, Its Significance, Num. Of Copies, Information Flow, File Organizations, Validations & Complexities, Data Processing Requirements, Such as Searching, Sorting, Merging & Indexing. Process Logic Etc. System Analysis
System Design Output Design Input Design File Design ERD to Files Normalization Process Design Structured English Decision Trees Decision Tables Code Design Menu Design System Testing Location Wise Testing Onsite Off Site - Developer’s Site User Wise Testing End User - Operators Programmers Software Engineer
System Design Design Phase - The exact requirements of the customer are determined and documented in a SRS Document. The goal of the design phase is to transform the requirements specification into a structure that is suitable for implementation in some programming language. In technical terms, through the design phase we derive the software architecture from the SRS Document. There two distinct design approaches are being followed. I.e. Traditional design approach and object oriented approach. Interface design - it describes how the software communicates with itself I.e. within various components. Software Testing Location wise testing User wise testing General Testing Location wise Testing – Onsite (Client’s Site) , Offsite (Developer’s site)
Output Design Contents Format Location Frequency Response Volume Data-File Design Normalisation ERD into files Process Design ( Specification ) Structured English, Decision trees, Decision Tables Data flow diagrams Functional decomposition diagrams Program Specification Menu Design Code Design Input Design Data Recording Data Conversion Data Verification Data Control Data Validation Data Correction
User wise Testing User or Operator Run all the programs with test data List out the errors found Follow data security measures, backups, recoveries as per system specifications. Programmer Preparation of test data and files Logical error handling of program modules & debug them Documentation of bugs and effort to remove them System Analyst Module wise and system wise study of errors. Comparison of outputs with design Overall monitoring and control activity. Beta Test - a test is conducted at customer site by the end user without the presence of developer.
Black Box Test - a test to confirm whether the outcome is correct and as expected for the given inputs. White box testing - it tests the internals of the system. It tests all internal independent paths, logical decisions, loops within boundaries and internal data structure. Bottom up Testing - a process of testing that begins at the lowest level and moves upwards in layers. ( sub module to module to sub system … ) - Similarly Top Down Testing Incremental testing - testing strategy in which sub systems are tested in isolation as units, the testing then continues for integration testing. Integration Testing - Systematic testing process that discovers errors associated with interfaces which build integrated program structure. Unit Testing - testing an individual module in isolation. This is in contrast to integration testing. Usability testing - it measures the ease of use and satisfaction of the users.
Procure necessary h/w and s/w. – Site Preparation Procurement of necessary preliminary software Creation of master files with necessary updates Install the system package, executable version Training to all end users Preparation of user manuals Monitor the running operations Discard the old system. System Implementation System Maintanance & Support System Conversion Version Control
<ul><li>Implementation </li></ul><ul><li>System implementation includes all those activities that take place to convert from the old system to the new. The new system may be totally new, replacing an existing manual or automated system, or may be a major modification to an existing system. Proper implementation is essential to provide a reliable system to meet organization requirements. </li></ul><ul><ul><ul><li>Preparation of user manuals </li></ul></ul></ul><ul><ul><ul><li>Creation of master files with necessary updates </li></ul></ul></ul><ul><ul><ul><li>Training to all end users </li></ul></ul></ul><ul><ul><ul><li>Procure necessary h/w and s/w. </li></ul></ul></ul><ul><ul><ul><li>Install the system package, executable version </li></ul></ul></ul><ul><ul><ul><li>Monitor the running operations </li></ul></ul></ul><ul><li>Discard the old system. </li></ul>
<ul><li>User Manual - It provides a vehicle of communication between customer and developer. It is prepared using information form the system definition as well as the results of prototype studies and mock-ups of user displays and reports. </li></ul><ul><li>User’s Manual Should Contain </li></ul><ul><ul><li>System objectives </li></ul></ul><ul><ul><li>Related system </li></ul></ul><ul><ul><li>Responsibilities Cost benefit analysis </li></ul></ul><ul><ul><li>Data flow diagrams </li></ul></ul><ul><ul><li>Operating procedures Security measures </li></ul></ul><ul><ul><li>File layouts </li></ul></ul><ul><ul><li>Report layouts </li></ul></ul><ul><ul><li>System process logic </li></ul></ul><ul><ul><li>Validation parameters </li></ul></ul><ul><ul><li>Summery about system results </li></ul></ul>
Maintenance - it is a process for modifying the software after its release to customer. There are different types of maintenance, namely corrective, preventative, avoidance and adaptive. Four different types of changes encountered during the maintenance phase. Corrective :- It changes the software to correct defects Adaptive :- It results in modification to the software to accommodate changes to its external environment. Enhancement (Perfective) :- It extends the software beyond its original functional requirements Preventive :- It makes changes to computer programs so that they can more easily corrected, adapted and enhanced.
1. Water Fall Model – Classic Life Cycle – Linear Approach 2. Prototyping Approach 3. Spiral Model 4. 4 GT – CASE Tools 5. OOM – Object Oriented Modeling / Programming 6. RAD – Rapid Application Development System Development Approaches
Problem Identification Modularity Objective Definition Fact Finding Feasibility Study System Analysis System Design Programming Testing Implementation