The phases of system development include feasibility analysis, system planning and concept development, acquisition and requirements definition, design, development, integration and testing, deployment and acceptance, plowmen and production, and system retirement. System Development Life Cycle (SDLC) or application development life-cycle is a term used in systems engineering, information systems, and software engineering. It represents the process of planning, creating, testing, and deploying an information system.
The concept of the systems development life cycle applies to various hardware and software configurations, as a system can consist of only hardware, only software, or a combination of both. The OSDL Diagram cycle represents the overall process of developing, implementing, and retiring information systems. This process involves multiple stages, including initiation, analysis, design implementation, maintenance, and disposal.
Various OSDL models and methodologies exist, each typically involving a series of specified steps or phases. Regardless of the specific SAID_C model chosen, it is crucial to incorporate information security into the OSDL. This ensures the proper safeguarding of the information that the system will handle, transmit, and store. By applying the risk management process to system development, organizations can effectively balance the need for protecting agency information and assets with the associated costs of implementing security controls and mitigation strategies throughout the OSDL.
Risk management processes detect crucial assets and operations, along with weaknesses that affect the entire organization. These risks are not limited to certain system architectures and are often shared throughout the organization. Incorporating security measures into the system development life cycle offers several advantages, such as early identification and resolution of security vulnerabilities and system configuration issues. Consequently, this leads to cost reduction in implementing security controls and addressing vulnerabilities.
The text emphasizes the importance of being aware of potential engineering challenges posed by mandatory security controls. It highlights the need to identify shared security services and utilize security strategies and tools that can lower development costs and enhance the system’s security level using proven methods and techniques. Additionally, it stresses the significance of facilitating informed executive decision making by employing a comprehensive risk management process in a timely manner. Furthermore, it underscores documenting crucial security decisions made throughout the development process to ensure management is informed about security considerations at all developmental stages.
The text emphasizes the importance of improved organization and customer confidence in order to promote the adoption and use of systems. It also emphasizes the need for improved confidence in continued government investment in systems. Additionally, the text highlights the importance of systems interoperability and integration, which can be challenging if security is considered separately at different system levels. Lastly, the text explains that a systems development life cycle consists of various work phases that are followed by systems engineers and developers to plan, design, build, test, and deliver information systems.
The goal of an OSDL is to create high-quality systems that meet or exceed customer expectations, using customer requirements as a basis. This is done by following a clearly defined process with set timeframes and cost estimates. Computer systems are complex, and with the growth of service-oriented architecture, they often connect multiple systems from different vendors.
To manage the complexity of OSDL, various models or methodologies have been created. These include “waterfall,” “spiral,” “Agile software development,” “rapid prototyping,” “incremental,” and “synchronize ND stabilize.” The System Development Life Cycle of OSDL is characterized by stages. Phase 1, the preliminary analysis, aims to propose alternative solutions, outline costs and benefits, and provide a preliminary plan with recommendations. To conduct the preliminary analysis, you need to identify the organization’s objectives and understand the nature and scope of the problem being studied.
It is crucial to grasp the overall objectives of the organization, even if a problem is confined to a specific segment. This understanding aids in assessing how the problem relates to these objectives. By examining the organization’s goals and specific concerns, potential solutions may already be found. Further suggestions can arise from interviews with employees, clients, suppliers, consultants and by studying competitors’ practices. With this information at hand, there are three available options: maintaining the existing system, improving it or developing a new system.
The text elaborates on the different phases of software development, such as systems analysis, requirements definition, systems design, development, integration, and testing. Each phase plays a role in establishing project objectives, comprehending user requirements, identifying desired functionality and operations, coding, and ensuring flawless performance.
Acceptance, installation, deployment are the final stages of initial development, where the software is put into production and runs actual business. During the maintenance stage of the OSDL, the system is assessed to ensure it does not become obsolete. This is also where changes are made to the initial software. Maintenance involves continuous evaluation of the system in terms of its performance. Some companies do not view evaluation as an official stage of the OSDL, but it is an important part of the life cycle. The evaluation step is an extension of the Maintenance stage and may be referred to in some circles as Post-implementation Review.
Evaluation of the developed system and the entire process is conducted here. The assessment addresses several questions, such as whether the newly implemented system fulfills the initial business acquirement and objectives, if it is reliable and fault-tolerant, and if it functions according to the approved functional requirements. Besides appraising the released software, it is crucial to gauge the efficacy of the development process. If there are any aspects or stages of the process that management finds unsatisfactory, this is an opportunity for improvement.
Evaluation and assessment is a challenging matter that the company must consider. It is essential for the company to reflect on the process and address any weaknesses. In the disposal phase, plans are created to discard system information, hardware, and software when transitioning to a new system. The objective is to relocate, archive, dispose of, or destroy information, hardware, and software being replaced in a manner that avoids any unauthorized exposure of sensitive data. The disposal activities guarantee a smooth migration to the new system, with specialized attention given to preserving and archiving the data processed by the previous system.
All of this should be done in accordance with the organization’s security requirements. Differentiate from Traditional from object -Oriented Approach. Traditional approaches like waterfall, spiral ace flexibility to deal with object oriented models. The approach of using object – oriented techniques for designing a system is referred to as object oriented design. Object oriented development approaches are best suited to projects that will imply systems using emerging object technologies to construct, manage, and assemble those objects into useful computer applications.
Object-oriented design is the next step after object-oriented analysis, focusing on object modeling techniques. In traditional approaches, the system’s functions, data, and constraints are identified to determine what the system is supposed to do. Requirements analysis techniques typically prioritize either the data or the functions. Requirements are usually documented in a formal specification, which is often organized separately based on data requirements and functional requirements. Testing is conducted at different levels: unit level, integration level, and system level.
Errors found during higher-level testing necessitate modifications at the unit level with subsequent retesting across all lower-level components. The responsibilities for testing at each level are typically assigned to multiple groups. The development team utilizes various techniques, diagrams, and tools in an Object-Oriented approach to generate a solution, such as ML diagrams for project artifacts, distinct design and programming principles, as well as potentially utilizing different project life cycles, including incremental/iterative approaches. Additionally, a use-case driven requirements approach is often employed, which involves a distinct vocabulary when communicating with the customer’s project team.
Different responsibilities for project stakeholders -Additional management issues & concerns rent 2) Discuss the different models or methodology used in System Development A system development methodology refers to the framework that is used to trucker, plan, and control the process of developing an information system. A wide variety of such frameworks have evolved over the years, each with its own recognized strengths and weaknesses. One system development methodology is not necessarily suitable for use by all projects.
Each methodology is best suited to different kinds of projects, depending on technical, organizational, project, and team factors. The waterfall model, a sequential design process commonly used in software development, progresses steadily through the stages of Conception, Initiation, Analysis, Design, Construction, Testing, Production/lamentation, and Maintenance (like a waterfall).
The waterfall development model was derived from the manufacturing and construction industries where making changes after the fact is expensive or impossible due to structured physical environments. Initially designed for hardware development, this model was later adopted for software development as no formal methodologies existed. Software prototyping involves creating incomplete versions of the software program to serve as prototypes.
It is an activity that can occur in software development and is similar to prototyping in other fields, like mechanical engineering or manufacturing. A prototype usually only simulates a few aspects of the final product and may be completely different from it. The incremental build model is a software development method where the model is designed, implemented, and tested incrementally (adding a little bit each time) until the product is complete. It includes both development and maintenance. The product is considered finished when it meets all of its requirements.
This model combines the waterfall model and prototyping methodology. It breaks the product into separate components (builds) which are designed and built individually. Each component is delivered to the client upon completion, allowing partial utilization of the product and reducing development time. Additionally, this approach avoids a large initial capital outlay and long waiting periods. It also helps minimize the impact of introducing a completely new system all at once.
The model has a few problems. It is a risk-driven process model generator for software projects. The spiral model guides a team to adopt elements of other process models, like incremental, waterfall, or evolutionary prototyping, based on the unique risk patterns of a project. RADAR is a software development methodology that prioritizes rapid prototyping over extensive planning. The development of software using RADAR combines planning and writing code simultaneously.
The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements. The advantages and disadvantages of each model are as follows:
Waterfall Advantages:
1. Ideal for supporting less experienced project teams and project managers, or project teams whose composition fluctuates.
2. The orderly sequence of development steps and strict controls for ensuring the adequacy of documentation and design reviews helps ensure the quality, reliability, and maintainability of the developed software.
3. Progress of system development is measurable.
4. Conserves resources.
Waterfall Disadvantages:
1. Inflexible, slow, costly and cumbersome due to significant structure and tight intros.
2. Project progresses forward, with only slight movement backward.
3. Little room for use of iteration, which can reduce manageability if used.
4. Depends upon early identification and specification of requirements, yet users may not be able to clearly define what they need early in the project.
5. Requirements inconsistencies, missing system components, and unexpected development needs are often discovered during design and coding.
Problems are often only discovered during system testing (7). System performance cannot be tested until the system is almost fully coded, resulting in difficulties with maintaining and updating developed software (7). Responding to changes becomes difficult and costly as they occur later in the project’s life cycle (8). The excessive documentation produced by this approach is time-consuming to keep updated (9). Additionally, written specifications are often challenging for users to comprehend fully (10). Overall, this methodology fosters a clear division of responsibility, further exacerbating the gap between users and developers (11).
Prototyping offers several advantages in system development. Firstly, it enhances user participation and communication among project stakeholders. Secondly, it is particularly beneficial for clarifying objectives, validating user requirements, exploring different design options, and investigating performance and the human-computer interface. Additionally, knowledge gained in early iterations can be leveraged in later iterations. Lastly, prototyping assists in identifying confusing or difficult functions and identifying missing functionality.
The disadvantages of incremental development include a lack of strict approval process and control, frequent significant changes in requirements, and designers neglecting documentation. This can result in insufficient justification for the final product and inadequate records for the future.
On the other hand, incremental development allows for delivery of gradually more complete implementations, enabling quicker production of incremental releases. It also offers the potential to exploit knowledge gained in early increments for development in later increments.
The use of written documentation is a way to exert moderate control over the project’s lifespan. However, there are drawbacks to this approach. One drawback is the need for clearly-defined interfaces due to some modules being completed earlier than others. Another drawback is the tendency to prioritize showcasing early success to management, which may result in neglecting difficult problems.
On the contrary, the Spiral model offers several advantages. It facilitates risk avoidance and aids in selecting the most suitable software development methodology based on project risk. Moreover, the Spiral model can incorporate Waterfall, Prototyping, and Incremental methodologies as special cases.
The determination of the appropriate development methodologies for each Spiral iteration is challenging. These methodologies are highly customized for each project, making them complex and limiting their versatility. A skilled and experienced project manager is necessary to determine their application for a given project. Rapid application development (RADAR) offers an operational version of an application earlier than Waterfall Spiral frameworks, focusing on essential system elements from the user’s perspective.
The system design can be quickly changed according to user demands, resulting in a closer alignment with user requirements. This approach generally leads to significant time, cost, and human resource savings. However, there is a risk of lower overall system quality due to increased speed and reduced cost. There is also a danger of the developed system not being aligned with the business due to missing information. Additionally, the project may end up with more requirements than actually needed (also known as gold-plating).