Tuesday, March 3, 2020

System Analysis & Design - System Design

System design is the phase that bridges the gap between problem domain and the existing system in a manageable way. This phase focuses on the solution domain, i.e. “how to implement?”
It is the phase where the SRS document is converted into a format that can be implemented and decides how the system will operate.
In this phase, the complex activity of system development is divided into several smaller sub-activities, which coordinate with each other to achieve the main objective of system development.
Objective Design

Inputs to System Design

System design takes the following inputs −
  • Statement of work
  • Requirement determination plan
  • Current situation analysis
  • Proposed system requirements including a conceptual data model, modified DFDs, and Metadata (data about data).

Outputs for System Design

System design gives the following outputs −
  • Infrastructure and organizational changes for the proposed system.
  • A data schema, often a relational schema.
  • Metadata to define the tables/files and columns/data-items.
  • A function hierarchy diagram or web page map that graphically describes the program structure.
  • Actual or pseudocode for each module in the program.
  • A prototype for the proposed system.

Types of System Design

Logical Design

Logical design pertains to an abstract representation of the data flow, inputs, and outputs of the system. It describes the inputs (sources), outputs (destinations), databases (data stores), procedures (data flows) all in a format that meets the user requirements.
While preparing the logical design of a system, the system analyst specifies the user needs at level of detail that virtually determines the information flow into and out of the system and the required data sources. Data flow diagram, E-R diagram modeling are used.

Physical Design

Physical design relates to the actual input and output processes of the system. It focuses on how data is entered into a system, verified, processed, and displayed as output.
It produces the working system by defining the design specification that specifies exactly what the candidate system does. It is concerned with user interface design, process design, and data design.
It consists of the following steps −
  • Specifying the input/output media, designing the database, and specifying backup procedures.
  • Planning system implementation.
  • Devising a test and implementation plan, and specifying any new hardware and software.
  • Updating costs, benefits, conversion dates, and system constraints.

Architectural Design

It is also known as high level design that focuses on the design of system architecture. It describes the structure and behavior of the system. It defines the structure and relationship between various modules of system development process.

Detailed Design

It follows Architectural design and focuses on development of each module.

Conceptual Data Modeling

It is representation of organizational data which includes all the major entities and relationship. System analysts develop a conceptual data model for the current system that supports the scope and requirement for the proposed system.
The main aim of conceptual data modeling is to capture as much meaning of data as possible. Most organization today use conceptual data modeling using E-R model which uses special notation to represent as much meaning about data as possible.

Entity Relationship Model

It is a technique used in database design that helps describe the relationship between various entities of an organization.

Terms used in E-R model

  • ENTITY − It specifies distinct real world items in an application. For example: vendor, item, student, course, teachers, etc.
  • RELATIONSHIP − They are the meaningful dependencies between entities. For example, vendor supplies items, teacher teaches courses, then supplies and course are relationship.
  • ATTRIBUTES − It specifies the properties of relationships. For example, vendor code, student name. Symbols used in E-R model and their respective meanings −
The following table shows the symbols used in E-R model and their significance −
SymbolMeaning
EntityEntity
Weak EntityWeak Entity
RelationshipRelationship
Identity RelationshipIdentity Relationship
AttributesAttributes
Key AttributesKey Attributes
MultivaluedMultivalued
Composite AttributeComposite Attribute
Derived AttributeDerived Attributes
ParticipationTotal Participation of E2 in R
CardinalityCardinality Ratio 1:N for E1:E2 in R
Three types of relationships can exist between two sets of data: one-to-one, one-to-many, and many-to-many.

File Organization

It describes how records are stored within a file.
There are four file organization methods −
  • Serial − Records are stored in chronological order (in order as they are input or occur). Examples − Recording of telephone charges, ATM transactions, Telephone queues.
  • Sequential − Records are stored in order based on a key field which contains a value that uniquely identifies a record. Examples − Phone directories.
  • Direct (relative) − Each record is stored based on a physical address or location on the device. Address is calculated from the value stored in the record’s key field. Randomizing routine or hashing algorithm does the conversion.
  • Indexed − Records can be processed both sequentially and non-sequentially using indexes.

Comparision

Comparision

File Access

One can access a file using either Sequential Access or Random Access. File Access methods allow computer programs read or write records in a file.

Sequential Access

Every record on the file is processed starting with the first record until End of File (EOF) is reached. It is efficient when a large number of the records on the file need to be accessed at any given time. Data stored on a tape (sequential access) can be accessed only sequentially.

Direct (Random) Access

Records are located by knowing their physical locations or addresses on the device rather than their positions relative to other records. Data stored on a CD device (direct-access) can be accessed either sequentially or randomly.

Types of Files used in an Organization System

Following are the types of files used in an organization system −
  • Master file − It contains the current information for a system. For example, customer file, student file, telephone directory.
  • Table file − It is a type of master file that changes infrequently and stored in a tabular format. For example, storing Zipcode.
  • Transaction file − It contains the day-to-day information generated from business activities. It is used to update or process the master file. For example, Addresses of the employees.
  • Temporary file − It is created and used whenever needed by a system.
  • Mirror file − They are the exact duplicates of other files. Help minimize the risk of downtime in cases when the original becomes unusable. They must be modified each time the original file is changed.
  • Log files − They contain copies of master and transaction records in order to chronicle any changes that are made to the master file. It facilitates auditing and provides mechanism for recovery in case of system failure.
  • Archive files − Backup files that contain historical versions of other files.

Documentation Control

Documentation is a process of recording the information for any reference or operational purpose. It helps users, managers, and IT staff, who require it. It is important that prepared document must be updated on regular basis to trace the progress of the system easily.
After the implementation of system if the system is working improperly, then documentation helps the administrator to understand the flow of data in the system to correct the flaws and get the system working.
Programmers or systems analysts usually create program and system documentation. Systems analysts usually are responsible for preparing documentation to help users learn the system. In large companies, a technical support team that includes technical writers might assist in the preparation of user documentation and training materials.

Advantages

  • It can reduce system downtime, cut costs, and speed up maintenance tasks.
  • It provides the clear description of formal flow of present system and helps to understand the type of input data and how the output can be produced.
  • It provides effective and efficient way of communication between technical and nontechnical users about system.
  • It facilitates the training of new user so that he can easily understand the flow of system.
  • It helps the user to solve the problems such as troubleshooting and helps the manager to take better final decisions of the organization system.
  • It provides better control to the internal or external working of the system.

Types of Documentations

When it comes to System Design, there are following four main documentations −
  • Program documentation
  • System documentation
  • Operations documentation
  • User documentation

Program Documentation

  • It describes inputs, outputs, and processing logic for all the program modules.
  • The program documentation process starts in the system analysis phase and continues during implementation.
  • This documentation guides programmers, who construct modules that are well supported by internal and external comments and descriptions that can be understood and maintained easily.

Operations Documentation

Operations documentation contains all the information needed for processing and distributing online and printed output. Operations documentation should be clear, concise, and available online if possible.
It includes the following information −
  • Program, systems analyst, programmer, and system identification.
  • Scheduling information for printed output, such as report, execution frequency, and deadlines.
  • Input files, their source, output files, and their destinations.
  • E-mail and report distribution lists.
  • Special forms required, including online forms.
  • Error and informational messages to operators and restart procedures.
  • Special instructions, such as security requirements.

User Documentation

It includes instructions and information to the users who will interact with the system. For example, user manuals, help guides, and tutorials. User documentation is valuable in training users and for reference purpose. It must be clear, understandable, and readily accessible to users at all levels.
The users, system owners, analysts, and programmers, all put combined efforts to develop a user’s guide.
A user documentation should include −
  • A system overview that clearly describes all major system features, capabilities, and limitations.
  • Description of source document content, preparation, processing, and, samples.
  • Overview of menu and data entry screen options, contents, and processing instructions.
  • Examples of reports that are produced regularly or available at the user’s request, including samples.
  • Security and audit trail information.
  • Explanation of responsibility for specific input, output, or processing requirements.
  • Procedures for requesting changes and reporting problems.
  • Examples of exceptions and error situations.
  • Frequently asked questions (FAQs).
  • Explanation of how to get help and procedures for updating the user manual.

System Documentation

