Presentation on theme: "What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design."— Presentation transcript:
What is Software Design?
Systems Development Life- Cycle Planning Analysis Design Implementation Design
Software Design The main aim of design is to develop a solution to a problem. Each problem is specified in the form of a description of the requirements. The designer solves the problem by determining how to meet the requirements. Rather than focussing on writing a program the designer needs to view the system in terms of events and objects.
The Process The design process usually consists of a number of iterations with backtracking between iterations. Backtracking is necessary to make revisions to the system to ensure that it meets the requirements. In designing re-use of previous partial solutions need to be taken into consideration.
The Process On each iteration of the design process the designer must consider the impact of decisions made in the iteration on future iterations. The environment places constraints on the design process, e.g. available resources. This constraints need to be considered throughout the design process. The software designer needs to have an in- depth knowledge the application domain.
Input and Output of the Design Process Input Requirements specification Designer’s input Environmental constraints, e.g. existing software that can be reused, available resources. The output of the process is a program description. Black-box vs. white-box
Why is software design difficult? It is difficult to specify the needs of a software system. Lack of measures to determine whether the system developed is the best system. There are no correct or incorrect solutions to the problem. No immediate method to test the solution. No opportunity to learn by trial and error. Each problem is unique. Can lead to additional problems.
Factors that contribute to the success of a design The designer’s familiarity with the application domain - May have to do additional research. Communication skills in interacting with other members. Identifying project progress The programming language should be chosen based on the features of the design rather than environmental issues such as the programmers’ knowledge.
Teamwork Projects usually involve team work. Project must be divided amongst team members and the components integrated. Modular approach Two types of teams
Factors Influencing Team Behaviour The size of the team. Knowledge of the application domain that team members have in comparison to each other. Organizational issues within a company.
Software Design Process Models Waterfall model – linear processing Prototyping Spiral model – incremental processing
Waterfall Model Feasibility study Requirements elicitation and analyses Analysis Architectural design Detailed design Coding Unit testing Integration testing Operation and maintenance
Prototyping Evolutionary - The system is developed incrementally by changing the requirements iteratively Experimental - A possible solution to the problem is created to define the characteristics of a solution Exploratory - The main aim of the prototype is to identify the user requirements of the problem.
The Spiral Model The spiral model combines the waterfall model and prototyping so as to overcome the limitations of the waterfall model. This model is comprised of four phases: Identify the objectives and constraints of the problem Evaluate the alternatives and risks Develop to meet the identified objectives Review the results and repeat the process if necessary
In Summary Identify requirements and constraints Designers need a comprehensive knowledge of the application domain It is best to design the system incrementally taking the requirements and future extensions of the system into consideration Re-use – making use of existing partial solutions Team work and communication skills
Assessing Design Quality Factors that are taken into consideration with assessing the quality of the product produced by the design include: Reliability - The final system must be complete, consistent and robust. Efficiency - This refers to efficient use of system facilities such as memory, processor time. Maintainability - The design should allow for future modification. Usability - Design of the user interface.
Task 1 For each of the following systems: Define the objects/entities in the domain, the requirements of the system (or how you would obtain these, the constraints of the domain, maintenance that will be needed and which process model you would use to design the system. A rough draft of what you would consider to be a design for the system (1) An interactive word-processor (2) A web-based E-commerce site dedicated to selling sheet music of all types (3) A bank auto-teller network for dispensing cash and providing receipts (4) A computerised version of the game tic-tac-toe