Copy of SOFENG QUIZ REVIEWER.pdf

Document Details

Uploaded by Deleted User

Tags

software engineering software development ethical practices engineering principles

Full Transcript

MODULE 1 - Engineers shall be fair and supportive of their SOFTWARE DEVELOPMENT colleagues. - process of designing, coding, testing, and 8. SELF maintaining software. - Engineers shall part...

MODULE 1 - Engineers shall be fair and supportive of their SOFTWARE DEVELOPMENT colleagues. - process of designing, coding, testing, and 8. SELF maintaining software. - Engineers shall participate in lifelong learning - it involves multiple stages and requires and promote an ethical approach to the various skills. practice of the profession. - professional software development goes beyond just writing code. SOFTWARE PROCESS MODELS - are frameworks for organizing software IMPORTANCE OF SOFTWARE development. ENGINEERING - they define stages, activities, and workflow Ensures the development of reliable of software projects. efficient software systems. - Different models suit different types of Helps manage large-scale and complex projects and development environments. projects. Improves software quality and reduces PROGRAMS maintenance costs. - software are “programs” Facilities teamwork and collaboration in - it has an algorithm software development. SOFTWARE SOFTWARE ENGINEERING CODE OF - includes program, documentation, and ETHICS configuration data. Developed by ACM and IEEE-CS - System & user documentation Guides professional conduct in software - bunch of instructions that tell you what to do. engineering. - set of instructions. Emphasizes public interest, client and employer interest, product quality, and SOFTWARE CHARACTERISTICS professional behavior. a. Efficiency (Batter, CPU, RAM) \ - should not waste system resources b. Acceptability (Swiping– up, down, left, KEY PRINCIPLES OF THE SOFTWARE right) ENGINEERING CODE OF ETHICS - must be understandable, usable & 1. PUBLIC compatible. - software engineers shall act consistently with c. Dependability & Security (Data the public interest. This includes ensuring that Trustworthy) software does not harm the public or the - should be consistent when it comes to being environment. reliable, secure, and safe. d. Maintainability (maintenance) 2. CLIENT and EMPLOYER - engineers shall act in a manner that is in the - should evolve to meet changing customer best interest of their client and employer, needs. consistent with the public interest. - “Security Patch” 3. PRODUCT CHROME - engineers shall ensure that their products meet - uses large part of RAM the highest professional standards possible. PHONE 4. JUDGEMENT - CPU gets hot since it consume a lot of - engineers shall maintain integrity and energy. independence in their professional judgment. WINDOWS 5. MANAGEMENT - Ai “Copilot” adding this will meet changing - managers and leaders shall promote an ethical customer needs. approach to the management of software development and maintenance. 6. PROFESSION - Engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES KEY CHALLENGES IN SOFTWARE ENGINEERING 01 Developing trustworthy software - “linear sequential” approach to software 02 Coping with increasing diversity development. 03 Meeting demands for reduced delivery - consist of distinct phases: requirements, design, implementation, testing, times. maintenance. - each phase must be completed before the Try to fix it as soon as possible. next begins. - it flows in a one-directional, cascading manner. COST OF SOFTWARE ENGINEERING - each phase depends on the completion of Development costs: 60% the previous one. - It’s challenging to make significant Testing Cost: 40% changes once a phase is completed. For custom software, evolution cost - suited for projects with well-defined may exceed development costs requirements and where changes during development are expected to be minimal. - meet client once - used when the project is already sure. - this method has its own advantages in a. Personnel Cost: Salaries & Benefits terms of clarity and structure. b. Hardware & Software Costs: Expenses for AGILE METHODOLOGY purchasing or leasing the necessary hardware, - emphasize flexibility, collaboration, and software tools. rapid delivery. - iterative approach with short c. Training & Skill development: Cost for training development cycles (sprints). team members. - focuses on customer feedback and adapting to changing requirements. d. Licensing Fees: fees using third-party software - also referred as “Agile” libraries, frameworks, or tools. - a set of guidelines and procedures for e. Office Space & Infrastructure: Expenses for managing projects and developing providing a workspace, computers, and other software for managing projects and infrastructure for the development team. developing software that place a high priority on adaptability, teamwork, customer satisfaction, and continuous QA (The one who checks and Test) improvement. - Quality Assurance Maintenance - approaches are made to assist teams in - job is to ensure that software passes all adapting to sifting requirements and checks before release to the public. producing valuable software fast and effectively. - a group of iterative and incremental SOFTWARE ENGINEERING software development approaches. TECHNIQUE & METHODS - Popular Agile methods: Scrum, Kanban, - encompasses various techniques and and Extreme Programming (XP) methods that help developers efficiently - Roles: Scrum Master, Product Owner, design, develop, test, and maintain software Development Team systems. - communicating client everyday for improvement - These techniques and methods are used to - much flexible improve the quality of software, manage development processes,, and meet project ITERATIVE & INCREMENTAL goals. DEVELOPMENT - commonly associated with agile methodologies such as Scrum & Extreme Programming (XP). - use iterative cycles, feedback loops, and close collaboration among team members and stakeholders to ensure that product evolves based on actual needs and customer feedback. - particularly well-suited for projects where requirements are not fully known upfront, as it allows for the incorporation of changes as the project progresses. TYPES OF TECHNIQUES & METHODS OTHER SOFTWARE PROCESS MODELS WATERFALL MODEL Examples include Git, Subversion, and Spiral Model: Risk-driven approach with multiple iterations Mercurial V-Model: Testing is parallel to Allows tracking changes, reverting to development stages. previous versions, and collaborative Incremental Model: System is work. developed in increments. CONTINUOUS INTEGRATION & CORE PROCESS ACTIVITIES: CONTINUOUS DEPLOYMENT (CI/CD) REQUIREMENTS ENGINEERING CI: regularly merging code changes to Process of defining, documenting, and production. maintaining requirements. Helps detect issues early and speeds up Involves elicitation, analysis, software delivery. specification, and validation. Critical for ensuring the software meets EMBRACING CHANGE: ADAPTIVE user needs and expectations. SOFTWARE DEVELOPMENT - Focus on quick response to changing DESIGN & IMPLEMENTATION requirements Design: creating a “blueprint” for the - Emphasizes collaboration, learning, and software system. continuous improvement. Implementation: Writing code based - Involves short, iterative development cycles. on the design. Involves choosing appropriate FUTURE TRENDS IN SOFTWARE algorithms, data structures, and ENGINEERING architectures. Increasing use of AI and machine learning in software development. TESTING & DEBUGGING Growth of low-code and no-code Testing: verifying that the software platforms. works as expected. Emphasis on DevOps and cloud-native Debugging: Identifying and fixing development. errors in the code. —---------------------------------------------- Involves various levels: unit testing, TYPES OF SOFTWARE PRODUCTS integration testing, system testing 1. Generic products WEB’S IMPACT ON SOFTWARE - sold to any customer ENGINEERING eg. database, word processors Availability of software services 2. Customized products Development of distributed - by a specific customer service-based systems eg. control system Advancements in programming languages and software reuse 3. Blurring of distinction, with more systems being built by adapting generic products DEPLOYMENT & MAINTENANCE Mac OS Deployment: releasing the software to - is a customized version of Linux. users POS Maintenance: uploading and improving - Piece of System the software post-release. Involves bug fixes, feature updates, and performance improvements. QUALITY OF PROFESSIONAL SOFTWARE COPING W/ CHANGE SOFTWARE Quality extends beyond what the DEVELOPMENT software does Change is inevitable in software Includes software’s behavior, structure, development. and organization Can be due to evolving requirements, Non-functional attributes like response technology updates, or bug discoveries. time and code understandability are Requires flexible process and robust important. change management. VERSION CONTROL SYSTEM SOFTWARE ENGINEERING Tools for managing changes to source - an engineering discipline concerned with all code over time. aspects of Software production. - not just about technical processes, but also to facilitate understanding and includes project management and maintenance. development of tools, methods, and theories. Project Management - involves everything from system - Efficiently managing the software specification to maintaining the system development process, including planning, after use. scheduling, resource allocation, and risk management. SOFTWARE ENGINEERING vs COMPUTER SCIENCE Version Control Software Engineering - Utilizing version control system to track - Deals with practical aspects of and manage changes to the source code, software development. enabling collaboration and codebase Computer Science integrity. - Focuses on theory and fundamentals Deployment and Release Management - Deploying the software in a production SYSTEM ENGINEERING environment and managing the release System Engineering process, including versioning, updates, - Involves hardware, software, and and rollback procedures. process engineering’ Software Engineering - A subset of system engineering KEY ASPECTS OF SOFTWARE Maintenance and Support ENGINEERING - Continuously monitoring, maintaining, and Engineering Discipline improving the software after its initial - Engineers make things work, apply release, including bug fixes, updates, and theories, methods, and tools where user support. appropriate, and work within constraints. Security Requirements Analysis - Implementing robust security measures to - Understanding and documenting the protect against threats and vulnerabilities, specific needs and requirements of including secure coding practices, stakeholders, including both functional authentication, and encryption. and non-functional requirements. Performance Optimization System Design - Tuning the software for optimal - Creating a well-structured and efficient performance, scalability, and resource system architecture that outlines the efficiency. software’s components, their interactions, User Experience (UX) Design and the overall organization of the system. - Focusing on creating a user-friendly and Coding intuitive interface and ensuring a positive - Writing clean, maintainable, and efficient user experience. code in accordance with coding standards Ethical Considerations and best practices, often following design - Addressing ethical concerns related to patterns and software development data privacy, user consent, and principles. responsible use of technology. Testing and Quality Assurance - Conducting through testing to identify and rectify and ensuring that the software meets the desired quality standards. Documentation WHY IS SOFTWARE ENGINEERING - creating comprehensive documentation IMPORTANT? that includes user manuals, technical Helps produce reliable and trustworthy documentation, and inline code comments systems economically and quickly. Society increasingly relies on advanced - a cloud computing model when software software. applications are provided over the internet on Software engineering methods are a subscription basis. usually cheaper in the long run. - in this model, customers don't need to install or maintain the software on their local or SOFTWARE ENGINEERING PROCESS servers. Software Validation: Accessibility - checking the software meets customer - SaaS applications are typically accessible from requirements. any device with an internet connection. Making Software specification: them highly accessible an convenient. - defining the software and its operational Subscription-Based Pricing constraints. - SaaS software is typically offered on a Software development: subscription basis, where customers pay a regular - designing and programming the software. fee (monthly or annually) for access. This often Software evolution: includes updates, maintenance, and customer - modifying the software to meet changing support. requirements. Multi-Tenancy - SaaS providers often use a multi-tenant CHALLENGES IN SOFTWARE architecture, where multiple customers share the ENGINEERING same infrastructure and code base but their data is HETEROGENEITY kept separate and secure. - Systems are required to operate across Automatic Updates networks with different types of devices. - SaaS providers handle software updates, ensuring SECURITY & TRUST that customers are always using the latest and - it’s essential to ensure software is secure and most secure software without needing to manually trustworthy. update it. BUSINESS & SOCIAL CHANGE Scalability - rapid changes require software to be flexible - SaaS applications can usually be scaled up or and quickly adaptable. down easily to accommodate changes in usage or business needs. TYPES OF HETEROGENEITY Managed Security and Compliance HETEROGENEITY - SaaS providers typically invest in security - refers to the quality or state of being diverse, measures and compliance certifications to ensure different, or varied in composition or character. the protection of customer data. It is the opposite of homogeneity, which refers to uniformity or sameness. Collaboration and Integration - Many SaaS applications are designed to facilitate DATA HETEROGENEITY collaboration and can integrate with other software - data analysis & databases describes the services, enhancing their functionality. diversity of data types, formats, and structures within a dataset or database. For example, a database may contain text, numbers, images, CHANGING SOFTWARE and video, all of which are heterogeneous data ORGANIZATION types. Web-based systems are highly distributed. SYSTEM HETEROGENEITY - computing & networking, refers to the Significant software reuse and coexistence of different hardware, software, or component-based development. operating systems within a network or system. Web-based systems are developed and eg. a network might include devices running delivered incrementally. Windows, macOS, Linus, and other operating User interfaces are constrained by web systems, leading to system heterogeneity. browser capabilities. SOFTWARE AS A SERVICE ETHICS IN SOFTWARE SAAS ENGINEERING - Software as a Service - explores the ethical responsibilities and dilemmas faced by software engineers, the role of professional societies in setting ethical shapes to illustrate the steps and decisions standards, and the importance of adhering to involved in that process. a code of ethics. - are valuable tools for depicting processes in a clear and easily understandable manner, making them widely used in various fields such as business, engineering,computer science, and more. FLOWCHART PURPOSES 1. Process Documentation - provide a structure and visual way to document the steps and activities involved in a process, making it easier for individuals to understand, follow, and analyze that process. 2. Analysis and Optimization - help identify inefficiencies, bottlenecks, or redundancies within a process. - This can lead to process improvements and optimizations to make it more efficient and effective. 3. Communication - are effective ways to convey complex processes to others. They are often used to communicate procedures, policies, and workflows to team members, stakeholders, or new employees. 4. Problem-Solving - are valuable tools for troubleshooting and problem-solving. They can help pinpoint the source of issues or errors within a process and guide the resolution of those problems. 5. Decision-Making - flowcharts are used to represent decision trees and alternative paths within a process. They assist in making decisions based on various conditions and criteria. 6. Standardization - help establish and maintain standardized procedures within an organization, ensuring that processes are followed consistently. 7. Training and Onboarding - flowcharts are often used as training materials for teaching new employees or team members the steps involved in a particular task or process. 8. Quality Control - in quality management and manufacturing,flowcharts are used to outline quality control procedures and standards. 9. Software Development - play a critical role in software engineering to visualize algorithms and program logic. They help in the design and development of software applications. 10. Project Management - flowcharts are used in project management to define and illustrate project workflows, timelines, and dependencies. BASIC SYMBOLS USED IN INTRODUCTION TO FLOWCHARTS FLOWCHART DESIGNS FLOWCHART TERMINALS (oval) - a visual representation of a process or system that uses standardized symbols and - are symbols that indicate the “start” or “end” - indicating process sequence and visual links, of a process or flowchart, providing clear entry rather than representing specific actions or and exit points. decisions. - They aid in understanding the scope and - They show how elements are connected and boundaries of the depicted process, making it move from one step to another. easier for readers. INPUT/OUTPUT (parallelogram) - Used to represent the interaction between a process or system and external entities, such as users, data FLOW LINES (arrows) sources, or other systems. - connect symbols and shapes, illustrating the - This symbol indicates the points at processe’s sequential order and logical which data is input into the process or progression, aiding readers in understanding output from the process. the chart’s structure. - represent the direction of flow of control and relationship among different symbols of flowchart. PROCESSING (rectangle) - symbol represents a specific action, task or FLOWCHART RULES operation within a process. It is used to depict - a graphical representation of an a step where data is manipulated, calculations algorithm. are performed, or a particular function is - should follow some rules while creating a executed as part of the overall process. flowchart. - all arithmetic processes such as adding, Rule 1 subtracting,multiplication and division are - Flowchart opening statement must be “start” indicated by action or process symbol. keyword. Rule 2 Flowchart ending statement must be “end” keyword. Rule 3 All symbols in the flowchart must be connected with an arrow line. DECISION SYMBOL (diamond) Rule 4 - represents a point in a process where a The decision symbol in the flowchart is associated with the arrow line. decision or choice needs to be made. - dealing with decision based operations such as yes/no question or true/false. CONNECTOR SYMBOL (circle) SOFTWARE PRODUCT DESIGN: DECISION MAKING FRAMEWORK PROBLEM-SOLVING & DECISION Rational Decision Making Model Pareto Principle MAKING FRAMEWORKS RATIONAL DECISION MAKING PROBLEM SOLVING 1. Identify - a critical process in developing 2. Generate Options - finding solutions to issues & generate 3. Analyze Options solutions 4. Select Best Option 5. Implement Decision DECISION MAKING 6. Evaluate & Learn from decisions. - choosing between possible solutions or Relies on data analysis & objectivity alternatives PARETO PRINCIPLE (80/20 RULE) Both processes overlap & work together. - 80% effects and 20% causes. - focusing on high-impact areas. POPULAR PROBLEM SOLVING FRAMEWORK SWOT ANALYSIS Root Cause Analysis: - Strength - identifies the core issue - Weaknesses Circles: - Opportunities - 7-steps process focusing on user needs (used - Threats by google) Phoenix Checklist: RICE MATRIX - Question-based CIA method - prioritize product features or initiatives - Confidentiality, Integrity, Availability - RICE = Reach, Impact, Confidence, Effort Lightning Decision: - helps objectivity compare different options. - Ideal for remote teams Reach less, bigger impact, medium, less DMAIC: effort. - Six Sigma approach (Define, Measure, Analyze) PROTO-PERSONA - assumption-based representation of users. DESIGN THINKING - created early in the design process. - “human centered approach” (brainstorm) - visualize users without in depth research. - empathize, define, ideate, prototype, test - ideal for fast-paced, agile environments. THE 5 WHYS TECHNIQUE - to have a clear & more define answers PROTO-PERSONA vs FULL-PERSONA Each question you asked dig deeper & deeper. PROTO-PERSONA MIND MAPPING - Quick assumption, “evolve over time” - Visual representation of your idea. FULL-PERSONA - connected/relevant about the topic. - In-depth research-based “require extensive user research” ROOT CAUSE ANALYSIS - Systematic approach to identifying Both aim to present user needs and underlying cause. behaviors - “investigating” the “root cause” - “branching out the causes” STEPS - not all solutions are good. 1. Identify User Assumptions FISHBONE DIAGRAM - gather assumptions from team members and - also known as “Ishikawa diagram” or “Cause stakeholders. & Effect”. - Consider users’ behaviors, needs, and goals - A visual tool for organizing causes of a - Leverage unique insights from each team member problem. - Be open to diverse perspective - resembles a fish skeleton with main cause as “bones” 2. List Hypotheses - helps identify & categorize potential causes - formulate hypotheses about user’s motivations of an issue. - Consider potential pain points - base on teams’s beliefs about users. - to know why your problem exists. - remember these need validation later 3. Segment Users - group users based on shared attributes - consider demographics, behaviors, or needs - look for patterns in your assumptions - create distinct user groups 4. Visualize the Proto-Persona - create visual representation for each proto-persona - include key details like goals, frustrations, characteristics - use a consistent format for all proto-personas - make it visually engaging and easy to understand BENEFITS OF PROTO-PERSONAS Facilitate early design concepts Gain alignment among team members Provide a shared understanding of potential users Enable quick decision-making in early stages. Foster user-centered thinking from the start. IMPORTANCE of “VALIDATION” - to know if what you’re doing is right/correct.

Use Quizgecko on...
Browser
Browser