System documentation serves as the technical specifications for the IS and how the objectives of the IS are accomplished. Users, managers and IS owners need never reference system documentation. System documentation provides the basis for understanding the technical aspects of the IS when modifications are made.
  • It describes each program within the IS and the entire IS itself.
  • It describes the system’s functions, the way they are implemented, each program's purpose within the entire IS with respect to the order of execution, information passed to and from programs, and overall system flow.
  • It includes data dictionary entries, data flow diagrams, object models, screen layouts, source documents, and the systems request that initiated the project.
  • Most of the system documentation is prepared during the system analysis and system design phases.
  • During systems implementation, an analyst must review system documentation to verify that it is complete, accurate, and up-to-date, and including any changes made during the implementation process.

Websites Overview

Website is a location on web and is hosted on a web server. It is a set of related web pages. It is accessed using Internet address known as Uniform Resource Locator

Static Websites

Static websites are also known as flat or stationary websites. They are loaded on the client’s browser as exactly they are stored on the web server. Such websites contain only static information. User can only read the information but can’t do any modification or interact with the information.
Static websites are created using only HTML. Static websites are only used when the information is no more required to be modified.
internet_technologies_tutorial

Dynamic Websites

Dynamic websites shows different information at different point of time. It is possible to change a portion of a web page without loading the entire web page. It has been made possible using Ajax technology.

Server-side dynamic web page

It is created by using server-side scripting. There are server-side scripting parameters that determine how to assemble a new web page which also include setting up of more client-side processing.

Client-side dynamic web page

It is processed using client side scripting such as javascript. And then passed in to Document Object Model (DOM).
internet_technologies_tutorial

Software Maintenance Overview

Software maintenance is widely accepted part of SDLC now a days. It stands for all the modifications and updations done after the delivery of software product. There are number of reasons, why modifications are required, some of them are briefly mentioned below:
  • Market Conditions - Policies, which changes over the time, such as taxation and newly introduced constraints like, how to maintain bookkeeping, may trigger need for modification.
  • Client Requirements - Over the time, customer may ask for new features or functions in the software.
  • Host Modifications - If any of the hardware and/or platform (such as operating system) of the target host changes, software changes are needed to keep adaptability.
  • Organization Changes - If there is any business level change at client end, such as reduction of organization strength, acquiring another company, organization venturing into new business, need to modify in the original software may arise.

Types of maintenance

In a software lifetime, type of maintenance may vary based on its nature. It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature. Following are some types of maintenance based on their characteristics:
  • Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.
  • Adaptive Maintenance - This includes modifications and updations applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.
  • Perfective Maintenance - This includes modifications and updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.
  • Preventive Maintenance - This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

Cost of Maintenance

Reports suggest that the cost of maintenance is high. A study on estimating software maintenance found that the cost of maintenance is as high as 67% of the cost of entire software process cycle.
Maintenance Cost Chart
On an average, the cost of software maintenance is more than 50% of all SDLC phases. There are various factors, which trigger maintenance cost go high, such as:

Real-world factors affecting Maintenance Cost

  • The standard age of any software is considered up to 10 to 15 years.
  • Older softwares, which were meant to work on slow machines with less memory and storage capacity cannot keep themselves challenging against newly coming enhanced softwares on modern hardware.
  • As technology advances, it becomes costly to maintain old software.
  • Most maintenance engineers are newbie and use trial and error method to rectify problem.
  • Often, changes made can easily hurt the original structure of the software, making it hard for any subsequent changes.
  • Changes are often left undocumented which may cause more conflicts in future.

Software-end factors affecting Maintenance Cost

  • Structure of Software Program
  • Programming Language
  • Dependence on external environment
  • Staff reliability and availability

Maintenance Activities

IEEE provides a framework for sequential maintenance process activities. It can be used in iterative manner and can be extended so that customized items and processes can be included.
Maintenance Activities
These activities go hand-in-hand with each of the following phase:
  • Identification & Tracing - It involves activities pertaining to identification of requirement of modification or maintenance. It is generated by user or system may itself report via logs or error messages.Here, the maintenance type is classified also.
  • Analysis - The modification is analyzed for its impact on the system including safety and security implications. If probable impact is severe, alternative solution is looked for. A set of required modifications is then materialized into requirement specifications. The cost of modification/maintenance is analyzed and estimation is concluded.
  • Design - New modules, which need to be replaced or modified, are designed against requirement specifications set in the previous stage. Test cases are created for validation and verification.
  • Implementation - The new modules are coded with the help of structured design created in the design step.Every programmer is expected to do unit testing in parallel.
  • System Testing - Integration testing is done among newly created modules. Integration testing is also carried out between new modules and the system. Finally the system is tested as a whole, following regressive testing procedures.
  • Acceptance Testing - After testing the system internally, it is tested for acceptance with the help of users. If at this state, user complaints some issues they are addressed or noted to address in next iteration.
  • Delivery - After acceptance test, the system is deployed all over the organization either by small update package or fresh installation of the system. The final testing takes place at client end after the software is delivered.
    Training facility is provided if required, in addition to the hard copy of user manual.
  • Maintenance management - Configuration management is an essential part of system maintenance. It is aided with version control tools to control versions, semi-version or patch management.

