System Concepts and Its Environment PDF
Document Details
IMRT Nashik
Dr. Deepak V. Nandre
Tags
Summary
This document provides an introduction to system concepts, including definitions, characteristics, and different types. It covers topics like components, interactions, goals, and life cycles within a system. The knowledge is targeted at undergraduate students.
Full Transcript
Unit -1: System Concepts and Its Environment Content: Introduction to System Concepts, Characteristics, its Components and Environments Types of general system, Evolution of Information System & its types. Introduction The word system is derived from the Greek word “Systema” wh...
Unit -1: System Concepts and Its Environment Content: Introduction to System Concepts, Characteristics, its Components and Environments Types of general system, Evolution of Information System & its types. Introduction The word system is derived from the Greek word “Systema” which means the organized relationship among the functioning units. However the word system always comes with an adjective, whenever we talk about a system such as educational system, political system, accounting system etc. But if we carefully analyse these systems we can find that there are some features common to all the systems. A system is an orderly grouping of interdependent components linked together according to a plan to achieve a specific objective. By having crystal clarity of system relevant concepts one can identify the characteristics of the system. One can analyse, categorize and confirm them in order to develop a computerize system with the help of elements discussed and explained which lay down foundation for structure of built up system. And Types of system help you to categorize the structure of your system in appropriate format. Some Definitions A collection of parts that work together to achieve a goal/task. A set of objects and relationships among the objects viewed as a whole and designed to achieve a purpose System is integrated collection of the components which satisfy functions necessary to achieve the system goals and which have relationship to one another that defines structure of the system. A system is a set of elements forming an activity or scheme seeking a common goal by operating on data in time reference to yield information. Examples Solar system Computer system Digestive systems Information system Public transport system Education system Central heating system Medical system Characteristics of System The characteristics of the system are 1. Basic components 5. Life cycle 2. Interaction and structure 6. Interdependence 3. Goal 7. Integration 4. Behaviour 8. Central Objective 1. Basic components: As per the definition of system the functioning units means the basic elements of the system which are interrelated, are the basic components of the system. So these basic elements are nothing but the identifiable and moving parts of the system. Following are some examples of system and its basic components. Educational system: Students, teachers, books, computers. Computer system: Monitor, CPU, keyboard. 2. Interaction and structure: An important feature of the system is the basic components must interact among themselves. It is not only collection or grouping of elements. If an organization is considered as a system then purchase department must interact with stores and production department, production with PPC and so on. Also they are interdependent on each other. If we consider, computer as a system then if some information is keyed it gets processed by arithmetic or logic unit or both and the final result is displayed on the screen. So this interrelation activity of Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 1 the components makes the system dynamic. Such a relationship among the components which define the boundary between the system and environment is called as the structure of the system. 3. Goal: In order to achieve the goal of the system we should first understand the meaning of Central Objective: Central objective means the common goal, because without common goal system will start moving in all directions. As a result coordination among all the parts (Components) will be lost. Objective may be real or stated. All the components work together to achieve that particular objective. Interdependence: Each system units or parts are dependent on each other. Integration: It is combined work of all the components in order to achieve the goal of the system. There must be coordination among all parts of the system So in order to have such coordination the system must work as a’ whole’, integrating all its activities to achieve the desired result. Synergistic effect: From the integration concept it is clear that the system has to be viewed as ‘whole’ rather than just as sum of its parts. This integrating effect is called as synergistic effect. The parts of a system work together within the system even through each part perform a unique function. 4. Behaviour: Behaviour is the way the system reacts to its surrounding environment. Behaviour is determined by the procedures designed to make sure that components behave in ways that will allow system to achieve common goal. For example: If we touch an object which is hot, the nervous system makes our body to withdraw immediately from the hot source. So heat is input from environment, reaction is the behaviour and instruction in the nervous system (how to react) is the procedure. Procedure describes what ought to be done and behaviour describes what is actually done. 5. Life cycle: Every system has life cycle and according to human life it has birth that is evolution, life, aging, repairs and finally the end of the existence of the system (death). Elements of the System All the characteristics of the system are determined by the system elements, their properties and relationships. The system elements are 1. Input 5. Feedback 2. Processor 6. Boundary 3. Output 7. Environment 4. Control These elements are common to all systems. These are the elements by which all systems are described. They are set in a fixed position which helps the system analyst to design & work with system more easily. 1. Input: Inputs are the elements that enter the system for processing. It is defined as energizing or start up component on which system operates. It may be raw material, data, physical source, knowledge or any energy to decide the nature of output. 2. Processor: It is the element that involves the actual transformation of input into output. It is defined as the activity that makes possible the transformation of input to output. When data is processed through computer it is processed through logical steps. However these steps are required to be instructed in series to the computer. 3. Output: It is end result of the operation. In other words it is the purpose or the main objective for which the system is designed. Though output is largely dependent on input, its nature or format may vary vastly from the input. 4. Control: The control element guides the system. It consist of Rules and Regulations, Terms and Conditions, Laws and Results Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 2 5. Feedback: Output is compared against performance standards. : In order to improve the performance of any system feedback control mechanism can be used as a tool or device to control or modify the input of the system after analysing the output properly. 6. Boundary: A system should be defined by its limits. Every system has its limits that determine the sphere of influence & control is called as Boundary of the system. Boundary of the system may exist physically or conceptually. 7. Environment: It is the super system within which an organization operates. Everything within the circumscribed space is called system & everything outside it is environment. Flow from environment to the system is its input while a flow from system to its environment is the output. Following model represents a system with its elements which keeps the system in equilibrium. Environment Boundary In order to build any system only the knowledge of its elements does not serve the purpose, there should be fundamental clarity of some important concepts which are essential to build the efficient system & to keep it in equilibrium. The major concepts are Subsystem Interface Module Black box Subsystem: A complex system is difficult to implement when consider as a whole. However if we divide it into smaller functional units which are of manageable sizes then every small function unit becomes a subsystem. In the formation of subsystem the components performing same or similar functions are grouped. “A subsystem is simply a system within a system. “ For example 1: Automobile is a system composed of subsystems: Such as Engine system, Body system, Frame system and so on… Each of these subsystems is composed of sub-sub --systems. Engine system: carburettor system, generator system, fuel system, and so son For example 2: In a business organization system, marketing, production, sales can be considered as subsystems. Module: A collection of function or data. In other words module encapsulates related functions. Ideal module is that module which can be reused in other development projects. Interface: The interconnections & interactions among the subsystems are termed as interfaces. In fact each interface implies a communication path. Number of interfaces increase with number of subsystems. In Mathematical term Interfaces is calculate as n(n-1)/2 where n is number of subsystems Black box: Black box is the subsystems at lowest level where the inputs are defined, outputs are determined but the processor of the system is not defined means it difficult to understand how the transformation of input to output takes place. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 3 Types of the System Physical or Abstract System Physical System – These are the concrete operational systems made up of people, material, machines energy & other physical things. These are tangible entities that may be static or dynamic in operation. For example: Parts of a computer centre are the desks, chairs etc. that facilitate operation of the computer. They are static and a programmed computer is dynamic. Abstract or Conceptual System – Abstract system is an orderly arrangement of independent ideas. These are conceptual or non-physical entities. For example: Economic theory. Deterministic or Probabilistic System Deterministic System – It operates in a predictable manner and the interaction between parts is known with certainty. For example: Two molecules of hydrogen and one molecule of oxygen make water. Probabilistic System – It is a system which operates in unpredictable manner & degree of error is always possible. It shows probable behaviour. The exact output is not known or not sure. For example: weather forecasting, mail delivery. Social, Human Machine, Machine System Social System- It is made up of people. For example: social clubs, societies Human Machine System- When both human and machines are involved to perform a particular task to achieve a target. For example:- Computer. Machine System- Where human interference is neglected. All the tasks are performed by the machine. For example: Robot. Natural & Artificial system and Manufactured Systems Natural System- The system which is natural. For example: Solar system, Seasonal System. Artificial system: All man made systems are called as artificial systems. For example: Computer system. Manufactured System- System made by man is called manufactured system. For example- Rockets, Dams, and Trains etc. Permanent or Temporary System Permanent System- Which persists for long time. For example: policies of business. Temporary System- Made for specified time and after that they are dissolved. For example: setting up DJ system. Adaptive and Non Adaptive System Adaptive System- responds to change in the environment in such a way to improve their performance and to survive. For example: Human beings, animals. Non Adaptive System-The system which doesn’t respond to the environment. For example- Machines Open & Closed systems Open System –Open system is that system which interacts with its environment. It interacts across its boundaries; it receives inputs from and delivers outputs to the outside world. It must adapt to the changing demands of the user. For example: Any business organization system exchanges its material, manpower, money & information with its environment. Closed System – It is isolated from the environmental influences. A completely closed system is rare. Closed system is that system which does not interact with its environment. It has only controlled & well defined input & output. For example: Television is itself is closed system which controls its sharpness, brightness automatically with sensors. Integrated system: System integration is the combination of related subsystems to form a larger subsystem or total system. For example: Airline reservation system. Manual systems: Use paper + pencil technology Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 4 Bad Systems Fail to meet requirements Not to schedule Poor performance Not to budget Poor reliability Some problems are simply “wicked” Lack of usability problems Example difficulties: Reasons for Failure Complexity Structure partitioning of problem Shifting requirements Organized interaction of parts Bad estimation Ensure you achieve the task Bad management Systems are subject to the need for New technology continuing change Important System Concepts Decomposition The process of breaking down a system into smaller components Allows the systems analyst to: Break a system into small, manageable subsystems Focus on one area at a time Concentrate on component pertinent to one group of users Build different components at independent times Modularity Process of dividing a system into modules of a relatively uniform size Modules simplify system design Coupling Subsystems that are dependent upon each other are coupled Cohesion Extent to which a subsystem performs a single function What is an Information System? Interrelated components working together to Collect Store Process Disseminate information To support decision making, coordination, control, analysis and visualization in an organization. “A system that provides the information needed to accomplish the organization’s tasks.” It is an organized combination of Hardware, Software, Communication Network, Data & People Computer-based Information Systems (CBIS) CBIS: A system that uses computers to provide the needed information. Information system that rely on computer hardware and software for processing and disseminating information A Computer-based Information System = Hardware + Software + People + Procedures + Information Data and Information Data are raw facts about the organization and its business transactions. Most data items have little meaning and use by themselves. Alternative definition: Data are a collection of items such as words, numbers, images, and sounds that are not organized and have little meaning individually Data are raw facts about people, objects, and events in an organization Information: Data that is organized i.e. - Processed data. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 5 Data Flow and Processing Logic Data flow: Data in motion, moving from one place in a system to another. Processing logic: The steps by which data are transformed or moved. A description of the events that trigger these steps. For Example: Keyboard Data Flow & Processing logic Database A shared collection of logically related data designed to meet the information needs of multiple users in organization. Database – Files – Records -- Fields Approach to system development There are three strategies of IS development 1. Process-oriented approach An strategy to IS development that focuses on how and when data are moved through and changed by an IS 2. Data-oriented approach An strategy to IS development that focuses on the ideal organization of data rather than where and how data are used. 3. Object-oriented approach A system development methodologies and techniques base on objects rather than data or process Evolution of Information System 1950 – 1960 1960 – 1970 1970 – 1980 1980 – 1990 1990 – 2000 2000 – Present Data Management Decision Executive Knowledge E-Business Processing Reporting Support Support Management Collects, Interactive ad- Pre-specified Provide both Supports the Greater stores, hoc support reports and internal and creation, connectivity, modifies and for the displays to external organization higher level of retrieve day- decision- support information and integration to-day making business relevant to the dissemination across transactions of process decision- strategic goals of business applications an making of the knowledge organization organization Help Helps middle Helps senior Helps available Helps global Help workers managers managers Executives enterprise e-business wide Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 6 Types of Information System A Federation of Information System Front-office and Back-office Information System Front-office information systems support business functions that extend out to the organization’s customers (or constituents). Marketing Customer management Sales Back-office information systems support internal business operations of an organization, as well as reach out to suppliers (of materials, equipment, supplies, and services). Human resources Manufacturing Financial management Inventory control Information System: Management Level of an Organization. The pyramid represents different management levels of an organization. This is integrated Man-Machine system that provides information to support planning & in decision making. Information System Types 1. Transaction Processing Systems (TPS) 2. Management Information Systems (MIS) 3. Decision Support Systems (DSS) 4. Expert System and Artificial Intelligence (ES &AI) Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 7 Transaction Processing Systems (TPS) TPS are computerized information systems that were developed to process large amounts of data for routine business transaction. Automate the handling of data about business activities and transactions, which can be thought of a simple discrete event in the life of an organization. – Data about each transaction are captured, – Transactions are verified and accepted/rejected, – Validation transactions are stored for later aggregation. – Report may be produced to provide summarization of the transactions, and – Transaction may be moved from process to process in order to handle all aspects of the business activities. Management Information Systems (MIS) Information system at the management level of an organization that serves the functions of planning, controlling, and decision making by providing routine summary and exception reports. It takes the relatively raw data available through a TPS and converts them into a meaningful aggregated form that mangers need to conduct their responsibilities. Developing an MIS calls for a good understanding of what kind of information managers require and how managers use information in their jobs. Decision Support systems (DSS) Information system at the management level of an organization that combines data and sophisticated analytical models or data analysis tools to support semi-structured and unstructured decision making. DSS are designed to help organizational decision make decision. A DSS is composed of a: Database ( may be extracted from a TPS/MIS) Graphical/mathematical models for business process User interface that provides a way to communicate with DSS Expert System and Artificial Intelligence (ES & AI) Knowledge representation describes the way an expert would approach the problem. It attempts to codify and manipulate knowledge rather than information, (for example if.. Then rule) User communication with an ES via an interactive dialogue. The ES asks questions ( that an expert would ask) and the end user supplies the answers. The answers are then used to determine which rules apply and the ES provides a recommendation based on the rule. Knowledge Engineers perform knowledge acquisition; they are similar with system analyst but are trained to use different techniques. Information System in Business Information system can support 3 different levels in business Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 8 Information system Applications The global information system environment System analyst need to be aware that integrating technologies affect all type of systems. Enterprise architecture framework An enterprise architecture framework (EA framework) defines how to create and use enterprise architecture. An architecture framework provides principles and practices for creating and using the architecture description of a system. It structures architects' thinking by dividing the architecture description into domains, layers, or views, and offers models - typically matrices and diagrams - for documenting each view. This allows for making systemic design decisions on all the components of the system and making long-term decisions around new design requirements, sustainability, and support. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 9 Unit -2: Software and Software Engineering Content: Introduction to Software, Software Product, Nature and attribute of good software Software Engineering, It principles, Evaluation and Process. Introduction: Computer software has become a driving force in our life; everyone uses it either directly or indirectly. The role of computer software has undergone significant change over the last 50 years. Software affects nearly every aspect of our lives and has become unavoidable part of commerce, our culture and our everyday activities. It serves as the basis for modern scientific investigation and engineering problem solving. It drives business decision making. It is embedded in systems of all kinds: entertainment, office products, transportation, medical, telecommunications, industrial processes, etc. Software as a product delivers the computing potential embodied by computer hardware. It can be considered an information transformer producing, managing, acquiring, modifying, displaying, or transmitting data. Software provides a connection to worldwide information networks Internet and makes it possible to acquire information in all of its forms. As the importance of software grows, the software community continually attempts to develop technologies that will make it easier, faster, and less expensive to build high-quality computer programs. Some of these technologies are targeted at a specific application domain such as web-site design; others focus on a technology domain (for example object-oriented systems); there are technologies that deliver dependable software. However, we have yet to develop a software technology that does it all. The technology encompasses a process, a set of methods, and an array of tools that we call software engineering. Software engineering has been an engineering discipline, it focuses on the cost effective development of high-quality software systems. The notion of software engineering was first proposed in 1968 at a conference held to discuss what was then called the software crisis. This software crisis resulted directly from the introduction of new computer hardware based on integrated circuits. Dramatic improvements in hardware performance, profound changes in computing architectures, increases in memory and storage capacity, have all led to more complex computer-based systems. The resulting software was orders of magnitude larger and more complex than previous software systems. Due to the high demand for complex software systems the individual programmers of the earlier periods has been replaced by a team of software developers, each focusing on one part of the technology required to deliver a complex application. At large-scale systems developments, that requires extensive co-operation of developers to complete developments within a prescribed duration of time, it has become increasingly apparent that the existing development methods were not good enough to efficiently drive the development processes. Development projects were sometimes years late. The development cost was over the budget, software was unreliable, difficult to maintain and performed poorly. Hardware costs were consumedly decreased while software costs were rising rapidly. This phenomenon was recognised by software developers and they stated that the software development practice was in crisis. To solve problems it was necessary to recognize that software has become a product, and similarly to other products a technology was required to develop it. What does it means that software is a product? 1. Software has to provide services and functionalities as it specified. 2. Software has quality attributes. 3. There is a cost of its production. 4. There is a time limit for developing software. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 10 New techniques and methods were needed to control the complexity inherent in large software systems. These techniques have become part of software engineering and are now widely used. Software industry has made tremendous progress since 1960s and the development of software engineering has significantly improved the quality of software. The activities involved in software development have been much better understood. Software engineers and development organizations have developed effective methods of software specification, design and implementation. However, the large number of different types of systems and organizations that use these systems means that we need different approaches to software development. Software: Computer software is the product that software engineers design and build. A software product is composed of computer programs, data and documents. A definition of software can be given by these items as follows: 1. Software consists of computer programs that when executed provide desired function and performance. 2. It includes data structures that enable the programs to adequately manipulate information. 3. It has a documentation that describes the operation and use of the programs. There are Basic types of Software: 1. System Software: Those who run the System e.g. operating system- Windows, Linux, Unix etc. 2. Application Software: Those who run by the User for specific purpose e.g. MS-Office, Tally, AutoCAD etc. There are two fundamental types of software product: 1. Generic software: This software is produced by a development organization and sold on the open market to any customer. 2. Customized software: This software is developed especially for a particular customer by a software contractor. The main difference between these two types of software is the following. In the case of generic software products the organization that develops the software specifies the software requirements. For custom products, the specification is usually developed and controlled by the organization that is buying the software. The breadth of software applications can be indicated by the following software areas: system software, real-time software, business software, engineering and scientific software, embedded software, personal computer software, web-based software and artificial intelligence software. Nature of Software: The nature of the software medium has many consequences for systems engineering (SE) of software- intensive systems. It has famously observed that four properties of software, taken together, differentiate it from other kinds of engineering artifacts. These four properties are: 1. complexity, Complexity Changeability Nature 2. conformity, of 3. changeability, and Software Conformity Invisibility 4. Invisibility. 1. The complexity of software arises from the large number of unique interacting parts in a software system. The parts are unique because they are encapsulated as functions, subroutines, or objects, and invoked as needed rather than being replicated. Software parts have several different kinds of interactions, including serial and concurrent invocations, state transitions, data couplings, and interfaces to databases and external systems. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 11 2. Software must conform to exacting specifications in the representation of each part, in the interfaces to other internal parts, and in the connections to the environment in which it operates. A missing semicolon or other syntactic error can be detected by a compiler. But, a defect in the program logic or a timing error may be difficult to detect when encountered during operation. Lack of conformity can cause problems when an existing software component cannot be reused as planned because it does not conform to the needs of the product under development. Lack of conformity might not be discovered until late in a project, thus necessitating the development and integration of an acceptable component to replace the one that cannot be reused. This requires an unplanned allocation of resources (usually) and can delay project completion. 3. Changeability is the third factors that make software development difficult. Software coordinates the operation of physical components and provides most of the functionality in software-intensive systems. Because software is the most malleable (easily changed) element in a software-intensive system, it is the most frequently changed element. This is particularly true during the late stages of a development project and during system sustainment. However, this does not mean that software is easy to change. Complexity and the need for conformity can make changing software an extremely difficult task. Changing one part of a software system often results in undesired side effects in other parts of the system, requiring more changes before the software can operate at maximum efficiency. 4. Software is said to be invisible because it has no physical properties. While the effects of executing software on a digital computer are observable, software itself cannot be seen, tasted, smelled, touched, or heard. Our five human senses are incapable of directly sensing software; software is thus an intangible entity. Work products such as requirements specifications, design documents, source code, and object code are representations of software, but they are not the software. At the most elemental level, software resides in the magnetization and current flow in an enormous number of electronic elements within a digital device. Because software has no physical presence we use different representations, at different levels of abstraction, in an attempt to visualize the inherently invisible entity. The attributes of good software Functional quality of software reflects how well it complies with a given design, based on functional requirements or software specifications. Besides functional quality, software has a number of other associated attributes that also reflect the quality of that software. These attributes are usually called non-functional attributes. They reflect the behaviour of software while it is executing and the structure and organization of the source program. Examples of these attributes are the maintainability, reliability, efficiency, etc. The specific set of attributes expected from a software system depends on its application. Some essential quality attributes of a software system are the following: Maintainability: Maintainability is defined as the ease with which changes can be made to a software system. These changes may be necessary for the correction of faults, adaptation of the system to a meet a new requirement, addition of new functionality, removal of existing functionality or corrected when errors or deficiencies occur and can be perfected, adapted or action taken to reduce further maintenance costs. Dependability: Dependability of software includes characteristics such as availability, reliability, safety and security. Dependable software should not cause physical or economic damage in the event of system failure. Efficiency: Efficiency is the ability of the software to do the required processing on least amount of system hardware such as memory or processor cycles. Usability: Usability is the ability of a software to offer its interfaces in a user friendly and elegant way. Reusability: Reusability defines the capability for components and subsystems to be suitable for use in other applications and in other scenarios. Reusability minimizes the duplication of components and also the implementation time. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 12 Testability: Testability is a measure of how easy it is to create test criteria for the system and its components, and to execute these tests in order to determine if the criteria are met. Good testability makes it more likely that faults in a system can be isolated in a timely and effective manner. Software Engineering: Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product. Typical formal definitions of software engineering are: "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software". Let us first understand what software engineering stands for. The term is made of two words, software and engineering. Software is more than just a program code. A program is an executable code, which serves some computational purpose. Software is considered to be collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product. Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods. Definitions IEEE defines software engineering as: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in the above statement. Fritz Bauer, a German computer scientist, defines software engineering as: Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machines. Software engineering is a layered technology. Tools Methods Process A quality focus Software Engineering Practice and Principles The Essence of Practice: Understand the Problem (Communication and Analysis) Plan a Solution (Modelling and Software Design) Carry out the plan (Code Generation) Examine the result for accuracy (Testing and Quality Assurance) General Principles: The reason it all exists: (To provide value to its users) KISS (Keep It Simple, Stupid!!!) Maintain the Vision\ What you produce, others will Consume Be Open to the Future. Plan Ahead for Reuse Think Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 13 Software Evolution The process of developing a software product using software engineering principles and methods is referred to as software evolution. This includes the initial development of software and its maintenance and updates, till desired software product is developed, which satisfies the expected requirements. Evolution starts from the requirement gathering process. After which developers create a prototype of the intended software and show it to the users to get their feedback at the early stage of software product development. The users suggest changes, on which several consecutive updates and maintenance keep on changing too. This process changes to the original software, till the desired software is accomplished. Even after the user has desired software in hand, the advancing technology and the changing requirements force the software product to change accordingly. Re-creating software from scratch and to go one-on-one with requirement is not feasible. The only feasible and economical solution is to update the existing software so that it matches the latest requirements. Software Process: A process is a collection of activities, actions and tasks that are performed when some work product is to be created. A structured set of activities required to develop a software system. A software development process, also known as a software development life cycle, is a structure imposed on the development of a software product. A software process is represented as a set of work phases that is applied to design and build a software product. There is no ideal software process, and many organisations have developed their own approach to software development. Software development processes should make a maximum use of the capabilities of the people in an organisation and the specific characteristics of the systems that are being developed. There are some fundamental activities that are common to all software processes: 1. Software specification. In this activity the functionality of the software and constraints on its operation must be defined. 2. Software design and implementation. The software that meets the specification is produced. 3. Software validation. The software must be validated to ensure that it has all the functionalities what the customer needs. 4. Software evolution. The software must evolve to meet changing customer needs. A software process model is a simplified description of a software process that presents an overall view of the software process. Process models may include activities that are part of the software process, software products and the roles of people involved in software engineering. Most software process models are based on one of the next general models of software development. “A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.” A Generic process framework for software engineering encompasses five activities. i) Communication, ii) Planning, iii) Modelling, iv) Construction and v) Deployment. Figure shows Engineering Model of Software Development Process Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 14 Unit -3(A): Overview of Software Development Methodologies: SSAD Content: Introduction of Structured Systems Analysis & Design Methodology. System Analysis, Feasibility Study, Requirement Analysis, System Design, System Analyst, SDLC and Its different models. Introduction “Structured analysis is a set of techniques and graphical tools that allow the analyst to develop a new kind of system specification that is easily understandable to the user”. The structured systems analysis & design methodology (SSAD) is a framework of activities and tasks that need to be accomplished to develop an information system. This methodology as mentioned previously is called the waterfall model as each major phase of the methodology flows downward into the next phase consequently; this methodology is a strategy consisting of various techniques, tools, documentation and tasks that need to be integrated in order to develop the system. The SSAD is based on the concept of functional decomposition where the analyst breaks down the system into the basic processes that make it up and then breaks these down into smaller ones and so on until the analyst understands all the essential components of the system being investigated The basic principles of the SSAD methodology can be summarized as follows: The first principle of SSAD is top down functional decomposition. Here the system is considered in its entirety where the analyst first tries to understand the key features of the system, ignoring the smaller details until later. Next the scope of system is defined where the physical details of the existing system are analysed. The analyst focuses on two objectives: what the new system should do and how it should do it. This methodology requires that the user be involved from the beginning to the end of project development. The analyst will meet with the user regularly to resolve problems and validate the user's needs. This also requires that the analyst possess highly developed communication skills The two primary concerns in developing an information system are processes and data which are modelled independently with this methodology. The processes are modeled by the data flow diagrams which illustrate the flow of data between processes and data stores and how it is altered as it moves through the system from source to destination. Data models are defined by entity- relationship diagrams (ERD's) which describe the data (entities) and the various associations among them. This principle of independently modelling the data and processes continues throughout the design phase. The schema for the conceptual database model is defined and the database is developed, normalized and populated with data during implementation. At the same time the process model is transformed into modules to be developed, and this phase also includes developing the detailed program logic. From the structure charts and program logic the program modules are then developed. Finally, to validate that the system meets the user's requirements, goals and objectives, we subject the system to various levels of testing. System development methodology A standard process followed in an organization to conduct all the steps necessary to: Analyse Implement Design Maintain Definition of SAD: The complex organizational process whereby computer-based information systems are developed and maintained. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 15 Analysis: defining the problem - From requirements to specification Design: solving the problem - From specification to implementation Definition: System development life cycle (SDLC) SDLC is well defined process by which the system can be conceived, developed & implemented. It can be performed in two stages. Each stage involves three steps. Two phases are 1.System Analysis and 2.System Design System Analysis System analysis means identification, identification & critically examining the system & its parts(subsystem) for the purpose of achieving the goals(objective) set for the system as a whole, through modifications, changed interrelationships of components, deleting or merging & separating of components. It may involve upgrading of system as a whole. Systems analysis is a problem-solving technique that decomposes a system into its component pieces for the purpose of studying how well those component parts work and interact to accomplish their purpose, i.e. understanding and specifying in detail what an information system should do? In order to analyse the system properly it is performed in three steps, 1. Problem identification 2. Feasibility study & cost benefit analysis 3. System requirement analysis 1. Problem identification: Problem identification is the most difficult but important task in system analysis.Because, if the problem is not properly identified it may lead to wastage of time & energy in later stage. For problem identification the focus is on three aspects. i. Source (cause) of the problem ii. Type of the problem iii. Nature of the problem i. Source (cause) of the problem: The root cause of the problem may be internal or external. Sources listed in different environments Internal Environment External Environment 1) Company Management 1) Customer 2) Employs of different department 2) Consultancy services 3) Internal auditors 3) External auditors 4) Financial services 4) Government policies ii. Types of the problem: The normally encountered problems in the system are related to the i. Reliability of the system. v. Timeliness ii. Validity vi. Capacity iii. Accuracy vii. Throughput iv. Economy Reliability: This problem arises, if for the same procedures the system gives different results or it may not work properly all the time. Validity: Reports show misleading information or results. Accuracy: Reports display many errors. Economy: The system is costly to maintain. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 16 Timeliness: Reports are late or queries are not answered in time. Capacity: Inadequate processing, transmission or storing capacity. Throughput: Exactly contradictory problem of capacity means more capacity is available but less work is being done, which affects the efficiency in other way. iii. Nature of problem: Some questions must be posed to find out the exact nature of the problem such as, i. What is the actual problem? ii. How complex it is? iii. What are the causes of the problem? iv. What are the likely solutions? v. Once the problem is solved what type of benefit is expected? Answers to all these questions provide the exact nature of the problem. Once the exact nature of the problem with its cases & type is identified, the possible opportunities or solutions are checked and here the feasibility study starts. Feasibility study Feasibility study is useful to evaluate the cost & benefits of the system requested. There are three major aspects of feasibility study. a. Technical feasibility: It focuses on the existing computer hardware, software & personnel. The need of these three factors is verified & procurement or installation is done accordingly. b. Economic feasibility: It considers cost & benefit analysis of the proposed system. If the benefit overweighs the cost then only project is approved. The economic feasibility helps to find out development cost. Development cost can be categorized under two heads. i) Onetime cost such as Investigation or survey cost, Cost of converting present system to new one ii) Recurring cost such as Salaries of personnel, Training of staff, equipment maintenance c. Operational or Behavioural feasibility: It considers the acceptability of the system. It checks pre & post implementation procedures & thereby tries to find out the troubleshooting areas of the system. If any business is to be computerized then proposed system requires efforts to i) Convince the user of the system for the acceptance ii) Educate the staff means to give knowledge of the system iii) Train the staff’s means to provide all the skill set for the required system. Requirement Analysis Requirement analysis is basically determination of requirements for new system. Determination of requirements means studying the existing system & collecting the details about it to find out the users requirement first. Requirement analysis can be done with the help of three activities, 1. Identification of basic requirements 2. Investigation of basic requirements 3. Specification of basic requirements 1. Identification of basic requirements: In order to identify the basic requirements it is necessary to find out how the system works & where the improvement is required. This can be done by imposing major questions such as i. What are the problems in existing system? ii. What users expect from proposed system? Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 17 iii. What are the various process involved related with the problem? iv. What data is used & produced during the process? v. Which controls are used currently? 2. Investigation of requirements: to uses fact finding methods such as i. Interview iv. Record review ii. Questionnaire v. Brainstorming iii. Observations vi. Desk research These fact finding techniques are used for gathering information about the system. This activity is very important and documentation description of features of the system is also done for future analysis. Requirements are documented & presented using special tools like system flow charts, data flow diagrams and presentation graphics which in turn helps the designer to design the system. 3. Specification of requirements: Requirement specification is a deal between developer & end user. The data collected from end-user is not always sufficient. So it has to be analysed to verify whether it meets the organization’s demands or not. Sometimes user may specify additional features that should be included in new system. This process of requirement specification is done by identifying i. Data used in various activities ii. Different controls needed in system iii. User’s transactional requirements iv. User’s decisional requirements v. User’s organization dependent requirements System Design System analysis defines ‘What is to be done, and system Design defines ‘How it is to be done’ System design is the most challenging and creative phase of SDLC. System analysis is the fundamental process of the system development life cycle while design is the concluding phase of SDLC. System Design Chart - Steps in System Design: Systems design (also called systems synthesis) is a complementary problem-solving technique (to systems analysis) that reassembles a system’s component pieces back into a complete system hopefully, an improved system. This may involves adding, deleting, and changing pieces relative to the original system i.e. specifying in detail how the parts of an information system should be implemented? System design processes through following three steps, System design specification and programming System testing, implementation & follow-up System maintenance &Evaluation of the system. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 18 System Design Specification: System design has to focus on four important aspects 1. Architecture design 3. Database design 2. Interface design 4. Program design 1. Architecture design: Architecture design focuses on the basic infrastructure hardware, software & networking infrastructures that the system will use. 2. Interface design: Interface design specifies how the user will move through the system. It means the navigation methods such as menu, forms, and reports. 3. Database design: The database & file design defines what data will be stored & where it will be stored. 4. Program design: Program design defines the programs that are required to be written & exactly what is program will do. The collection of derivable such architecture design, interface design program design and file design is the system specification. Program Specification (Coding): Once the design is completed it must be translated into machine language. Proper choice of software is made on the basis of i. Clearly outlined software specification provided by designer. ii. Need & cost of the software, availability of programmers. The basic activities involved in this phase are i. Checking of program specification ii. Expanding (detailing) of specification. iii. Breaking the system modules into smaller programs. iv. Allocating these programs to the respective team members of the development team v. Writing codes in selected software language. vi. Documentation of each program. Testing: Basic objective of testing is to find the errors. Testing gives the guarantee that the software does not fail & it will run according to the specification and in the way the user expects it. 1. The basic activities involved in testing are testing individual program, its logic and interfaces among the various programs. 2. Running on specific data so as to check quality of code and thereby establishes the standards. 3. To check accuracy of desired result. Implementation: Once the system is tested it is ready for implementation. Implementation includes following activities. i. Planning the implementation schedule. ii. Procurement of hardware. iii. Installation of software. iv. Recruitment of operating personnel. v. Motivation and training to the personnel. vi. Educating user through meetings & seminars. vii. Conversion of data files from old one to new one. viii. After final change over gradually phasing out of the old system. Follow-up: There is need to have personnel to look after the system during operation and production which we call as follow-up. Maintenance: After new system has been Implemented problems and errors appear as no system can be considered as full proof. This requires system maintenance which is on-going process. Normally hardware and software venders look after their products. Since documentation helps in maintenance, documents maintenance is the demanding task of system analyst. Maintenance ‘tail end ‘of the life cycle but it is the most expensive as it consumes energy, cost time in long run which can be made clear by the graph. When system maintenance becomes more costly and time demanding it leads the urge (birth) of new system. Here SDLC gets completed. Types of maintenance: Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 19 1. Corrective maintenance: It has to do with the diagnosis and the removal of residual errors in the system when it is delivered (means immediate problems till operational set up) as well as the intentionally introduced errors in software during maintenance. 2. Adaptive Maintenance: It is concerned with adjustment of the application with the environment.For example: newly introduced hardware or operating system. 3. Perfective maintenance: It involves changing the software to improve some of its qualities. For example: To add more features related to usability of software such as user friendliness etc. Evaluation of the System: Evaluation is done to estimate the weakness and strength of the system. a) Development evaluation: This decides whether the system is developed on time and within the budget. b) Technical evaluation: It includes assessment of development methods & tools. c) Operational evaluation: It focuses on 1) Response time for getting results, 2) Ease to use, 3) Reliability of process, 4) Adequacy of storage capacity 5) Assessment of user’s attitudes. Views of Systems Analysis How to build information systems How to analysis information system needs How to design computer based information systems How to solve systems problems in organizations Why System Analysis is important? 1. It helps to understand complex structures. 2. It specifies functional requirements of the subsystems to the total system. 3. It helps in understanding & comparing functional impacts of subsystem to the total system. 4. It provides inter-compatibility & unity of purpose of subsystems 5. Finally it helps in placing each subsystem in its proper perspective (place) so that system as a whole can effectively achieve the central objective with minimum resources. Advantages: System Analysis 1. It helps in setting proper system goals 2. Determines the boundary of the project by giving due consideration to the limitations of the available resources. 3. It focuses on the boundary and scope of the project undertaken. 4. Also checks limitations of available resources. Systems Analysts The system analyst is the key person who is brain of the system development life cycle who acts as interface between user (client) and the organization. System analyst is not a mere programmer of the system but more like a manager who a. Determines the design of the overall system b. Obtains the necessary technical help from programmers, specialist and equipment engineers. c. Follows the system through design, implementation and evaluation. Systems analysts are the key individuals in the systems development process. A systems analyst studies the problems and needs of an organization to determine how people, data, processes, communications, and information technology can best accomplish improvements for the business. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 20 Multifunctional Role of System Analyst System analyst is a multitasking personality. He has to perform different roles at different stages of the system development. His task can be divided into five important areas of efforts where he has to do various roles. 1. Problem identification: System analyst is the middle man between end user and the development team. So he has to communicate between the two ends as well as to understand customer’s needs, identify the exact nature of the problem. Then he discusses it with the development team in order to have different solution alternatives. 2. Evaluation & synthesis: After having various alternatives from the development team a good analyst should be able to evaluate the solution on the basis of cost, time and technology which is called as feasibility test. 3. Modelling: Once a proper choice of the alternatives is done by end user a model or prototype is prepared by system analyst with the help of development.Good logical and analytical mind helps him to understand the information contents of the data, functional processing, and behavioural operations and control flow of the system in order to model the system. 4. Verification of the model: The system analyst evaluates the length of the model with respect to cost & time required for the implementation of the system and these parameters are checked with the customer & then testing details are sent to the development team. Once the model is accepted by the user, the development team sends the tested system to the analyst for verification of the result. 5. Modification: Then the system is sent to the user for acceptance. Many times it happens that at the beginning the user is not very clear about all of his needs. So after acceptance of the system when the user starts working on it he requests the analyst for the modifications. Thus the main objective of a system analyst is to provide right type of information at right time in right quality and right quantity in right way and right cost to the management and the client. Multifaceted Role In order to perform all these tasks at every functional level of system development system analyst has to perform many roles such as 1. An architect: An analyst is creator of physical design of the system as per user requirements. He formulates the abstract ideas of user into detailed format of the system which in turn helps the development team to build the end product. So he is the brilliant architect of the system. 2. An agent of change: System analyst works towards the future which is uncertain. The only thing which is permanent is the change. So analyst has to prepare model in this changing environment. The strong hurdle is the resistance of the user. So system analyst has to secure user’s acceptance through the participation from designing till implementation phase of the system. Since an analyst is responsible for bringing the change in system, he is an agent of the change. 3. Investigator & monitor: An analyst should have fair capacity to investigate the problem. He should be able to go to the root cause of the problem. In other words he should have digging attitude to uncover the problematic trends that have direct impact on an organization. Monitor: In order to complete the task the analyst must have leading capacity, technical skills and project management capacity so that, right from understanding the information contents of data till functional processing and behavioural operations, he can control the flow of the system and thereby monitor the system as a ‘whole’. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 21 4. An organizer: Analyst should have clear idea of all the activities of the system rather he should be able to put all the activities in sequence & clear about their purpose and the consequences. He is responsible for execution of the activities and hence the result. He himself is an evaluator of the system. 5. Motivator & psychologist: System acceptance is achieved through user participation right from the beginning that is from designing phase to implementation stage. This can be made possible by effective training & proper motivation to use the system. Physiologist: Good motivator has to be good physiologist because he has to reach people, understand the client’s environment, dig out the exact nature of the problem, and interpret it correctly to the developer team, asses the behaviour draw the conclusion. Skills Required By System Analyst In order to fulfil the responsibilities an analyst must have- Abroad & flexible outlook, An orderly mind, Disciplined approach & logical neatness, Ability to express thoughts, ideas & proposals clearly both orally & in writing. The skill sets required by system analyst can be observed under two categories, 1. Interpersonal Skills 2. Technical Skills 1. Interpersonal Skills: i) Initiative & good communication skill: Since analyst has to gather maximum information in less time, he should have initiative attitude to ask detailed queries and should have good communication skill so as to interact with managerial level people as well as team members & end users. ii) Well understanding capacity: Analyst should be able to identify the exact problem of customer and should have fair understanding of organization structure, system techniques, policies & control. iii) Teaching: For providing perfect solutions of a problem an analyst must have ability to train the development team members. Also must be able to train users of the system to operate the system efficiently. iv) Motivation: By active participation & moral building techniques analyst must motivate the users as well as development team members to give effective results. 2. Technical Skills: i) Creativity: Analyst must have ability to give innovative ideas in designing system, screen reports. ii) Logical reasoning: Analyst must move forward towards the problem logically and should solve it using computer system.For that he should have fair knowledge of data processing, computer operations and programming languages. iii) Project management: Analyst must be aware of various management techniques. He should design the system, develop the system with proper modification (such as by updating or deletion of existing subsystem or procedure) and thereby prepare planning and controlling policies and procedures, also should be able to implement the system within time limit. iv) Computing: Analyst should have working knowledge of equipment’s used in the system. He should be conversant with the information regarding various computer systems available in market, their cost benefits versatility. v) Knowledge of fact finding methods: System analyst must be aware of fact finding methods and capable of proper use of them, to gather the required information from the customer. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 22 The analyst is responsible for: – The efficient capture of data from its business source, – The flow of that data to the computer, – The processing and storage of that data by the computer, and – The flow of useful and timely information back to the business and its people Other Skills Required by Systems Analysts – Working knowledge of information – Interpersonal communication skills technology – Interpersonal relations skills – Computer programming experience and – Flexibility and adaptability expertise – Character and ethics – General business knowledge – Systems analysis and design skills – Problem-solving skills Basic System Development Life Cycle There are two closely related yet independent concepts. The first important concept is that there are two types of Systems Development Life Cycle approaches, a predictive approach and an adaptive approach. The second important concept is that there are two types of development methodologies a structured approach and an object-oriented approach. These are two separate concepts. Projects can be any mix of these two approaches, the approach to the life cycle and the approach to the methodology predictive with structured, predictive with object oriented, adaptive with structured, or adaptive with object oriented. The predictive approach to the SDLC is used for projects that are well understood and low risk. The adaptive approach to the SDLC is used for projects that are not well understood and are higher risk. Adaptive SDLCs are more iterative and allow the project team to adapt the project to changing circumstances. Predictive approach to the SDLC –an approach that assumes the project can be planned in advance and that the new information system can be developed according to the plan Adaptive approach to the SDLC –an approach that assumes the project must be more flexible and adapt to changing needs as the project progresses Phases –related groups of development activities, such as planning, analysis, design, implementation, and support Traditional Predictive Approaches to the SDLC In every project there must be activities associated with project initiation, planning, analysis, design, implementation, and deployment. Each of these sets of activities are called a phase. There is another phase, called support, which consists of those on-going activities to maintain the system once it is in production. This text teaches the basic concepts associated with the initiation, planning, analysis, design, implementation, and the deployment phases of an SDLC. The following list identifies the objective of each of the six phases: Initiation –activities to get the project identified, approved, and budgeted Planning –activities to scope the project, plan and schedule the work, and identify the required resources Analysis –activities to understand the user requirements Design –activities to define and structure the solution system Implementation –programming activities and other activities to build the solution and database Deployment –activities associated with data conversion, final testing, and putting the system into production Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 23 Software Process is a set of activities whose goal is the development or evolution of software. The systems development life cycle (SDLC), also referred to as the application development life- cycle, is a term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system. The software development life cycle (SDLC) is a framework defining tasks performed at each step in the software development process. SDLC is a structure followed by a development team within the software organization. It consists of a detailed plan describing how to develop, maintain and replace specific software. SDLC is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process. The figure shows a graphical representation of the various stages of a typical SDLC. A typical Software Development Life Cycle consists of the following stages − Stage 1: Planning and Requirement Analysis Requirement analysis is the most important and fundamental stage in SDLC. It is performed by the senior members of the team with inputs from the customer, the sales department, market surveys and domain experts in the industry. This information is then used to plan the basic project approach and to conduct product feasibility study in the economical, operational and technical areas. Planning for the quality assurance requirements and identification of the risks associated with the project is also done in the planning stage. The outcome of the technical feasibility study is to define the various technical approaches that can be followed to implement the project successfully with minimum risks. Stage 2: Defining Requirements Once the requirement analysis is done the next step is to clearly define and document the product requirements and get them approved from the customer or the market analysts. This is done through an SRS (Software Requirement Specification) document which consists of all the product requirements to be designed and developed during the project life cycle. Stage 3: Designing the Product Architecture SRS is the reference for product architects to come out with the best architecture for the product to be developed. Based on the requirements specified in SRS, usually more than one design approach for the product architecture is proposed and documented in a DDS - Design Document Specification. This DDS is reviewed by all the important stakeholders and based on various parameters as risk assessment, product robustness, design modularity, budget and time constraints, the best design approach is selected for the product. A design approach clearly defines all the architectural modules of the product along with its communication and data flow representation with the external and third party modules (if any). The internal design of all the modules of the proposed architecture should be clearly defined with the minutes of the details in DDS. Stage 4: Building or Developing the Product In this stage of SDLC the actual development starts and the product is built. The programming code is generated as per DDS during this stage. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle. Developers must follow the coding guidelines defined by their organization and programming tools like compilers, interpreters, debuggers, etc. are used to generate the code. Different high level programming languages such as C, Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 24 C++, Pascal, Java and PHP are used for coding. The programming language is chosen with respect to the type of software being developed. Stage 5: Testing the Product This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are mostly involved in all the stages of SDLC. However, this stage refers to the testing only stage of the product where product defects are reported, tracked, fixed and retested, until the product reaches the quality standards defined in the SRS. Stage 6: Deployment in the Market and Maintenance Once the product is tested and ready to be deployed it is released formally in the appropriate market. Sometimes product deployment happens in stages as per the business strategy of that organization. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing). Then based on the feedback, the product may be released as it is or with suggested enhancements in the targeting market segment. After the product is released in the market, its maintenance is done for the existing customer base. General SDLC consists of following activities: 1. Planning: The most important parts of software development, requirement gathering or requirement analysis are usually done by the most skilled and experienced software engineers in the organization. After the requirements are gathered from the client, a scope document is created in which the scope of the project is determined and documented. 2. Implementation: The software engineers start writing the code according to the client's requirements. 3. Testing: This is the process of finding defects or bugs in the created software. 4. Documentation: Every step in the project is documented for future reference and for the improvement of the software in the development process. The design documentation may include writing the application programming interface (API). 5. Deployment and maintenance: The software is deployed after it has been approved for release. 6. Maintaining: Software maintenance is done for future reference. Software improvement and new requirements (change requests) can take longer than the time needed to create the initial development of the software. Umbrella Activities: Software Project Tracking and Control, Risk Management, Software Quality Assurance, Technical Reviews, Measurements, Software Configuration Management, Reusability Management, Work Product preparation and Production. Fig.- Business Mode for Software Development Process There are several software development models followed by various organizations: V-Shaped Model: This model focuses on the execution of processes in a sequential manner, similar to the waterfall model but with more importance placed on testing. Testing procedures are written even before the commencement of writing code. A system plan is generated before starting the development phase. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 25 Incremental Model: This life cycle model involves multiple development cycles. The cycles are divided up into smaller iterations. These iterations can be easily managed and go through a set of phases including requirements, design, implementation and testing. A working version of the software is produced during the first iteration, so working software is created early in the development process. Different approaches of SDLC 1. Generic Processes Model: Generic processes are processes that are designed to run outside normal component or application processing. Generic processes are not specific to a particular component and can be used in any number of applications. Generic Software processes: “A set of activities whose goal is the development or evolution of software” Generic activities in all software processes are: Specification —Specification —Development Evolution Development —Validation —Evolution Validation Specification-what the system should do and its development constraints. o Define what the system should do to satisfy the needs of the customer(requirements) o Requirements are in customer terms. o Customers can vary significantly. For Custom Software: End users, managers,... For Generic Software: User groups, your company’s customer support, marketing and sales people,... o Requirement Engineers’ job: we need to make sure the customers understand and are sure of what they want (no technical software terms): Analyse the Requirements. Review analysis with customers. Problem Definition Specification Specifications: What, not HOW! Development-production of the software system. o High-Level Design: Analyse the specifications and requirements and break the system into a set of components. o Detailed Design: Keep decomposing the system. Data structures Public interfaces and object relationships o Implementation: Individual pieces of the software are coded based on the detailed design. Every small piece is then tested to make sure that it satisfies the specifications and design. As chunks of tested code are completed they are integrated together and the integrated partial system is tested to make sure that all of the chunks are working well together. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 26 Validation-checking that the software is what the customer wants. o Validation Did we build the right system? Generally requires user judgment to make sure that the requirements, specification, and system are actually what they want Does it meet their needs? Usually a customer is directly or indirectly involved with Validation. o Verification Did we build the system right? Tests our system to make sure that it satisfies the specifications. Evolution-changing the software in response to changing demands. This starts as soon as you have delivered the software to the users (sometimes after Alpha or Beta release of the software) and includes such things as: Fixing latent defects Bugs that were not discovered while doing our testing. Adding new functionality Enhancements Changing existing functionality Porting to new or updated computing platforms: Operating systems, hardware, user languages (Internationalization), etc. Perfective Maintenance: making the system more maintainable, testable, faster,... Generic activities may be organized in different ways and described in different levels of detail for different types of software. There are five generic process framework activities: i. Communication: The software development starts with the communication between customer and developer. ii. Planning: It consists of complete estimation, scheduling for project development and tracking. iii. Modelling: Modelling consists of complete requirement analysis and the design of the project like algorithm, flowchart etc. The algorithm is the step-by-step solution of the problem and the flow chart shows a complete flow diagram of a program. iv. Construction: Construction consists of code generation and the testing part. Coding part implements the design details using an appropriate programming language. Testing is to check whether the flow of coding is correct or not. Testing also check that the program provides desired output. v. Deployment: Deployment step consists of delivering the product to the customer and take feedback from them. If the customer wants some corrections or demands for the additional capabilities, then the change is required for improvement in the quality of the software. 2. The Waterfall Model: Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 27 The sequential phases in Waterfall model are − Requirement Gathering and analysis − All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document. System Design − The requirement specifications from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture. Implementation − With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing. Integration and Testing − All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures. Deployment of system − Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market. Maintenance − There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment. All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like a waterfall) through the phases. The next phase is started only after the defined set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap. Waterfall Model - Application Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are − Requirements are very well documented, clear and fixed. Product definition is stable. Technology is understood and is not dynamic. There are no ambiguous requirements. Ample resources with required expertise are available to support the product. The project is short. The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle model'. In this model, each phase is fully completed before the beginning of the next phase. This model is used for the small projects. In this model, feedback is taken after each phase to ensure that the project is on the right path. Testing part starts only after the development is complete. NOTE: The description of the phases of the waterfall model is same as that of the process model. An alternative design for 'linear sequential model' is as follows: Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 28 Advantages of waterfall model: The advantages of waterfall development are that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one. Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in strict order. The waterfall model is simple and easy to understand, implement, and use. All the requirements are known at the beginning of the project; hence it is easy to manage. It avoids overlapping of phases because each phase is completed at once. This model works for small projects because the requirements are understood very well. This model is preferred for those projects where the quality is more important as compared to the cost of the project. Clearly defined stages. Well understood milestones. Easy to arrange tasks. Process and results are well documented. Disadvantages of the waterfall model: The disadvantage of waterfall development is that it does not allow much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage. This model is not good for complex and object oriented projects. It is a poor model for long projects. The problems with this model are uncovered, until the software testing. The amount of risk is high. No working software is produced until late during the life cycle. High amounts of risk and uncertainty. Not a good model for complex and object-oriented projects. Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model. It is difficult to measure progress within stages. Cannot accommodate changing requirements. Adjusting scope during the life cycle can end a project. Integration is done as a "big-bang. at the very end, which doesn't allow identifying any technological or business bottleneck or challenges early 3. Spiral Model: The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of iterative development process model and sequential linear development model i.e. the waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental refinement through each iteration around the spiral. The spiral model has four phases. A software project repeatedly passes through these phases in iterations called Spirals. The spiral model of the software process represents the software process as a sequence of activities with some backtracking from one activity to another; the process is represented as a spiral. Each loop in the spiral represents a phase of the software process. Thus, the innermost loop might be concerned with system feasibility, the next loop with requirements definition, the next loop with system design and so on. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 29 Each loop in the spiral is split into four sectors: i. Objective setting. Specific objectives for that phase of the project are defined. Constraints on the process and the product are identified and a detailed management plan is drawn up. Project risks are identified. Alternative strategies, depending on these risks, may be planned. ii. Risk assessment and reduction. For each of the identified project risks, a detailed analysis is carried out. Steps are taken to reduce the risk. iii. Development and validation. After risk evaluation, a development model for the system is chosen. iv. Planning. The project is reviewed and a decision made whether to continue with a further loop of the spiral. If it is decided to continue, plans are drawn up for the next phase of the project. The main difference between the spiral model and other software process models is the explicit recognition and handling of risk in the spiral model. Spiral Model Application: The Spiral Model is widely used in the software industry as it is in sync with the natural development process of any product, i.e. learning with maturity which involves minimum risk for the customer as well as the development firms. The following pointers explain the typical uses of a Spiral Model − When there is a budget constraint and risk evaluation is important. For medium to high-risk projects. Long-term project commitment because of potential changes to economic priorities as the requirements change with time. Customer is not sure of their requirements which are usually the case. Requirements are complex and need evaluation to get clarity. New product line which should be released in phases to get enough customer feedback. Significant changes are expected in the product during the development cycle. The advantages of the Spiral SDLC Model are as follows − Changing requirements can be accommodated. Allows extensive use of prototypes. Requirements can be captured more accurately. Users see the system early. Development can be divided into smaller parts and the risky parts can be developed earlier which helps in better risk management. The disadvantages of the Spiral SDLC Model are as follows − Management is more complex. End of the project may not be known early. Not suitable for small or low risk projects and could be expensive for small projects. Process is complex Spiral may go on indefinitely. Large number of intermediate stages requires excessive documentation. Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 30 4. Prototyping Model: The Software Prototyping refers to building software application prototypes which displays the functionality of the product under development, but may not actually hold the exact logic of the original software. Software prototyping is becoming very popular as a software development model, as it enables to understand customer requirements at an early stage of development. It helps get valuable feedback from the customer and helps software designers and developers understand about what exactly is expected from the product under development. What is Software Prototyping? Prototype is a working model of software with some limited functionality. The prototype does not always hold the exact logic used in the actual software application and is an extra effort to be considered under effort estimation. Prototyping is used to allow the users evaluate developer proposals and try them out before implementation. It also helps understand the requirements which are user specific and may not have been considered by the developer during product design. The basic idea in Prototype model is that instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements. This prototype is developed based on the currently known requirements. Prototype model is a software development model. By using this prototype, the client can get an “actual feel” of the system, since the interactions with prototype can enable the client to better understand the requirements of the desired system. Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determining the requirements. The prototypes are usually not complete systems and many of the details are not built in the prototype. The goal is to provide a system with overall functionality. Advantages of Prototype model: Users are actively involved in the development Since in this methodology a working model of the system is provided, the users get a better understanding of the system being developed. Errors can be detected much earlier. Quicker user feedback is available leading to better solutions. Missing functionality can be identified easily Software Engineering with UML………by Dr. DEEPAK V. NANDRE, IMRT-Nashik Page 31 Confusing or difficult functions can be identified Requirements validation, Quick implementation of, incomplete, but functional, application. Disadvantages of Prototype model: Leads to implementing and then repairing way of building systems. Practically, this methodology may increase the complexity of the system as scope of the system may expand beyond original plans. Incomplete application may cause application not to be used as the full system was designed Incomplete or inadequate problem analysis. When to use Prototype model: Prototype model should be used when the desired system needs to have a lot of interaction with the end users. Typically, online systems, web interfaces have a very high amount of interaction with end users, are best suited for Prototype model. It might take a while for a system to be built that allows ease of use and needs minimal training for the end user. Prototyping ensures that the end users constantly work with the system and provide a feedback which is incorporated in the prototype to result in a useable system. They are excellent for designing good human computer interface systems. 5. RAD RAD model is Rapid Application Development model. It is a type of incremental model. In RAD model the components or functions are developed in parallel as if they were mini projects. The developments are time boxed, delivered and then assembled into a working prototype. This can quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements. The phases in the rapid application development (RAD) model are: Business modelling: The information flow is identified between various business functions. Data modelling: Information gathered from business modelling is used to define data objects that are needed for the business. Process modelling: Data objects defined in data modelling are converted to achieve the business information flow to achieve some specific business objective. Description are identified and created for CRUD of data objects. Applicati