Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

CS2043 cheat sheet allowed for final exam, Study notes of Computer Science

CS2043 cheat sheet allowed for exam.

Typology: Study notes

2021/2022

Uploaded on 06/01/2023

abdel-ghanem
abdel-ghanem 🇨🇦

1 document

Partial preview of the text

Download CS2043 cheat sheet allowed for final exam and more Study notes Computer Science in PDF only on Docsity! Slide 1 definition of software engineering and why we need it. Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, deployment, operation, and maintenance of high-quality software with limited resources. Software engineering practices aim to shift developers from writing programs to building systems. As the size and complexity of a system grows, and/or as more people become involved in development, adhering to software engineering practices help us to manage the effort. Chaos report’s most costly contributors to project failures are lack of user input, incomplete or changing requirements, lack of resources. Code of ethics: 1. Public – Software engineers shall act consistently with the public interest. 2. Client and Employer - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. Product - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment. 5. MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues. 8. SELF – Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. Slide 2 What Software Engineers should pay attention to today.  Choose and properly use a variety of programming languages & application frameworks  Choose and adhere to a variety of development methodologies  Work towards engineering high quality software o Product quality attends mostly to Verification and Validation, but also Product-in-use o Process quality attends to Productivity, Effort Estimation, Development Pace Sustainability etc.  Software engineers are able to communicate with management, developers, and clients  Software engineers focus on requirements as delineated by clients  Software engineers carefully choose technologies to support their management, development, deployment and maintenance efforts  Software engineers are involved in the deployment, operational training, evolution and maintenance of the software they develop Informed Design Effort – with tools like Gantt, Burndown, and PICK Informed Effort to Ensure Quality – with quality control, Product quality attends mostly to Verification and Validation, but also Product-in-use. Process quality attends to Productivity, Effort Estimation, Development Pace Sustainability etc. Informed Effort to Uphold Ethics and Equity Standards – with diversity, equity and inclusion. Respect Pyramid: |TOP|Delightful (Human Experience), |MIDDLE| Functional convenient & reliable (Human Effort), |BOTTOM| Decentralised, private, open, interoperable, accessible, secure & sustainable (Human Rights). Slide 3 Follow Coding Conventions, Conventions are standard practices that all developers on a team agree to follow. Some are common practices, while others can be specific to a team. Slide 4 Software development life cycle = Requirements > Architecture > Design > Implementation > Testing > Deployment > Support or Decommission > loop. Fundamental software engineering activities Software Specification – The functionality of the software and constraints on its operation must be defined. Software Development – The software to meet the specification must be produced. Software Validation – The software must be validated before to ensure that it does what the customer wants. Software Evolution – The software must evolve to meet changing customer needs. Process Model is a description of what tasks need to be performed, in what sequence, in what conditions by whom to achieve the “desired results.” This is useful to provide a guidance for systematic coordination and controlling of the task and the personnel who performs the task. Waterfall Development Cycle = Requirements > System Analysis & Design > Implementation > Testing & Verification > Integration & Packaging. > loop (Incremental and Traditional) Incremental Development Cycle starts with a fully formed vision of the final product and then its built piece by piece. Iterative Development Cycle starts with a conceptual vision of the final product, then it gets more detail the more its built. Rational Unified Process/Development (RUP) is both iterative and incremental. Key guiding practices for RUP: Manage requirements > Develop Iteratively > Model Quality > Use Component Architecture > Control Changes. Pros of Modern Development Process – RUP The Iterative approach to the elaboration, construction, and transition phases enables you to incrementally define the requirements and assemble the application. The elaboration iterations focus on risks and risk mitigation to improve the project’s chance of success. It can accommodate different development models flexibly. For example, can use series of waterfall and agile in construction phase. The inception and elaboration phases generate a lot of documentation that can help new developers join the team later. It can enable incremental releases if wanted. Cons of Modern Development Process – RUP It’s complicated, which requires more resources than simpler approach. Risk Analysis can be difficult. The complication isn’t always worth the effort, particularly for low-risk projects. It doesn’t work well with small projects. Slide 5 Problems with “Traditional” Processes Focused and oriented towards “large projects” and lengthy development time. (years). – Started SWE Inability to cope with changes in requirements and technology fast enough. Assumes requirements are completely understood at beginning of project. Starting to rely on non-sustainable heroic and lengthy development effort by the developers – Hard to maintain constantly high productivity. Complex set of activities. Waste or duplication of effort, especially in documentation. Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contact negotiation Responding to change over following a plan. Agile Principles Working software is the primary measure of progress. Agile processes promote sustainable development. Continuous attention to technical excellence and good design enhance agility. Simplicity – the art of maximizing the amount of work not done – is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective. Then tunes and adjusts its behaviour accordingly. Key Practices guiding Agile. Short releases and iterations > Develop incrementally > involve users > document minimally > communicate continuously but informally > embrace change. XP release cycle Evaluate system > select user stories for this release > break down stories to tasks > plan release > develop/integrate/test software > release software > loop. XP Role – Customer, Tracker, programmer, coach, tester, administrator. XP Core Values - Communication, Simplicity, Feedback, Courage XP Fundamental Principles – Rapid feedback, Simplicity, Incremental change, Embrace change, Quality work. Crystal Family Methodology Crystal Clear – for “non-critical” projects (6-8 people) Crystal Orange – for “critical” projects (up to 40 people) Crystal Orange Web – for web development. Crystal Clear has one team, working in same room. There are at least four people being sponsors, senior designer, programmer, and user. Work products are nine items, including schedule, use cases, design sketches, test cases and user manuals. The maximum release length is 2 months. Crystal Orange has different teams for system planning, project monitoring, architecture, technology, functions, infrastructure, and external testing. Fourteen roles played by different people, + crystal clear roles + project manager, sponsor, business expert, architect, design mentor, tester, and UI designer. Thirteen work products + crystal clear + requirements documents, status reports, UI design documents, and interteam specs. Work Products are developed until they are understandable, precise, and stable enough for peer review. Maximum release length is 2-4 months, two user viewings per release. Scrum - Incremental and iterative development approach. Develops small sprints in short cycle of 2-3 weeks. Scrum Process Approach Vision > Product Backlog > Sprint Backlog > 2-4 week sprint > Daily scrum meeting > Potentially shippable product increment. Kanban Core Practices - Make the project status and the workflow visible. Minimize the overall WIP in the process. Manage the overall workflow via measuring the tasks and items in development. Make the process explicit and clear. Ensure there is a feedback loop for properly monitoring and controlling the flow of the project. Ensure and improve collaboration. Agile Summary – Small teams, requirements gathering, requirements validation, repeated customer, constant integration and testing, informal review and communication, short iterations and deferring complicated features. Main Points of Each Methodology XP – Requires high discipline and adherence to principles and practices. Based on four core values (communication, simplicity, feedback, courage). Five fundamental principles (rapid feedback, Simplicity, Incremental change, Embrace change, quality work, and 12 practices. (high agility, discipline) Crystal Clear – Does not require adherence to all principles. Based on 7 principles: frequent delivery, reflective improvement, close communication, personal safety, focus, easy access to expert users, and a good technical environment. Will only work for small team projects. (high agility, low discipline) Crystal Orange – Suitable for larger projects. It has different teams for different functions. Not suitable for large or life-critical projects. (Medium agility, discipline) Scrum – most popular agile process. A disciplined methodology that can be adapted and combined with other techniques. It provides clear visibility to the project status and, in the long run, reduces the effort spent on project management. (High agility, discipline) RUP – Framework, instantiated as a very heavy process. Can be pared down to a relatively agile process. (Low to Medium agility, high discipline) Kanban – Minimize work in progress. Use visual cards for each task. Pull activities forward when needed by focusing resources on them. (high agility, low discipline) Slide 6 Requirements – the statements that describe what the software system should be but not how it is to be constructed. Requirements engineering – A set of activities related to the development and agreement of the final set of requirement specifications. Requirement activities – Elicitation, Documentation and Definitions, Prototyping, Analysis & Organization, Specification, Review and Validation, Negotiation and Acceptance. Analysis requirements – Checking for consistency (there are no contradictions), Checking for Completeness (there are no ambiguities) Slide 7
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved