210 likes | 393 Views
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.
E N D
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