The document discusses the importance of design in software development. It states that software design is the most important phase and must plan for changes and updates. Good design relies on high-level thinking and modular components. The core goals of design are correctness, optimal resources, modularity and scalability. Agile methodology emphasizes iterative development and customer collaboration.
The document discusses the importance of design in software development. It states that software design is the most important phase and must plan for changes and updates. Good design relies on high-level thinking and modular components. The core goals of design are correctness, optimal resources, modularity and scalability. Agile methodology emphasizes iterative development and customer collaboration.
P Balakrishnan, Associate Professor, SCOPE,VIT Vellore
Software and Good Design Software design is the most important phase of the software development cycle. Thinking about how to structure code before you start writing it is critical. Changes and updates will inevitably arise.
Good software design plans and makes allowances for added
features, algorithm changes, and new integrations. Software and Good Design Good design Good design relies on a combination of high-level systems thinking and low-level component knowledge. In modern software design, best practice revolves around creating modular components that you can call and deploy as needed. In doing this, you build software that is reusable, extensible, and easy to test Software and Good Design Core of good software design Goal #1. Correctness Goal #2. Optimal Resource Consumption Goal #3. Modularity and Scalability Goals #4. Completeness Goal #5. Maintainability Seven Design Principles Abstraction Refinement Modularity Architecture Patterns Data Protection Refactoring Design Thinking and Coding How helpful is Design Thinking in software development: Clarity of Vision: Design thinking steps help in testing the feasibility of a proposed design while building products. Whether it is the functionality or the aesthetic appeal, embracing design thinking in software development ensures all the fronts of the product meet the requirement. Scope for Improvement: strategize: The iterative experimentation and analysis of the design thinking approach take the product prototypes through rigorous testing to understand possible flaws in the design. This iterative process helps in selecting the best prototype and perfecting it. This continuous evaluation ensures that the end product is bringing the best to the table. Agile Methodology Agile Methodology meaning a practice that promotes continuous iteration of development and testing throughout the software development lifecycle of the project. In the Agile model in software testing, both development and testing activities are concurrent, unlike the Waterfall model. Agile Methodology The agile software development emphasizes on four core values. Individualand team interactions over processes and tools Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Agile methodology definition: Agile methodologies propose incremental and iterative approach to software design The Agile process in software engineering is broken into individual models that designers work on The customer has early and frequent opportunities to look at the product and make decision and changes to the project Small projects can be implemented very quickly. For large projects, it is difficult to estimate the development time. Error can be fixed in the middle of the project. Development process is iterative, and the project is executed in short (2-4) weeks iterations. Planning is very less. Every iteration has its own testing phase. It allows implementing regression testing every time new functions or logic are released. In agile testing when an iteration end, shippable features of the product is delivered to the customer. New features are usable right after shipment. It is useful when you have good contact with customers. Testers and developers work together At the end of every sprint, user acceptance is performed SCRUM – Agile framework Differences between agile and design thinking Agile is a method to solve predefined problems, while design thinking focuses on finding the right problems to solve. This is an important distinction, as design thinking provides users with a way to make better choices about the journeys they should follow, not just how best to get there. Agile is a project management method used to build better software, whereas design thinking can be used by anyone to solve any big complex problem that has no clear solution. Agile requires user engagement, but design thinking actually shows you how to do it. Complementing agile with design thinking Agile and Design Thinking are interwoven. Both require teams to get close to the customer, and to seek out their opinions as part of the design process. Design thinking is exploring and solving problems The design thinking process help teams empathize with the customer, “painstorming” the customer’s pain points, wants and needs Lean tests possible solutions which naturally flows into the Lean process of learning, experimenting, and building prototypes, essentially turning design thinking ideas into real world solutions. Agile adapts, pivots and makes changes along the way toward completion This, in turn flows into the Agile processes of review, trial and error, execution and ultimately, delivery.