Software Re-engineering

When we need to update the software to keep it to the current market, without impacting its functionality, it is called software re-engineering. It is a thorough process where the design of software is changed and programs are re-written.
Legacy software cannot keep tuning with the latest technology available in the market. As the hardware become obsolete, updating of software becomes a headache. Even if software grows old with time, its functionality does not.
For example, initially Unix was developed in assembly language. When language C came into existence, Unix was re-engineered in C, because working in assembly language was difficult.
Other than this, sometimes programmers notice that few parts of software need more maintenance than others and they also need re-engineering.
Process of Re-Engineering

Re-Engineering Process

  • Decide what to re-engineer. Is it whole software or a part of it?
  • Perform Reverse Engineering, in order to obtain specifications of existing software.
  • Restructure Program if required. For example, changing function-oriented programs into object-oriented programs.
  • Re-structure data as required.
  • Apply Forward engineering concepts in order to get re-engineered software.
There are few important terms used in Software re-engineering

Reverse Engineering

It is a process to achieve system specification by thoroughly analyzing, understanding the existing system. This process can be seen as reverse SDLC model, i.e. we try to get higher abstraction level by analyzing lower abstraction levels.
An existing system is previously implemented design, about which we know nothing. Designers then do reverse engineering by looking at the code and try to get the design. With design in hand, they try to conclude the specifications. Thus, going in reverse from code to system specification.
Reverse Engineering

Program Restructuring

It is a process to re-structure and re-construct the existing software. It is all about re-arranging the source code, either in same programming language or from one programming language to a different one. Restructuring can have either source code-restructuring and data-restructuring or both.
Re-structuring does not impact the functionality of the software but enhance reliability and maintainability. Program components, which cause errors very frequently can be changed, or updated with re-structuring.
The dependability of software on obsolete hardware platform can be removed via re-structuring.

Forward Engineering

Forward engineering is a process of obtaining desired software from the specifications in hand which were brought down by means of reverse engineering. It assumes that there was some software engineering already done in the past.
Forward engineering is same as software engineering process with only one difference – it is carried out always after reverse engineering.
Forward Engineering

Component reusability

A component is a part of software program code, which executes an independent task in the system. It can be a small module or sub-system itself.

Example

The login procedures used on the web can be considered as components, printing system in software can be seen as a component of the software.
Components have high cohesion of functionality and lower rate of coupling, i.e. they work independently and can perform tasks without depending on other modules.
In OOP, the objects are designed are very specific to their concern and have fewer chances to be used in some other software.
In modular programming, the modules are coded to perform specific tasks which can be used across number of other software programs.
There is a whole new vertical, which is based on re-use of software component, and is known as Component Based Software Engineering (CBSE).
Components
Re-use can be done at various levels
  • Application level - Where an entire application is used as sub-system of new software.
  • Component level - Where sub-system of an application is used.
  • Modules level - Where functional modules are re-used.
    Software components provide interfaces, which can be used to establish communication among different components.

Reuse Process

Two kinds of method can be adopted: either by keeping requirements same and adjusting components or by keeping components same and modifying requirements.
Reuse Process
  • Requirement Specification - The functional and non-functional requirements are specified, which a software product must comply to, with the help of existing system, user input or both.
  • Design - This is also a standard SDLC process step, where requirements are defined in terms of software parlance. Basic architecture of system as a whole and its sub-systems are created.
  • Specify Components - By studying the software design, the designers segregate the entire system into smaller components or sub-systems. One complete software design turns into a collection of a huge set of components working together.
  • Search Suitable Components - The software component repository is referred by designers to search for the matching component, on the basis of functionality and intended software requirements..
  • Incorporate Components - All matched components are packed together to shape them as complete software.

