ISB 26504 Software Design and Integration Chapter 01 PDF
Document Details

Uploaded by LawfulBandura
null
Robiah Hamzah
Tags
Summary
These lecture notes cover software design and integration (ISB 26504) and include software engineering best practices, software design principles, and the software development life cycle. Topics include the relationship between design and integration, the importance of software engineering perspectives, and various phases such as requirements analysis, design, implementation, testing, and maintenance.
Full Transcript
ISB 26504 Software Design and Integration Chapter 01 PRESENTATION BY: MADAM ROBIAH HAMZAH SE SECTION Outlines Introduction to software design and integration The relationship between design and integration Importance of software engineering perspectives Understanding the software process...
ISB 26504 Software Design and Integration Chapter 01 PRESENTATION BY: MADAM ROBIAH HAMZAH SE SECTION Outlines Introduction to software design and integration The relationship between design and integration Importance of software engineering perspectives Understanding the software process involves software development life cycle Summary What is Software Engineering best practice? ►The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints ►Note: Process, systematic (not ad hoc), evolutionary… Constraints: high quality, cost, time, meets user requirements 3 Symptoms of Software Development Problems ► Inaccurate understanding of end-user needs ► Inability to deal with changing requirements ► Modules that don’t fit together (integration) ► Software that’s hard to maintain or extend ► Late discovery of serious project flaws (integration) ► Poor software quality (architecture, risks unanticipated) ► The process is not responsive to change (Gantt Charts) ► Unacceptable software performance ► Team members are in each other’s way, unable to reconstruct who changed what, when, where, and why. 5 Checkpoint 1: Choose three(3) methodologies that a development team can consider when proposing the development of a system. You can discuss their key feature and benefits. The choice of methodology should be based on factors such as the project's nature, client preferences, available resources, and the level of uncertainty in requirements. Additionally, a development team may choose to tailor or customize a methodology to best suit the specific needs of a project. What is design? The purpose of design is to produce a solution to a problem: The problem: requirements specification. The solution: your description of how the requirements are to be met. Design is the creative process of describing and transforming a problem into a solution. A set of documents on whose basis a software can be fully programmed. Software Design: Software design transforms user requirements into a detailed and organized blueprint for how a software system will be constructed and function. It encompasses the architectural and structural planning of a software application or system. Key aspects of software design include: Architectural Design: This involves defining the overall structure of the software system. It includes decisions on the type of architecture (e.g., client-server, MVC), modules or components, and their interactions. Detailed Design: This phase dives into specifics. It involves designing individual components, classes, methods, and data structures. This is where algorithms and data structures are defined. User Interface Design: This focuses on creating an intuitive and user-friendly interface. It involves wireframing, prototyping, and creating the visual elements of the software. Cont.. Database Design: Involves designing the database structure, including tables, relationships, indexes, and queries. It ensures efficient storage and retrieval of data. Security Design: This addresses issues of data security, authentication, authorization, and encryption to protect against unauthorized access or breaches. Performance Design: This considers factors like optimization of algorithms, database queries, and system resources to ensure the software performs efficiently. Scalability and Extensibility: Designing the software to handle increased loads or the addition of new features in the future. Testing and Verification Planning: This includes designing test cases, strategies, and approaches for validating that the software meets its requirements. Software Integration: Integration in the context of software refers to the process of combining different software components or systems to work together as a unified whole. It ensures that various modules, subsystems, or external services communicate and function seamlessly. o Integration is crucial for creating complex, multifaceted software systems that can interact with each other and with external services effectively. It ensures that the software functions as intended and provides a seamless experience for users. There are several types of integration: Module Integration: Combining individual modules (or components) of a software system to create a functional whole.This ensures that modules work together correctly. System Integration: Combining different systems or software applications to create a unified and cohesive environment. This could involve integrating multiple software products or platforms. API Integration: Connecting with external services or APIs (Application Programming Interfaces) to utilize their functionalities or exchange data. APIs allow different software applications to communicate. Cont.. Data Integration: Ensuring that data flows smoothly between different components or systems. This could involve data synchronization, data transformation, and data migration. Hardware-Software Integration: Ensuring that the software functions effectively on the underlying hardware. This involves considerations like compatibility, performance optimization, and resource allocation. Enterprise Application Integration (EAI): Integrating various software applications within an organization to streamline business processes. EAI can involve integrating ERP systems, CRM systems, and other enterprise software. Purpose of software design and integration to define how the software will be constructed to satisfy the requirements. Software design is a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation. For assessing user requirements, an SRS (Software Requirement Specification) document is created whereas, for coding and implementation, there is a need for more specific and detailed requirements in software terms. The output of this process can directly be used in implementation in programming languages. Software design is the first step in SDLC (Software Design Life Cycle), which moves the concentration from the problem domain to the solution domain. It tries to specify how to fulfill the requirements mentioned in SRS. Principles of Software Design and Integration Principles of software design and integration to system development Principles of Software Design: · Modularity: Divide the software into independent, interchangeable modules. Each module should have a clear purpose and well-defined interfaces, allowing for easier development, testing, and maintenance. · Abstraction: Hide the implementation details of a module, providing a simplified view of its functionality. This reduces complexity and allows developers to focus on high-level concepts. · Encapsulation: Enclose the data and operations related to a module within a single unit. This protects the internal state of the module and allows for controlled access. · Decomposition: Break down complex problems into smaller, manageable tasks. Each task can be addressed independently, simplifying the overall development process. · Information Hiding: Restrict access to certain data or methods, revealing only what's necessary for interaction with other modules. This enhances security and reduces dependencies. Cont.. Reusability: Design modules in a way that promotes reuse across different parts of the system or in future projects.This can save time and effort in development. Flexibility and Extensibility: Design with the ability to adapt to changing requirements or accommodate new features without major modifications to the existing codebase. Maintainability: Write code that is easy to understand, modify, and debug. This ensures that the software remains manageable over its entire lifecycle. Simplicity: Strive for simplicity in design, avoiding unnecessary complexity or over- engineering.This leads to code that is easier to read, understand, and maintain. Scalability: Design the software to handle increasing workloads or larger datasets. This allows the system to grow alongside the business or user base. Performance Optimization: Optimize critical sections of the code to ensure efficient execution. This includes considering algorithmic efficiency, database queries, and resource utilization. Principles of System Integration: Clear Objectives and Requirements: Define the goals and requirements of system integration clearly. This ensures that the integration process aligns with the overall objectives of the project. Compatibility and Interoperability: Ensure that the different components or systems being integrated can communicate effectively and work together seamlessly. Standardization: Follow industry standards and best practices for integration. This helps in ensuring that the integration is robust, reliable, and maintainable. Testing and Validation: Thoroughly test the integrated system to identify and address any compatibility issues, data inconsistencies, or functional conflicts. · Data Integrity and Security: Implement measures to protect data integrity and security during the integration process, especially when dealing with sensitive or confidential information. Cont.. · Error Handling and Recovery: Design the integration process to handle errors gracefully and recover from failures without causing disruptions to the overall system. · Monitoring and Logging: Implement monitoring tools and logging mechanisms to track the performance and behavior of the integrated system. This facilitates troubleshooting and optimization. · Documentation and Knowledge Transfer: Maintain comprehensive documentation of the integration process, including configurations, interfaces, and dependencies. This ensures that future developers can understand and maintain the integrated system. Change Management: Establish processes for managing changes to integrated systems. This includes version control, change tracking, and roll-back procedures. Scalability Planning: Consider future scalability needs and design the integration to accommodate potential growth in data volume, user base, or system complexity. Fallback and Redundancy: Implement fallback mechanisms and redundancy where necessary to ensure continuity in case of system failures or integration issues. Software design and integration offer several significant benefits to business analysis: Improved Requirement Understanding: Through the design process, business analysts gain a deeper understanding of the technical aspects of the software. This allows for more precise and accurate requirement specifications, reducing the likelihood of misunderstandings or misinterpretations. Alignment with Business Goals: Effective software design ensures that the final product aligns closely with the business objectives and requirements. It helps in creating a solution that directly addresses the identified business needs and challenges. Risk Mitigation: Thorough software design allows for early identification and mitigation of potential issues, such as architectural flaws, scalability problems, or integration challenges. This helps in minimizing risks associated with the development process. Cont.. · Efficient Resource Allocation: By clearly defining the software's architecture and components, business analysts can help in allocating resources effectively. This includes determining the skill sets required for development, testing, and integration tasks. · Cost Optimization: Well-planned software design and integration can lead to more efficient development processes. This can result in reduced development time and costs, ultimately benefiting the organization's bottom line. · Enhanced User Experience: A well-designed software system is more likely to provide a user-friendly and intuitive experience. This, in turn, increases user satisfaction and adoption rates, contributing to the overall success of the solution. · Facilitates Change Management: Through careful design, business analysts can anticipate future changes or updates to the software. This allows for a more agile approach to development, making it easier to adapt to evolving business requirements. Cont.. · Integration of Existing Systems: Integration expertise is crucial for businesses that need to connect new software solutions with existing systems or third-party applications. This ensures a seamless flow of data and processes across the organization. · Scalability and Growth Potential: A well-designed software system is typically more scalable, meaning it can handle increased loads or the addition of new features. This is crucial for businesses that anticipate growth or expansion. · Competitive Advantage: A thoughtfully designed and integrated software solution can provide a significant competitive edge in the market. It allows businesses to offer innovative features, better user experiences, and more efficient operations. · Compliance and Security: Proper software design and integration take into consideration security measures and compliance with industry standards and regulations. This is essential for businesses that handle sensitive data or operate in regulated industries. Limitations and challenges · Complexity and Expertise: Designing and integrating complex software systems requires a high level of technical expertise. Organizations may struggle to find or afford skilled professionals with the necessary knowledge and experience. · Resource Intensive: Effective software design and integration can be time- consuming and resource-intensive. This includes the effort required for thorough planning, development, testing, and deployment. · Costs and Budget Constraints: The process of design and integration can be expensive, especially for large-scale projects. This may pose challenges for organizations with limited budgets. Cont.. Changing Requirements: Business requirements can evolve over time, which may necessitate changes in the design and integration plan. Adapting to new requirements can be challenging and may require additional resources. · Integration Compatibility: Integrating various software components or systems can be complex, especially when dealing with legacy systems or incompatible technologies. Ensuring seamless communication between different elements can be a significant challenge. · Risk of Failure: Poorly designed or improperly integrated software can lead to system failures, data loss, security breaches, or other critical issues. This risk underscores the importance of thorough testing and quality assurance. · Scalability Issues: Inadequate design can lead to scalability problems, where the software struggles to handle increased loads or additional features. This can hinder growth and expansion efforts. · Maintainability and Upkeep: Poorly designed or haphazardly integrated systems can be difficult and costly to maintain over time. This can result in higher long-term operational expenses. Cont.. · Security Concerns: Inadequate design or integration practices can introduce vulnerabilities and security risks. This is particularly critical in industries that handle sensitive or regulated data. · Dependency on External Factors: Integration may require cooperation with third- party vendors, APIs, or external systems. Any issues or changes on the part of these external factors can impact the integration process. · Lack of Documentation: Inadequate documentation of the design and integration process can lead to challenges in troubleshooting, maintenance, and future updates. · User Acceptance and Training: Poorly designed user interfaces or systems may lead to resistance from end-users. Adequate training and support may be necessary to ensure user acceptance. · Legal and Compliance Issues: Failing to consider legal and compliance requirements during the design and integration process can result in legal liabilities and regulatory penalties. Introduction to Software Process The software process is a procedure followed by the development team to produce an application. Requirements Analysis Design Framework Architecture Detailed Design Key: x = main emphasis x = secondary emphasis Implementation Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2. Design (answers “HOW?”) Specifying what the parts will be, and how they will fit together 3. Implementation (A.K.A. “CODING”) Writing the code 4. Testing (type of VERIFICATION) Executing the application with test data for input 5. Maintenance (REPAIR or ENHANCEMENT) Repairing defects and adding the capability Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission. Requirements Phase What does the problem require in Requirements testing terms of the solution? Rapid prototype Written document Mock-up Partial system Customer driven Design Phase How does the product do & what it is supposed to do? Analysis of the problem Developer must make design Structured analysis : decomposing decisions about: problem by how data is manipulated algorithms (acted upon) data representations Object-oriented analysis: decomposing I/O interfaces problem by how data is represented data flow modules Design testing traceability Implementation Phase The software implementation method assures that software engineering builds function as expected in target software and systems environments. It also enables smooth execution for verification and validation activities Implementation testing Code Documentation desk checking Tests test cases reviews Testing Phase Putting it all together Testing Composition order does it meet the specs? Integration testing product testing by SQA interfaces acceptance testing by customer Maintenance Phase In the user’s hands Why? – operation – documentation – turnover Maintenance testing Kinds of maintenance changes – Corrective regression testing – Adaptive – Perfective Retirement – Preventive cost-effective? Requirements Analysis: Text produced e.g., “ … The application shall display the balance in the user’s bank account. …” Compulsory term : shall, should, will Design: Diagrams and text e.g., “ … The design will consist of the classes CheckingAccount, SavingsAccount, …” Implementation: Source and object code e.g., … class CheckingAccount{ double balance; … } … Software Process Phases: Testing: Test cases and test results Personal Finance Example e.g., “… With test case: deposit $44.92 / deposit $32.00 / withdraw $101.45 / … the balance was $2938.22, which is correct. …” Maintenance: Modified design, code, and text e.g., Defect repair: “Application crashes when balance is $0 and attempt is made to withdraw funds. …” e.g., Enhancement: “Allow operation with Pesos.” Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission. Checkpoints 2: What is software design and integration? (2m) The software process is a procedure the development team follows to produce an application. Based on that, explain the design and maintenance phases. (4m) The ATM banking system is an example of a system that implements a concept of system integration. Briefly explain how software design and integration works based on the system description and subsystems involved in this application. (6m) Homework: Refer tutorial 1 Summary Understand what is software engineering best practice What is a software design-workable solution Elaborate on two symptoms of software development problems What is the software process-? 34 Thank you Please send all questions to: [email protected]