System Development Life Cycle
System
System is a set of interacting or interdependent components forming an integrated whole. A system can be described as a set of objects joined together for a common objective.
Components of system:
-
Hardware:
Hardware refers to the physical layer of the information system. It includes computers, networks, scanners, digital capture devices, and other technology-based infrastructure.
-
Software:
Software refers to the logical layer of the information system that makes hardware function properly. It includes system software (OS, device driver, etc.) and application software.
-
Data:
Data is raw facts, figures, and measurements, etc. which are used as input for the system. It may be alphabets, digits, figures, and other symbols.
-
Processes:
Processes, or procedures, describe the tasks that users, managers, and IT staff members perform.
-
People:
People refer to users who interact with the information system. The users within the organization include managers, technicians, sales representatives, corporate officers, etc. are called internal users, and the users outside the organization include customers, suppliers, etc. are called external users.
Information System
An information system is a computer-based system which is an integrated set of different components for collection, process, storage and transmission of data. Simply, it is a system which processes supplied/collected data and generates information that can be used for decision making at different levels for the betterment of an organization.
Software Management Activities
Management software is that which is designed to streamline and automate management processes in order to lessen the complexity of large projects and tasks, as well as encourage or facilitate team cooperation, collaboration, and proper project reporting.
Software Project Management Activities:
-
Project Planning and Tracking:
It is the state of multiple tasks that need to be performed before the production of the software actually starts as it facilitates software production.
-
Scope Management:
It is necessary because it creates boundaries of the software project by clearly defining what would not be done and what would be done. This makes the project contain limited and quality-able tasks which can easily be documented and it avoids cost and time overruns.
-
Estimation Management:
This is not only about the budget destination in software development; we also figure out their size, efforts, as well as time. For an effective software project management, accurate estimation of various majors is a must with correct estimation project manager can manage and control the project efficiently and effectively.
-
Scheduling Management:
Scheduling management in software refers to all the activity to complete in the specified order and within time slotted to each activity. Project manager defines multiple tasks and arranges them keeping various factors in mind.
-
Project Research Management:
In software development, all the elements are arranged to as a resource for the projects. It can be human resources, productive tools, and library.
-
Project Risk Management:
Risk management consists of world activities like identification, analyzing, and preparing the plan for predictable and unpredictable risk in the project.
-
Project Communication Management:
Communication is an essential factor in the sub-project. It is a bridge between the client, organization, team member, and as well as stakeholder of the project such as hardware supplier. In the phase, communication must be clear and understood. Miscommunication can create a big blender in the project.
-
Project Configuration Management:
Configuration management is about to control the changes in the software like requirements designs and development of the project. The primary goal is to increase productivity with few errors.
Concept of SDLC Life Cycle
Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying, and supporting software. Development is often conducted by software developers, software engineers, and programmers.
It is the period that starts when the product is conceived and ends when the software is no longer available for use. It is a lifecycle imposed on the development of software products.
SDLC consists of a set of development activities that have a prescribed order. It is the development of software in chronological order.
- System Study
- System Analysis
- Feasibility Study
- System Design
- System Development
- System Testing
- Implementation
- Maintenance and Review
The different phases of SDLC are as follows:
-
System Study:
A system is intended to meet the needs of an organization. The first step in the design is to specify these needs or requirements. The top manager of the organization takes the basic decision to use a computer-based (information) system for managing the organization.
-
System Analysis:
System analysis is the dissection of a system into its component pieces to study how those component pieces interact and work. System analysis is a term that collectively describes the early phases of development. It is defined as those phases and activities that focus on the business problem, independent of technology.
-
Feasibility Study:
Feasibility study is the most important activity in the system analysis phase. It analyzes the proposed system from different aspects so that it makes us clear how practical or beneficial the system will be to the organization. It tells us whether the system is feasible to design or not.
The different levels of feasibility study are as:
- Economic feasibility: It concerns with cost-effectiveness of the system.
- Technical feasibility: It concerns with the availability of the hardware, software, and the support equipment for the complete development of the system.
- Operational feasibility: It concerns with the smooth operation of the system.
- Behavioral feasibility: It concerns with the behavior of the users and the society towards the new system.
- Schedule feasibility: It determines the deadline to complete a system and schedules the task accordingly.
- Legal feasibility: It concerns with legal issues of the system.
-
System Design:
The next step is to develop the logical design of the system. During this phase, the logic of the system, namely, the information requirement of users, is used to find the necessary database.
-
System Development:
After designing a logical diagram of a system, the next step is to convert it into a program. This process is called system development. Flowchart, algorithm, pseudocode, etc. are used to outline the procedures for making the input data and processing it into usable output.
-
System Testing:
It is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. There are two types of system testing: White box testing and Black box testing.
- White box testing: It focuses on close examination of procedural details and internal implementation.
- Black box testing: It treats the software as a black box without knowledge of internal implementation.
-
Implementation:
Implementation involves testing the installed system, converting from the old system to the new one, and training the users. This phase consists of implementing the system into a production environment and resolving problems identified in the testing phase.
-
Maintenance and Review:
Maintenance begins after the system is implemented. It includes periodic maintenance of hardware and software. The review includes objectives met, cost, performance, standards, and recommendations.
System Analyst Vs Software Engineer:
System Analyst:
- System analysts analyze existing systems and design, implement, and evaluate new systems to overcome limitations of the existing ones.
- They act as intermediaries between developers and users.
- Responsibilities include assessing the scope of the software project, specifying user needs to developers, and establishing program requirements.
- They also create SRS (Software Requirement Specification) documentation.
- System analysts need technical skills to bridge the gap between user needs and technical specifications.
Software Engineer:
- Software engineers design and create computer systems and applications to solve real-world problems.
- They analyze client needs, design, and develop computer software to meet those needs.
- Software engineers require extensive knowledge of programming languages, software development, and computer operating systems.
- The main difference is that software engineers focus on developing and programming software, while analysts focus on documentation and relaying user preferences to engineers.
Software Analyst | Software Engineer | |
---|---|---|
1. | Deals with overall management of engineering project during the life cycle. | Designs and develops software applications. |
2. | Focuses on users and domains. | Primarily focuses on developing software. |
3. | Applies technical, analytical, communicative, and managerial skills and techniques. | Applies scientific and mathematical principles. |
4. | Responsible for documenting project progress for quality control. | Focuses on design, development, testing, and evaluation of software. |
5. | May not be as technical or proficient with programming. | Highly technical and proficient with programming. |
6. | Needs coding and managerial skills. | Skilled in coding and continuous learning. |
7. | Fulfills the gap between IT and business. | Strengthens software development. |
Requirement Collection Methods:
Requirement collection is part of the system analysis phase of the SDLC. It involves gathering and analyzing requirements, which can be divided into functional and non-functional requirements. Different methods are used for gathering requirements:
- Interview
- Focus Group
- Brainstorming
- Document Analysis
- Observation / Field Visit
- Prototyping
- Workshop
- Questionnaire
Software and Quality:
Software quality is the ability of software to function as per user requirements. Key aspects of software quality include:
- Good Design
- Reliability
- Durability
- Consistency
- Maintainability
- Value for Money
Software Development Models:
1. Waterfall Model:
- Requirements Analysis and Definition
- System Design
- Implementation and Unit Testing
- Operation and Maintenance
2. Prototyping Model:
- Identify User Needs
- Develop a Prototype
- Determine If Prototype Is Acceptable
- Use the Prototype
Advantages of Prototyping:
- Improved communication
- Expert system can better determine user needs
- Active user involvement
- Reduced development time and effort
- Easier implementation
- Easy adaptation to changes
Disadvantages of Prototyping:
- No definite deliverable or deadline
- Code inefficiencies
- Poor computer-human interface
3. Agile Model:
- Incremental and iterative development
- Small incremental builds
- Iterative sprints (2-4 weeks)
- Customer feedback
Advantages of Agile Model:
- Rapid development
- New features can be added easily
- Minimum resource requirements
- Suitable for changing requirements
- Flexibility and customer satisfaction
Disadvantages of Agile Model:
- Emphasis on design and documentation
- Risk of sustainability and maintainability
- Not suitable for complex dependencies
- Requires experienced and skilled resources
Additional Information (For Concept Only - Not in Syllabus):
System Design:
- Flow Diagram (DFD): DFD is the logical diagram to describe the flow of data inside the components of system. It is easier to understand or grasp when being explained and most important to all, it is much more precise and less ambiguous than a narrative one. The main components are: process, data store, data flow, external entities.
- Entity Relation Diagram (ERD):The E-R diagram is an overall logical structure of a database that can be expressed graphically. It was developed to facilitated database design and the simplicity and pictorial clarity of this diagramming technique have done great help in the designing part of database. The main components are attributes, entities and relationship.
- Case Diagram:Computer aided software engineering tool is automatic computer-based program that helps for software engineering and SDLC process. It us very fast and effective tools for the development of big scale software. It helps in analysis, design, implementation, testing and maintenance.
- Unified Modelling Language (UML):Unified Modelling Language is a standardized general-purpose modelling language in the field of object-oriented software engineering. The standard is managed, and was created by, the object management group. UML includes a set of graphic notation techniques to create visual models of object-oriented software.
- System Flowchart:System flowchart describes the internal architecture of a system that describes how data are moved inside the internal components of a system. Program flowchart describes to solve the application types of real-world problem.
- Flowchart:System flowchart describes the internal architecture of a system that describes how data are moved inside the internal components of a system. Program flowchart describes to solve the application types of real-world problem.