System Development Fundamentals (9 hrs)
This section provides a comprehensive overview of the fundamentals of system development, focusing on the development environment, the origins of software, and managing information systems projects. The concepts covered in this topic are essential for understanding how modern software applications are developed, managed, and improved through various methodologies and frameworks.
a. The Systems Development Environment
The Systems Development Environment (SDE) refers to the set of tools, processes, methodologies, and technologies used in the development of an information system. This environment enables teams to collaborate, design, implement, test, and maintain software systems. A structured development process ensures the success and efficiency of creating software systems.
1. Introduction to Systems Development Environment
In the context of information systems, the development environment includes hardware, software, methodologies, and standards used to develop, manage, and maintain systems. This environment ensures consistency, quality, and traceability throughout the system development lifecycle.
2. Modern Approach to System Analysis and Design
System analysis and design is the process of studying the needs of an organization and creating software solutions that meet those needs. Modern approaches focus on flexibility, user-centered design, and iterative feedback. The main goal is to produce functional systems efficiently while managing risks and ensuring stakeholder satisfaction.
3. Information System and Its Types
An Information System (IS) is a set of interrelated components designed to collect, process, store, and distribute information. There are several types of information systems, including:
- Transaction Processing Systems (TPS): Focus on automating routine transactions.
- Management Information Systems (MIS): Provide management with reports and data to support decision-making.
- Decision Support Systems (DSS): Help with more complex decision-making processes.
- Expert Systems: Mimic human expertise to solve specific problems.
- Enterprise Resource Planning (ERP): Integrate core business processes into one system.
4. Developing Information Systems and Its Types
There are multiple types of systems development approaches. These approaches vary based on their flexibility, delivery speed, and the complexity of the system being developed. The development environment will define how these approaches are utilized:
- Waterfall Development: A traditional approach that is sequential and rigid.
- Rapid Application Development (RAD): Focuses on quick prototyping and user feedback.
- Agile Development: Prioritizes flexibility and iterative cycles of development.
- Service-Oriented Architecture (SOA): Focuses on building systems as a set of services that can be reused across various platforms.
5. The Systems Development Life Cycle (SDLC)
The Systems Development Life Cycle (SDLC) is a structured methodology for developing information systems. The SDLC consists of several stages:
- Planning: Identifying the project scope, resources, and objectives.
- Analysis: Gathering and analyzing business requirements.
- Design: Creating detailed system and software designs.
- Development: Writing the actual code and developing the system.
- Testing: Evaluating the system for defects and ensuring it meets requirements.
- Implementation: Deploying the system to users.
- Maintenance: Continuously updating and improving the system after deployment.
The Waterfall SDLC is a linear and sequential approach, where each phase must be completed before moving to the next one. However, the waterfall model has limitations, especially when changes are required in later phases.
6. Approaches for Improving Development
To overcome limitations in traditional approaches like Waterfall, various techniques and methodologies have been developed to improve system development.
a) CASE Tools (Computer-Aided Software Engineering)
CASE tools are software tools that support the development of systems through various stages, such as planning, design, coding, and testing. These tools help automate repetitive tasks and improve system quality, documentation, and collaboration.
b) Rapid Application Development (RAD)
RAD is an iterative development approach that emphasizes quick development cycles and the use of prototypes. It allows users to give feedback on early versions of the system, helping ensure the system meets their needs before final delivery.
c) Service-Oriented Architecture (SOA)
SOA is a design style in which applications are built as a series of reusable and loosely coupled services. Each service is independent, and different services can communicate with each other over a network. This approach promotes flexibility and scalability.
d) Agile Methodologies
Agile focuses on flexibility and iterative development. Agile methodologies promote collaboration with stakeholders, continuous improvement, and adaptive planning. Some well-known agile methodologies include Scrum and Kanban.
e) Extreme Programming (XP)
XP is an agile development methodology that emphasizes technical excellence, rapid feedback, and close collaboration between developers and customers. Key practices include pair programming, test-driven development, and continuous integration.
f) Object-Oriented Analysis and Design (OOAD)
OOAD is a methodology for designing systems using object-oriented principles. It focuses on creating reusable and modular software components based on real-world objects and their interactions. Key concepts in OOAD include classes, objects, inheritance, polymorphism, and encapsulation.
b. The Origins of Software
The origin of software development is deeply rooted in the need for efficient processing and automation of tasks. Over time, various practices, technologies, and models have evolved to handle software development more effectively.
1. Introduction
The process of developing software can be traced back to the early days of computing, where computers were used to perform specific tasks. Early software development was manual and highly complex, with a focus on solving specific problems rather than general-purpose applications.
2. System Acquisition
System acquisition refers to the process of acquiring software and systems for an organization. This can involve purchasing off-the-shelf software, developing custom software, or integrating existing systems. Acquiring the right system involves assessing the needs, evaluating vendors, and ensuring the selected system is scalable and cost-effective.
3. Reuse
Software reuse involves leveraging existing code or system components in new applications to reduce development time and cost. Reuse can take several forms:
- Code Reuse: Reusing previously written code components or libraries.
- Component Reuse: Reusing pre-built software components, such as APIs or services.
- Design Reuse: Leveraging established design patterns or architectural solutions.
Reusing software accelerates development, improves consistency, and reduces the risk of errors.
c. Managing the Information Systems Project
Managing information systems projects is a key aspect of software development. Effective management ensures that the project stays on track, within scope, and on budget.
1. Introduction to Project Management
Project management involves planning, organizing, and overseeing the resources and activities involved in the development of an information system. It helps ensure that the project meets its objectives, delivers value to stakeholders, and adheres to timelines and budgets.
2. Managing Information Systems Projects
Successful management of information systems projects requires careful planning, monitoring, and control. Project managers must coordinate teams, resources, and tasks, while also managing risks, issues, and stakeholder expectations.
Key elements of managing IS projects include:
- Project Scope: Defining the boundaries of the project, including what is and isn’t included.
- Resources: Allocating human resources, budget, and tools effectively.
- Risk Management: Identifying and mitigating potential risks to project success.
- Communication: Maintaining open communication with stakeholders to keep them informed of progress and issues.
3. Representing and Scheduling Project Plans
Project plans should include detailed timelines, task lists, and resource allocations. Scheduling involves breaking the project down into smaller, manageable tasks and determining the timeframes for each.
Common techniques for project scheduling:
- Gantt Charts: Visual representation of tasks and their timelines.
- Critical Path Method (CPM): Identifies the longest path of tasks that must be completed on time to ensure the project is finished as scheduled.
- PERT (Program Evaluation Review Technique): Helps estimate the time required to complete tasks when there is uncertainty in task duration.
4. Using Project Plans
Project plans are used to ensure that the project stays on track. These plans should be regularly updated and serve as a guide for the team. The project manager needs to monitor progress, adjust schedules, and keep stakeholders informed.
5. Using Project Management Software
Project management software is used to streamline the planning, execution, and monitoring of information systems projects. These tools help with task assignments, communication, tracking, and reporting.
Popular project management tools include:
- Microsoft Project: Provides scheduling, resource allocation, and reporting features.
- Trello: A simple, flexible tool for organizing tasks and collaboration.
- JIRA: A popular tool for managing agile development projects, tracking issues, and assigning tasks.
Conclusion
The System Development Fundamentals covered in this note highlight the core elements involved in building and managing information systems. Understanding different methodologies (such as Agile, Waterfall, RAD), the importance of managing resources effectively, and the use of modern tools can help organizations successfully develop and maintain software systems. Properly managing software development projects, from acquisition to execution, ensures that the systems created meet business needs, are delivered on time, and are aligned with the organization’s strategic goals.