CSC 321: SYSTEM ANALYSIS & DESIGN SYSTEM The term “system” originates from the Greek term systēma, which means to “place together”. System An integrated set of interoperable elements, each with explicitly specified and bounded capabilities, working synergistically to perform value-added processing to enable a User to satisfy mission oriented operational needs in a prescribed operating environment with a specified outcome and probability of success. Systems are created to solve problems. One can think of the system Systems are created to solve problems. One can think of the systems approach as an organized way of dealing with a problem. In this dynamic world, the subject System Analysis and Design (SAD), mainly deals with the software development activities. Basically there are three major components in every system: input, processing and output. In a system the different components are connected with each other and they are interdepen dent. Figure1: System components In a system the different components are connected with each other and they are interdependent. For example, the human body represents a complete natural system. We are also bound by many national systems such as political system, economic system educational system etc. The objective of the system demands that some output is produced as a result of processing the suitable inputs. 1 SYSTEM ANALYSIS AND SYSTEM DESIGN System Analysis is the study of a business problem domain to recommend improvements and specify the business requirements for the solution. System Design is the specification or construction of a technical, computer-based solution fo r the business requirements identified in a system analysis. STAKEHOLDERS IN SYSTEM DEVELOPMENT System Owners: are the information system's sponsors and chief advocates. They are usually responsible for funding the project to develop, operate, and maintain the information system. System Users: are the people who use or are affected by the information system on a regular basis capturing, validating, entering, responding to, storing, and exchanging data and information. A common synonym is client. System Designers: translate system users' business requirements and constraints into a technical solutions. They design the computer files, databases, inputs, outputs, screens, net works and programs that will meet the system users' requirements. System Builders: construct the information system components based on the design specific ations from the system designer. In many cases, the system designer and builder for a component are one and the same. Systems Analyst: facilitates the development of information systems and computer applications. 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. 2 SYSTEMS ANALYST The system analyst is a person who is thoroughly aware of the system and guides the system development project by giving proper directions. He is an expert having technical and interpersonal skills to carry out development tasks required at each phase. He pursues to match the objectives of information system with the organization goal. REQUIRED SKILLS OF THE SYSTEMS ANALYST Systems analysts need a great variety of special skills, like technical knowledge and skills, business knowledge and skills, people knowledge and skills, integrity skills and ethics etc. 1. Technical Knowledge and Skills A systems analyst should understand the fundamentals about: ● Computers and how they work. ●Devices that interact with computers, including input devices, storage devices and output devices. ●Communications networks that connect computers. ● Databases and database management systems. ● Programming languages. ● Operating systems and utilities. A systems analyst also need to know a lot about tools and techniques for developing systems like: ●Software packages such as Microsoft Access and LibreOffice Base that can be used to develop systems. ●Integrated development environments (IDEs) for specific programming languages, such as Netbeans, Eclipse and MS Visual Studio .NET. 3 Computer-aided system engineering (CASE) tools that store information about system specifications created by analysts and sometimes generate program code, such as GNU Ferret. ●Program code generators, testing tools, configuration management tools, software library management tools, documentation support tools, project management tools and so on. 2. Business Knowledge and Skills What business functions do organizations perform? How are organizations structured? How are organizations managed? What type of work goes on in organizations for example, finance, manufacturing,.marketing, customer service and so on? 3. People Knowledge and Skills Because analysts usually work on development teams with other employees, systems analysts need to understand a lot about people skills. It is critical that the analyst understand how people: ● Think. ● Learn. ● React to change. ● Communicate. ● Work (in a variety of jobs and levels). 4. Integrity Skills and Ethics A systems analyst is asked to look into problems that involve information in many different parts of organization. The analyst must have the integrity to keep private information, such as health, salary and job performance. They are expected to uphold the highest ethical standards when it comes to private proprietary information they might encounter on the job. 4 INFORMATION SYSTEMS DEVELOPMENT (ISD) Information systems development is the process (activity) whereby a work activity or a larger organizational setting is facilitated by introducing a new socio-technical information system or modifying or expanding an existing one. ISD includes sub-activities of analysis, design, development, implementation, and evaluation. Depending on the viewpoint, it can be seen as a software engineering process of a software producer, an application acquisition process of a software user, or a works development process. Information systems development is seen as first a social process, though it will contain technical aspects. Early computer applications were implemented without an explicit information systems development methodology. The emphasis of computer applications development was on programming, with systems developers technically trained hut rarely good communicators nor were they systems analysts. The needs of the users were rarely well established with the consequence that the design was frequently inappropriate to the application. The dominant 'methodology' was rule-of-thumb and experience. This led to poor control and management of the project. Most emphasis was placed on maintaining present systems to get them right rather than developing new ones. Management were not getting value for money, and there was a growing appreciation of the potential role of the systems analyst and the need for a methodology to develop information systems. Below is a review of different methodologies for software development. System Development Lifecycle (SDLC) A System development life cycle (SDLC) is a process by which systems analysts, software engineers, programmers, and end users build information systems and computer applications. SDLC methodology was first developed in the 1960s to manage the large software projects associated with corporate systems running on mainframes. It is a very structured and riskaverse methodology designed to manage large projects that included multiple programmers and systems that would have a large impact on the organization. 5 Systems-development life cycle (SDLC)/ waterfall model Various definitions of the SDLC methodology exist, but most contain the following phases. 1. Preliminary Analysis. In this phase, a review is done of the request. Is creating a solution possible? What alternatives exist? What is currently being done about it? Is this project a good/ fit for our organization? A key part of this step is a feasibility analysis, which includes an analysis of the technical feasibility (is it possible to create this?), the economic feasibility (can we afford to do this?), and the legal feasibility (are we allowed to do this?). This step is important in determining if the project should even get started. 2. System Analysis. In this phase, one or more system analysts work with different stakeholder groups to determine the specific requirements for the new system. No programming is done in this step. Instead, procedures are documented, key players are interviewed, and data requirements are developed in order to get an overall picture of exactly what the system is supposed to do. The result of this phase is a system-requirements document. 3. System Design. In this phase, a designer takes the system-requirements document created in the previous phase and develops the specific technical details required for the system. It is in this phase that the 6 business requirements are translated into specific technical requirements. The design for the user interface, database, data inputs and outputs, and reporting are developed here. The result of this phase is a system-design document. This document will have everything a programmer will need to actually create the system. 4. Programming. The code finally gets written in the programming phase. Using the system-design document as a guide, a programmer (or team of programmers) develop the program. The result of this phase is an initial working program that meets the requirements laid out in the system-analysis phase and the design developed in the system-design phase. 5. Testing. In the testing phase, the software program developed in the previous phase is put through a series of structured tests. The first is a unit test, which tests individual parts of the code for errors or bugs. Next is a system test, where the different components of the system are tested to ensure that they work together properly. Finally, the user-acceptance test allows those that will be using the software to test the system to ensure that it meets their standards. Any bugs, errors, or problems found during testing are addressed and then tested again. 6. Implementation. Once the new system is developed and tested, it has to be implemented in the organization. This phase includes training the users, providing documentation, and conversion from any previous system to the new system. Implementation can take many forms, depending on the type of system, the number and type of users, and how urgent it is that the system become operational. These different forms of implementation are covered later in the chapter. 7. Maintenance. This final phase takes place once the implementation phase is complete. In this phase, the system has a structured support process in place: reported bugs are fixed and requests for new features are evaluated and implemented; system updates and backups are performed on a regular basis. The SDLC methodology is sometimes referred to as the waterfall methodology to represent how each step is a separate part of the process; only when one step is completed can another 7 step begin. After each step, an organization must decide whether to move to the next step or not. This methodology has been criticized for being quite rigid. For example, changes to the requirements are not allowed once the process has begun. No software is available until after the programming phase. SDLC was developed for large, structured projects. Projects using SDLC can sometimes take months or years to complete. Because of its inflexibility and the availability of new programming techniques and tools, many other software-development methodologies have been developed. Many of these retain some of the underlying concepts of SDLC but are not as rigid. Rapid Application Development Rapid application development (RAD) is a software-development (or systems-development) methodology that focuses on quickly building a working model of the software, getting feedback from users, and then using that feedback to update the working model. After several iterations of development, a final version is developed and implemented. The RAD methodology consists of four phases: 1. Requirements Planning. This phase is similar to the preliminary-analysis, system-analysis, and design phases of the SDLC. In this phase, the overall requirements for the system are defined, a team is identified, and feasibility is determined. 8 2. User Design. In this phase, representatives of the users work with the system analysts, designers, and programmers to interactively create the design of the system. One technique for working with all of these various stakeholders is the so-called JAD session. JAD is an acronym for joint application development. A JAD session gets all of the stakeholders together to have a structured discussion about the design of the system. Application developers also sit in on this meeting and observe, trying to understand the essence of the requirements. 3. Construction. In the construction phase, the application developers, working with the users, build the next version of the system.This is an interactive process, and changes can be made as developers are working on the program. This step is executed in parallel with the User Design step in an iterative fashion, until an acceptable version of the product is developed. 4. Cutover. In this step, which is similar to the implementation step of the SDLC, the system goes live. All steps required to move from the previous state to the use of the new system are completed here. The RAD methodology is much more compressed than SDLC. Many of the SDLC steps are combined and the focus is on user participation and iteration. This methodology is much better suited for smaller projects than SDLC and has the added advantage of giving users the ability to provide feedback throughout the process. SDLC requires more documentation and attention to detail and is well suited to large, resource-intensive projects. RAD is more appropriate for smaller projects that are less resource-intensive and need to be developed quickly. Agile Methodologies Agile methodologies are a group of methodologies that utilize incremental changes with a focus on quality and attention to detail. Each increment is released in a specified period of time (called a time box), creating a regular release schedule with very specific objectives. While considered a separate methodology from RAD, they share some of the same principles: iterative development, user interaction, ability to change. The agile methodologies are based on the Agile Manifesto,” first released in 2001. 9 The characteristics of agile methods include: small cross-functional teams that include development-team members and users; daily status meetings to discuss the current state of the project; short time-frame increments (from days to one or two weeks) for each change to be completed; and at the end of each iteration, a working project is completed to demonstrate to the stakeholders. The goal of the agile methodologies is to provide the flexibility of an iterative approach while ensuring a quality product. Lean Methodology The Lean methodology In the Lean methodology, the focus is on taking an initial idea and developing a minimum viable product (MVP). The MVP is a working software application with just enough functionality to demonstrate the idea behind the project. Once the MVP is developed, it is given to potential users for review. Feedback on the MVP is generated in two forms: 10 (1) Direct observation and discussion with the users. (2) Usage statistics gathered from the software itself. Using these two forms of feedback, the team determines whether they should continue in the same direction or rethink the core idea behind the project, change the functions, and create a new MVP. This change in strategy is called a pivot. Several iterations of the MVP are developed, with new functions added each time based on the feedback, until a final product is completed. The biggest difference between the lean methodology and the other methodologies is that the full set of requirements for the system are not known when the project is launched. As each iteration of the project is released, the statistics and feedback gathered are used to determine the requirements. The lean methodology works best in an entrepreneurial environment where a company is interested in determining if their idea for a software application is worth developing. PROJECT SELECTION AND MANAGEMENT Project Selection Project Selection is a process to assess each project idea and select the project with the highest priority. Projects are still just suggestions at this stage, so the selection is often made based on only brief descriptions of the project. As some projects will only be ideas, it is best if a brief description of each project is written before conducting the selection process. Selection of projects is based on: Benefits: A measure of the positive outcomes of the project. These are often described as "the reasons why you are undertaking the project". 11 Feasibility: A measure of the likelihood of the project being a success, i.e. achieving its objectives. Projects vary greatly in complexity and risk. By considering feasibility when selecting projects it means the easiest projects with the greatest benefits are given priority. Project selection becomes necessary when an organization has a number of suggested projects but not enough resources, money or time to undertake all of the projects. The ideas for such projects may have come from many sources including: the community, funders, local and national governments and Non-Governmental Organizations (NGOs). You will therefore need a way of deciding on a priority order and choosing a project. Project Management Software project management refers to the branch of project management dedicated to the planning, scheduling, resource allocation, execution, tracking and delivery of software and web projects. Project management in software engineering is distinct from traditional project management in that software projects have a unique lifecycle process that requires multiple rounds of testing, updating, and customer feedback. In the 1970s and 1980s, the software industry grew very quickly, as computer companies quickly recognized the relatively low cost of software production compared to hardware production and circuitry. To manage new development efforts, companies applied the established project management methods, but project schedules slipped during test runs, especially when confusion occurred in the gray zone between the user specifications and the delivered software. There were a lot of crisis part because the greater power available in computers meant that larger software projects were tackled with techniques developed on much smaller projects. This give rise for the need of techniques for software project management. Good project management cannot guarantee success, but poor management on significant projects always leads to failure. 12 Software projects have several properties that make them very different from other kinds of engineering projects; Software products are intangible. For instance, it’s hard to claim a bridge is 90% complete if there is not 90% of the bridge there however, it is easy to claim that a software project is 90% complete, even if there are no visible outcomes. Most large software systems are one-off, with experience gained in one project being of little help in another. The technology changes very quickly. Most large software projects employ new technology. Activities in software project management usually include: – project planning; – project scheduling; – risk management; – managing people. Project Planning The biggest single problem that afflicts software developing is that of underestimating resources required for a project. Developing a realistic project plan is essential to gain an understanding of the resources required, and how these should be applied. • Types of plan are: – Software development plan. The central plan, which describes how the system will be developed. – Quality assurance plan. Specifies the quality procedures & standards to be used. – Validation plan. Defines how a client will validate the system that has been developed. – Configuration management plan. Defines how the system will be configured and installed. – Maintenance plan. Defines how the system will be maintained. – Staff development plan. Describes how the skills of the participants will be developed. Project Scheduling Project scheduling is a mechanism to communicate what tasks need to get done and which organizational resources will be allocated to complete those tasks in what timeframe. A project is made up of many tasks, and each task is given a start and end (or due date), so it 13 can be completed on time. The project schedule should reflect all of the work associated with delivering the project on time. Without a full and complete schedule, the project manager will be unable to communicate the complete effort, in terms of cost and resources, necessary to deliver the project. Risk Management Risk management is concerned with identifying risks and drawing up plans to minimize their effect on a project. A risk is a probability that some adverse circumstance will occur. When planning a project, it is critically important to know what the key risks are, and if possible plan for them. Risk management covers staff turnover, management change, hardware unavailability, requirements change, specification delays, size underestimate, technology change, product competition etc. Managing People People are the organization's most important asset. In most organizations that develop software, programmers, analysts, and other professionals work together in a team. An adequate team structure depends on many factors, such as the number of people involved, their experience and involvement in the project, the kind of project, and individual differences and style. Project managers have to choose people for their team and establish ways of working that leads to effective team performance. People management factors include: Consistency: team members should all be treated in a comparable way without favorites or discrimination. Respect: different team members have different skills and these differences should be respected. Inclusion: involve all team members and make sure that people's views are considered. Honesty: you should always be honest about what is going well and what is going badly in a project. 14 USE CASE ANALYSIS Use case analysis describes scenarios of input that a software or system receives and the corresponding expected output. The use case analysis attempts to convey system requirements and usage, the role of the user, the system actions in response to the user, and what the user will receive from the system. Use case analysis is a technique used to identify the requirements of a system and the information used to both define processes used and classes which will be used both in the use case diagram and the overall use case in the development or redesign of a software system or program. Use cases are used to explain and document the interaction that is required between the user and the system to accomplish the user's task. Use cases are created to help the development team understand more fully the steps that are involved in accomplishing the user's goals. Once created, use cases often can be used to derive more detailed functional requirements for the new system. A software development lifecycle goes through several stages: design, analysis, implementation, and close out. Use case analysis can happen at any stage. A use case analysis is used to design a system from the viewpoint of the end user, the person actually using the site or software. It is used to determine and convey system behavior information. The use case analysis attempts to convey information on the system requirements and usage, the role of the user, the system actions in response to the user, and what the user will receive from the system. Without proper analysis, a design is likely to be wrong which can be devastating if not timely detected. Common analysis activity will generally produce a number of use case scenarios. The Purpose of a use case is to define a piece of behavior of a system [or subsystem or class] without revealing the internal structure of the system. The concept of the use case has evolved as an important component of determining requirements for the new system. Use cases originated as a part of the object-oriented development world but have been accepted as a useful tool regardless of the development methodology in use. This is not surprising since in any development approach (waterfall, RAD, 15 or agile) we need to hear and understand what the user needs to accomplish with the system. Use cases are especially valuable for business system applications and Web sites. Both of these types of systems commonly involve extensive user interactions A use case should describe what the system shall do for the user (or actor in UML terminolo gy) to achieve a particular goal at an appropriate level or detail without any implementation s pecifics. The Unified Modeling Language is a general-purpose, developmental, modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system. UML, short for Unified Modeling Language, is a standardized modeling language consisting of an integrated set of diagrams, developed to help system and software developers for specifying, visualizing, constructing, and documenting the artifacts of software systems, as well as for business modeling and other non-software systems. The UML represents a collection of best engineering practices that have proven successful in the modeling of large and complex systems. The UML is a very important part of developing object oriented software and the software development process. The UML uses mostly graphical notations to express the design of software projects. Using the UML helps project teams communicate, explore potential designs, and validate the architectural design of the software. Key Components of Use-Case Analysis Actors: Entities that use or are used by the system; typically people, but could also be other systems or devices as long as they are outside the system being specified. Actors are characterized not by the identity of the user, but rather by the role played by the actor. One person can be several different actors in different roles. One actor can be played (at different times) by several different persons. An entire committee could be one actor. An actor need not be a living thing; it could be another subsystem. Connections from Actors to Use-Cases Relationships between Actors or between Use-Cases 16 Trigger for the use case: the event that causes the use case to begin. A trigger can be an external trigger, such as a customer placing an order, the fire alarm ringing, or an internal trigger, like the La attendant requesting chemical for a lab test. Common Components of a Use Case Name Symbolic label List of actors Initiator Verbal description Brief Use-Case Description (Example 1) Use Case ID - UC.1 Use case name: Order from catalog Actors: customer, sales rep., shipping dept. Initiator: customer Description: Customer calls to order items from the catalog. The sales rep. identifies the item numbers, verifies that the items are in stock, and confirms the order with the customer, giving him the order number. The sales rep. then forwards the order to the Shipping dept. Flow of Events: 1 Customer calls to order from catalog. 2 Sales representative identifies item numbers. 3 Sales representative verifies stock. 4 Sales representative confirms order. 5 Sales representative gives order number to Customer. 6 Sales representative passes order to Shipping. The Use Case Diagram Use case diagrams are used for visualization of use case interactions; diagrams are not the use cases themselves. 17 Use Case Icons Descriptions Actor Use Case System boundary Connection Use case diagram for Example 1 above Steps in Use-Case Analysis Identify system boundaries 18 Identify actors: (Recall: an actor is an entity playing a particular role with respect to the system). Identify use cases themselves. o Every use case has at least one actor. o A specific actor initiates the use case. o The same actor may participate in multiple use cases, as initiator in some and not in others. Create the description including flow of events. Identify clarifying scenarios where helpful. A Use Case Scenario A scenario is a single path through the event flow. For example, if there is a conditional part, only one branch is taken in the scenario. Obviously, all scenarios cannot be enumerated; there might be an infinite set of them. If the use case involves iteration, only a finite number of iterations are used in the scenario. Use-Case 2 (Example 2) Use Case ID - UC.2 Use case name: Money Transfer Actor: customer, login agent Description: Allows the actor transfer money between accounts Flow of events 1. Actor logs into the system 2. Actor selects from account, enters to account and a sum a. If the sum is ≥ N10,000, a fee of 2% the sum is added b. If the sum is < N10,000, no fee is added 3. The updated balance is displayed 19 20 PROCESS MODELING A process model describes business processes the activities that people do. Process models are developed for the as-is system and/or the to-be system. A process model is a graphical way of representing how a business system should operate. It illustrates the processes or activities that are performed and how data move among them. A process model can be used to document the current system (i.e., as-is system) or the new system being developed (i.e., to-be system), whether computerized or not. Graphically depicting the system that will be developed in a set of well-organized diagrams is a very useful approach which employ an array of tools and techniques that will help stakeholders understand and clarify what the new system must do before the new system is actually constructed. There are many different process modeling techniques in use today, the most commonly used technique is: Data Flow Diagram (DFD) & Decomposition Diagram Data Flow Diagram (DFD) shows how data flows around an information system. They are a simple and powerful graphic technique which is both easily updated and easily understood by users. This is basically one of the main diagrammatic techniques of Structured System Analysis and Design Methodology. n PN Process: Shows a transformation of data and is also referred to as a function. n is the number of the process, this number also indicates the level of the process. PN is the process name. A data flow diagram can be defined as a hierarchical set of diagrams which is used to define: - the boundary of the system to be developed 21 - the information flow to and from the system - data flows within the system - the functions used by the system. (used to define the project scope and to provide measures of performance - for use in estimating and planning). How is it developed? 1. Identify inputs & outputs. 2. Label all data flows. 3. Label all processes. 4. Identify data stores. 5. Label all External Entities. 6. Start again. Data Flows between External entity and Process Data Store and Process, Process and Process Note: Information (Data) held for any amount of time between processes is called a Data Store. Decomposition Diagram This is a tool used to depict the breaking of a system into subcomponents. 22 Decomposition diagram for Bus repair process. Elements of Data Flow Diagrams The language of DFDs includes a set of symbols, naming conventions, and syntax rules. There are four symbols in the DFD language (processes, data flows, data stores, and external entities), each of which is represented by a different graphic symbol. Process A process is an activity or a function that is performed for some specific business reason. Processes are discrete actions that transform input data to output data. Processes can be manual or computerized. Every process should be named starting with a verb and ending with a noun (e.g., “Determine request quantity, Create Student Record, Calculate Purchase Cost, Register Client” etc). Names should be short, yet contain enough information 23 so that the reader can easily understand exactly what they do. In general, each process performs only one activity, so most system analysts avoid using the word “and” in process names because it suggests that the process performs several activities. In addition, every process must have at least one input data flow and at least one output data flow. Data Flow A data flow is a single piece of data (e.g., quantity available) (sometimes called a data element), or a logical collection of several pieces of information (e.g., new chemical request). Every data flow should be named with a noun. The description of a data flow lists exactly what data elements the flow contains. Data flows are the glue that holds the processes together. One end of every data flow will always come from or go to a process, with the arrow showing the direction into or out of the process. Data flows show what inputs go into each process and what outputs each process produces. Every process must create at least one output data flow, because if there is no output, the process does not do anything. Likewise, each process has at least one input data flow, because it is difficult, if not impossible, to produce an output with no input. Data Store A data store is a collection of data that is stored in some way (which is determined later when creating the physical model). Data stores are temporary or permanent repositories of information that are inputs to or outputs of processes. E.g. Student Master, Client List etc. 24 Every data store is named with a noun and is assigned an identification number and a description. Data stores form the starting point for the data model and are the principal link between the process model and the data model. D 3 Student Master External Entity An external entity is a person, organization, organization unit, or system that is external to the system, but interacts with it. The external entity typically corresponds to the primary actor identified in the use case. External entities provide data to the system or receive data from the system, and serve to establish the system boundaries. Every external entity has a name and a description. The key point to remember about an external entity is that it is external to the system, but may or may not be part of the organization. People who use the information from the system to perform other processes or who decide what information goes into the system are documented as external entities (e.g., student, customer, client, managers, and staff etc.). In other words’ external entities represent persons, processes or machines which produce data to be used by the system or receive data that is output by the system. Student System A system is the collection of all business processes which perform tasks or produce outputs we are interested in. The system is a single process, connected to external entities which is usually represented in a “Context Diagram” Subsystems 25 A subsystem gives a more detailed view of individual processes contained in the context diagram. It Includes data stores, more elementary processes etc. An example of a DFD case study: Bus Garage Repairs Buses come to a garage for repairs. A mechanic and helper perform the repair, record the reason for the repair and record the total cost of all parts used on a Shop Repair Order. Information on labor, spare parts and repair outcome is used for billing by the Accounting Department, parts monitoring by the inventory management computer system and a performance review by the supervisor. 1. Key process (“the system”): performing repairs and storing information related to repairs. 2. External Entities: Bus Mechanic Helper Supervisor Inventory Management System Accounting Department, etc. 3. Processes: Record Bus ID Record reason for repair Determine parts needed Perform repair Calculate cost of parts used and total cost Record labor hours, cost of labor. 4. Data stores: Personnel file Repairs file Bus master list Parts list 5. Data flows: Repair order Bus record 26 Parts record Employee timecard Invoices Bus Garage Context Diagram DATA MODELING A data model gives a detailed description of a conceptual representation of the data structures that are required by a database. The data structures include the data objects, the associations between data objects, and the rules which govern operations on the objects. As the name implies, the data model focuses on what data is required and how it should be organized rather than what operations will be performed on the data. To use a common analogy, the data model is equivalent to an architect's building plans. A data model is independent of hardware or software constraints. Rather than try to represent the data as a database would see it, the data model focuses on representing the data as the user 27 sees it in the "real world". It serves as a bridge between the concepts that make up real-world events and processes and the physical representation of those concepts in a database Data Modelling in the Context of Database Design Database design is defined as: "design the logical and physical structure of one or more databases to accommodate the information needs of the users in an organization for a defined set of applications". The design process roughly follows five steps: 1. planning and analysis 2. conceptual design 3. logical design 4. physical design 5. implementation The data model is one part of the conceptual design process. The other, typically is the functional model. The data model focuses on what data should be stored in the database while the functional model deals with how the data is processed. To put this in the context of the relational database, the data model is used to design the relational tables. The functional model is used to design the queries which will access and perform operations on those tables. Components of a Data Model The data model gets its inputs from the planning and analysis stage. Here the modeller, along with analysts, collects information about the requirements of the database by reviewing existing documentation and interviewing end-users. The data model has two outputs. The first is an entity-relationship diagram which represents the data structures in a pictorial form. Because the diagram is easily learned, it is valuable tool to communicate the model to the end-user. The second component is a data document. This a document that describes in detail the data objects, relationships, and rules required by the database. The dictionary provides the detail required by the database developer to construct the physical database. 28 SYSTEM ACQUISITION STRATEGIES SOFTWARE REQUIREMENT Software Requirements Process Software requirements process is the process of establishing the services that the customer requires from a system and the constraints under which it operates and is developed. The requirements themselves are the descriptions of the system services and constraints that are generated during the requirements engineering process. Requirements may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification. Types of Requirements User requirements: are statements given in natural language plus diagrams of the services the system provides and its operational constraints. They are usually written for customers. System requirements: are structured document setting out detailed descriptions of the system’s functions, services and operational constraints. It defines what should be implemented e.g. it may be part of a contract between client and contractor etc. Functional and Non-Functional Requirements Functional requirements: are statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. It describes functionality or system services and it also depends on the type of software, expected users and the type of system where the software is used. 29 Functional user requirements may be high-level statements of what the system should do but functional system requirements should describe the system services in detail. Non-functional requirements; are constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. Domain requirements: are requirements that come from the application domain of the system and that reflect characteristics of that domain. *A case study for functional and non-functional requirements of a system. The LIBSYS system A library system that provides a single interface to a number of databases of articles in different libraries. Users can search for, download and print these articles for personal study. Examples of functional requirements for this case study are: The user shall be able to search either all of the initial set of databases or select a subset from it. The system shall provide appropriate viewers for the user to read documents in the document store. Every order shall be allocated a unique identifier (ORDER_ID) which the user shall be able to copy to the account’s permanent storage area. Examples of non-functional requirements for this case study is: The project should be completed within three (3) months. 30 System Analysis and Design, Fifth Edition by Roberta M. Roth, Barbara Haley Wixom, Alan Dennis 2019 Edition: Information Systems for Business and Beyond. The 2019 edition of the textbook by Dr. David Bourgeois. This edition has been updated with new content. 31