Computer - Applications

In this chapter, we will discuss the application of computers in various fields.

Business

Computer Fundamentals
A computer has high speed of calculation, diligence, accuracy, reliability, or versatility which has made it an integrated part in all business organizations.
Computer is used in business organizations for −
  • Payroll calculations
  • Budgeting
  • Sales analysis
  • Financial forecasting
  • Managing employee database
  • Maintenance of stocks, etc.

Banking

Computer Banking
Today, banking is almost totally dependent on computers.
Banks provide the following facilities −
  • Online accounting facility, which includes checking current balance, making deposits and overdrafts, checking interest charges, shares, and trustee records.
  • ATM machines which are completely automated are making it even easier for customers to deal with banks.

Insurance

Computer Insurance
Insurance companies are keeping all records up-to-date with the help of computers. Insurance companies, finance houses, and stock broking firms are widely using computers for their concerns.
Insurance companies are maintaining a database of all clients with information showing −
  • Procedure to continue with policies
  • Starting date of the policies
  • Next due installment of a policy
  • Maturity date
  • Interests due
  • Survival benefits
  • Bonus

Education

Computer Educational
The computer helps in providing a lot of facilities in the education system.
  • The computer provides a tool in the education system known as CBE (Computer Based Education).
  • CBE involves control, delivery, and evaluation of learning.
  • Computer education is rapidly increasing the graph of number of computer students.
  • There are a number of methods in which educational institutions can use a computer to educate the students.
  • It is used to prepare a database about performance of a student and analysis is carried out on this basis.

Marketing

In marketing, uses of the computer are following −
Computer Marketing
  • Advertising − With computers, advertising professionals create art and graphics, write and revise copy, and print and disseminate ads with the goal of selling more products.
  • Home Shopping − Home shopping has been made possible through the use of computerized catalogues that provide access to product information and permit direct entry of orders to be filled by the customers.

Healthcare

Computers have become an important part in hospitals, labs, and dispensaries. They are being used in hospitals to keep the record of patients and medicines. It is also used in scanning and diagnosing different diseases. ECG, EEG, ultrasounds and CT scans, etc. are also done by computerized machines.
Following are some major fields of health care in which computers are used.
Computer Healthcare
  • Diagnostic System − Computers are used to collect data and identify the cause of illness.
  • Lab-diagnostic System − All tests can be done and the reports are prepared by computer.
  • Patient Monitoring System − These are used to check the patient's signs for abnormality such as in Cardiac Arrest, ECG, etc.
  • Pharma Information System − Computer is used to check drug labels, expiry dates, harmful side effects, etc.
  • Surgery − Nowadays, computers are also used in performing surgery.

Engineering Design

Computers are widely used for Engineering purpose.
One of the major areas is CAD (Computer Aided Design) that provides creation and modification of images. Some of the fields are −
Computer Engineering
  • Structural Engineering − Requires stress and strain analysis for design of ships, buildings, budgets, airplanes, etc.
  • Industrial Engineering − Computers deal with design, implementation, and improvement of integrated systems of people, materials, and equipment.
  • Architectural Engineering − Computers help in planning towns, designing buildings, determining a range of buildings on a site using both 2D and 3D drawings.

Military

Computer Military
Computers are largely used in defence. Modern tanks, missiles, weapons, etc. Military also employs computerized control systems. Some military areas where a computer has been used are −
  • Missile Control
  • Military Communication
  • Military Operation and Planning
  • Smart Weapons

Communication

Communication is a way to convey a message, an idea, a picture, or speech that is received and understood clearly and correctly by the person for whom it is meant. Some main areas in this category are −
Computer Communication
  • E-mail
  • Chatting
  • Usenet
  • FTP
  • Telnet
  • Video-conferencing

Government

Computers play an important role in government services. Some major fields in this category are −
Computer Government
  • Budgets
  • Sales tax department
  • Income tax department
  • Computation of male/female ratio
  • Computerization of voters lists
  • Computerization of PAN card
  • Weather forecasting

David Brooks on cancer diagnosis

  David Brooks on cancer diagnosis: "Although this has come as a shock to myself and my family, the prognosis is a positive one and I a...