Software Development Course Notes PDF

Document Details

Uploaded by Deleted User

Université Constantine 2

2021

Zerari Mounira

Tags

software development software engineering sdlc software

Summary

These lecture notes cover various software development methodologies and models, including waterfall, spiral, incremental, and prototyping models. The notes provide definitions of software, discuss the qualities of good software, and highlight the importance of software engineering in software production.

Full Transcript

GL – Course – Chapter 1 : Problematic & definitions ZERARI Mounira [email protected] Université Constantine 2...

GL – Course – Chapter 1 : Problematic & definitions ZERARI Mounira [email protected] Université Constantine 2 2020/2021. Semestre 4 Course plan Plan: Definition of a software product Objectives of software engineering Qualities of software Concept of a software development life cycle (SDLC) Stages of a software development life cycle. Different life cycle models (waterfall, V-model, prototyping, spiral, incremental). Université Constantine 2 2 Section 1 : Objectives of software engineering Université Constantine 2 3 Definition: Software? The emphasis in software engineering is on both words: Software & Engineering. The problem of building and An engineer is able to build a delivering complex software high-quality product using off- systems on time has been actively the-shelf components and investigated and researched. integrating them under time and budget constraints. Université Constantine 2 4 The problem Leap-year bug: A supermarket was fined $1000 for having meat around 1 day too long, on February 29, 1988. The computer program printing the expiration date on the meat labels did not take into account that 1988 was a leap year. The paranoia of the Y2K bug: at the time, most software handled dates with two digits. When the year 2000 was about to arrive, no one could really predict what would happen. In the end, it was more fear than harm. 1996 Ariane 5 rocket crash – Flight 501: A module was converting 64-bit floating-point numbers into 16-bit signed integers, which caused abnormal engine behavior. The rocket disintegrated after 40 seconds of flight. Université Constantine 2 5 Software as a product Software is a set of information related to processes automatically carried out by a computing device. Software = a collection of executable code, libraries, and documentation. Université Constantine 2 ZERARI Mounira 6 Section 2 : Objectives of software engineering Université Constantine 2 7 Software engineering: Objectives Software engineering is an engineering discipline that is concerned with all aspects of software production. The term software engineering refers to the set of methods, techniques, and tools involved in the production of software, extending beyond just the programming activity. Software Development: Development is the process of transforming an idea or need into a functional software application. The idea is typically generated by a client (user) and developed by a supplier. The client and the supplier can be the same entity. Université Constantine 2 ZERARI Mounira 8 Development difficulty Challenging to Clients have difficulty manage both the describing their needs clearly project and the enough for suppliers. team. The requirements Language barrier are continually between technical changing. and non-technical people. Difficulty in identifying errors before product delivery. Université Constantine 2 9 Software engineering: Objectives The objective of software engineering is to enable the development of software that: Satisfies both the client and the supplier Is of superior quality Is delivered within reasonable timeframes Has acceptable costs Université Constantine 2 ZERARI Mounira 10 Section 3 : Qualities of software Université Constantine 2 11 What is 'good' software? Supplier Client Université Constantine 2 12 Qualities of software These factors are sometimes contradictory, and trade-offs should be made based on the context. Université Constantine 2 13 Section 4 : Software development life cycle(SDLC) Université Constantine 2 14 Software development (Definition) Important finding Development is much more than just programming. Software development is not an easy task. Development is a set of activities. Programming (coding) is not development but one of the activities involved in development. There isn't just one way to develop a given software, but several. There is a difference between developing and 'developing well. Development projects are often long and costly (50% of the costs are in maintenance). Development projects often involve several people with different skill sets." Université Constantine 2 15 Université Constantine 2 ZERARI Mounira 16 Software Development: software process A software process is a set of related activities that leads to the production of a software product. There are many different software processes but all must include four activities that are fundamental to software engineering: Software design and implementation: The software meet the specification must be produced. Software specification The functionality of the software and constraints on its operation must be defined. Université Constantine 2 17 Software Development: Activities Products: outcomes of a process activity. For example, the outcome of the activity of architectural design may be a model of the software architecture. Ex: document, planning, code source. Roles: reflect the responsibilities of the people involved in the process. Examples of roles are project manager, configuration manager, programmer, etc. Pre- and post-conditions, which are statements that are true before and after a process activity has been enacted or a product produced. Université Constantine 2 18 Software Development: Activities Université Constantine 2 19 Software Development Life Cycle : Model Software process model: is a simplified representation of a software process. Each process model represents a process from a particular perspective, and thus provides only partial information about that process. For example, a process activity model shows the activities and their sequence but may not show the roles of the people involved in these activities. Abstractions of the process that can be used to explain different approaches to software development. Framework of the process but not the details of specific activities. Université Constantine 2 20 Software Development Life Cycle : Method A method refers to a systematic approach, procedure, or technique used to solve a problem, develop software, or achieve specific goals. It includes the steps, processes, and guidelines that need to be followed to accomplish a particular task. A method provides the "how" to achieve objectives in a structured way. Purpose: To provide a procedure for developing, managing, and maintaining software projects. Examples: Agile Method: An iterative approach focusing on delivering small, functional pieces of software incrementally. Object-Oriented Analysis and Design (OOAD): A method for analyzing and designing software using object-oriented principles. Université Constantine 2 21 Software Development Life Cycle : Method Université Constantine 2 22 Stage of Software Development Life Cycle Université Constantine 2 23 SDLC Model: Waterfall Model Plan-driven process—in principle, you must plan and schedule all of the process activities before starting work on them. The result of each phase is one or more documents that are approved. The following phase should not start until the previous phase has finished. Université Constantine 2 24 Waterfall Model: Strengths Easy to understand, easy to use Provides structure to inexperienced staff Milestones are well understood Sets requirements stability Good for management control (plan, staff, track) Works well when quality is more important than cost or schedule Université Constantine 2 25 Waterfall Model: Deficiencies All requirements must be known upfront Deliverables created for each phase are considered frozen – inhibits flexibility Can give a false impression of progress Does not reflect problem-solving nature of software development – iterations of phases Little opportunity for customer to preview the system (until it may be too late) Université Constantine 2 26 Waterfall Model: When to use? Université Constantine 2 27 V-Shaped SDLC Model A variant of the Waterfall that emphasizes the verification and validation of the product. Testing of the product is planned in parallel with a corresponding phase of development Université Constantine 2 28 V-shaped model: Strengths Emphasize planning for verification and validation of the product in early stages of product development Each deliverable must be testable Project management can track progress by milestones Easy to use Université Constantine 2 29 V-shaped model: Deficiencies Does not easily handle concurrent events Does not handle iterations or phases Does not easily handle dynamic changes in requirements Does not contain risk analysis activities Université Constantine 2 30 V-shaped model: When to use? Université Constantine 2 31 Structured Evolutionary Prototyping Model Developers build a prototype during the requirements phase Prototype is evaluated by end users Users give corrective feedback Developers further refine the prototype When the user is satisfied, the prototype code is brought up to the standards needed for a final product. Université Constantine 2 32 Structured Evolutionary Prototyping Steps A preliminary project plan is developed An partial high-level paper model is created The model is source for a partial requirements specification A prototype is built with basic and critical attributes The designer builds the database user interface algorithmic functions The designer demonstrates the prototype, the user evaluates for problems and suggests improvements. This loop continues until the user is satisfied Université Constantine 2 33 Structured Evolutionary Prototyping Strengths Customers can “see” the system requirements as they are being gathered Developers learn from customers A more accurate end product Unexpected requirements accommodated Allows for flexible design and development Steady, visible signs of progress produced Interaction with the prototype stimulates awareness of additional needed functionality. Université Constantine 2 34 Structured Evolutionary Prototyping Weaknesses Tendency to abandon structured program development for “code-and-fix” development Bad reputation for “quick-and-dirty” methods Overall maintainability may be overlooked The customer may want the prototype delivered. Process may continue forever (scope creep) Université Constantine 2 35 When to use Structured Evolutionary Prototyping Requirements are unstable or have to be clarified As the requirements clarification stage of a waterfall model Develop user interfaces Short-lived demonstrations With the analysis and design portions of object- oriented development. Université Constantine 2 36 Incremental SDLC Model Construct a partial implementation of a total system Then slowly add increased functionality The incremental model prioritizes requirements of the system and then implements them in groups. Each subsequent release of the system adds function to the previous release, until all designed functionality has been implemented. Université Constantine 2 Incremental Model Strengths Develop high-risk or major functions first Each release delivers an operational product Customer can respond to each build Uses “divide and conquer” breakdown of tasks Initial product delivery is faster Customers get important functionality early Risk of changing requirements is reduced Université Constantine 2 38 Incremental Model Weaknesses Requires good planning and design Requires early definition of a complete and fully functional system to allow for the definition of increments Well-defined module interfaces are required (some will be developed long before others) Total cost of the complete system is not lower Université Constantine 2 39 When to use the Incremental Model Most of the requirements are known up-front but are expected to evolve over time A need to get basic functionality to the market early On projects which have lengthy development schedules On a project with new technology Université Constantine 2 40 Spiral SDLC Model Adds risk analysis, and 4gl RAD prototyping to the waterfall model Each cycle involves the same sequence of steps as the waterfall process model 41 Université Constantine 2 Spiral Quadrant: Determine objectives, alternatives and constraints Objectives refer to the goals or desired outcomes that the project aims to achieve in a given iteration. They help define what success looks like and guide the development efforts. Objectives are typically derived from user requirements and project specifications. Examples of Objectives: Implementing specific functionalities (e.g., user authentication, order management). Achieving performance targets (e.g., response time under 2 seconds). Ensuring usability standards (e.g., user-friendly interface). Meeting compliance requirements (e.g., data protection regulations). Université Constantine 2 42 Spiral Quadrant: Determine objectives, alternatives and constraints Alternatives refer to the various options or solutions that can be considered to achieve the specified objectives. This involves exploring different approaches, technologies, methodologies, or designs that can be used to implement the desired features or meet the project goals. Examples of Alternatives: Choosing between different programming languages (e.g., Java vs. Python) for development. Deciding on different architectural patterns (e.g., monolithic vs. microservices). Evaluating whether to build a custom solution or use existing third-party tools. Considering different database management systems (e.g., relational vs. NoSQL). Université Constantine 2 43 Spiral Quadrant: Determine objectives, alternatives and constraints Constraints are the limitations or restrictions that must be considered when planning the project. These can impact how objectives are met and which alternatives are feasible. Constraints can be technical, operational, financial, or related to time. Examples of Constraints: Technical Constraints: Limitations due to existing infrastructure, compatibility issues, or technology stack. Budget Constraints: Financial limits that restrict the resources available for development. Time Constraints: Deadlines that dictate the pace at which development must occur (e.g., needing to launch by a specific date). Regulatory Constraints: Compliance with industry standards or legal requirements that impact design or implementation (e.g., GDPR for data handling). Université Constantine 2 44 Spiral Quadrant Evaluate alternatives, identify and resolve risks Study alternatives relative to objectives and constraints Identify risks (lack of experience, new technology, tight schedules, poor process, etc. Resolve risks (evaluate if money could be lost by continuing system development Université Constantine 2 45 Spiral Quadrant Develop next-level product associated with the development and validation quadrant. This phase focuses on transforming plans and designs into a working product. Objectives Implement Features: The primary goal is to develop new functionalities or improve existing ones based on feedback from previous iterations. Refinement: Continuously refine the product by incorporating changes and enhancements identified in earlier phases or from user feedback. Quality Assurance: Ensure that the product meets quality standards through testing and validation processes. Université Constantine 2 46 Spiral Quadrant Develop next-level product Activities take place: Coding: Writing the actual code for new features, enhancements, and bug fixes. Following coding standards and best practices to ensure maintainability. Integration: Integrating new components with existing ones, ensuring that the product functions as intended. Verifying compatibility with different systems, platforms, or environments. Testing: Conducting various testing types, including unit testing, integration testing, system testing, and user acceptance testing (UAT). Identifying and fixing defects based on test results and user feedback. Prototyping (if applicable): In some cases, creating prototypes for specific features that require further validation before full development. Université Constantine 2 47 Spiral Quadrant Plan next phase This quadrant involves planning based on the outcomes of the previous iteration, including user feedback, test results, and project progress. Objectives Assess Progress: Evaluate what has been achieved in the current iteration against the planned objectives. Identify Changes: Determine any necessary changes or enhancements to the product based on feedback and testing. Plan for Next Iteration: Establish clear goals, activities, and timelines for the next phase of development. Université Constantine 2 48 Spiral Quadrant Plan next phase Key Activities Review of Objectives and Deliverables: Assess whether the objectives set in the previous iteration have been met. Evaluate the quality and completeness of the deliverables produced. Gathering Feedback: Collect feedback from stakeholders, including users, testers, and project sponsors. Conduct meetings or surveys to gather insights on the product's performance and areas for improvement. Risk Assessment: Re-evaluate risks identified in the previous iterations and assess any new risks that may have emerged. Update the risk management plan to incorporate strategies for mitigating these risks. Defining New Objectives: Set new objectives for the upcoming iteration based on the feedback and evaluation conducted. Prioritize features or enhancements to focus on during the next phase. Resource Planning: Determine the resources (e.g., personnel, tools, budget) required for the next iteration. Allocate tasks and responsibilities among team members. Université Constantine 2 49 Spiral Model Strengths Provides early indication of insurmountable risks, without much cost Users see the system early because of rapid prototyping tools Critical high-risk functions are developed first The design does not have to be perfect Users can be closely tied to all lifecycle steps Early and frequent feedback from users Université Constantine 2 50 Spiral Model Weaknesses Time spent for evaluating risks too large for small or low-risk projects Time spent planning, resetting objectives, doing risk analysis and prototyping may be excessive The model is complex Risk assessment expertise is required Spiral may continue indefinitely Developers must be reassigned during non-development phase activities May be hard to define objective, verifiable milestones that indicate readiness to proceed through the next iteration Université Constantine 2 51 When to use Spiral Model When creation of a prototype is appropriate When costs and risk evaluation is important For medium to high-risk projects Long-term project commitment unwise because of potential changes to economic priorities Users are unsure of their needs Requirements are complex New product line Significant changes are expected (research and exploration) Université Constantine 2 52

Use Quizgecko on...
Browser
Browser