Analysis
• involves understanding and documenting user requirements in a clear and unambiguous way. It focuses on the business side and getting the requirements clear.
• Design is about how the new system will meet the requirements.
Good analysis
• Correct scope – clearly understood, documented and agreed with clients.
• Completeness – everything within scoped system should be documented.
• Correct content – documentation correct and accurate
• Consistency – no ambiguity
Design
• is about translating the analysis model into a design model that effectively implements the requirements.
• The focus here is on the technology side and thus effective design should make a system easier to build and more usable and functional for the end-users.
Design Quality
• The designer will be working within a framework of quality criteria, design and development standards, constraints, and be trying to achieve measurable objectives that are specific to the particular system.
Aspects of Design
• OO Detailed Design – software design
• Database Design
• User Interface Design
• Systems (architectural) design
Design can take place at several levels.
• System design is more concerned with architecture
• Detailed software design is concerned with coding
• User interface design is concerned with usability
• Database design is concerned with data integrity, avoiding duplication, and performance
Objectives of Software Design• Functional – does what is required• Efficient – in terms of time and resources• Economical – in terms of money and system resources• Reliable – hardware/software failure, data integrity –
testing important here• Secure• Flexible – configurability, modifiability• Portability- easy to adapt to different platforms• General – is the system general purpose?• Build-able- easy to code and build• Manageable• Maintainable- easy to fix, change, adapt• Usable- easy to use, can achieve desired goals, efficient• Re-usable- code can be re-used easily
How can re-usability, flexibility, maintainability etc. be achieved?
• 2 core principles of software design
• Coupling and Cohesion
Basic Software Design Criteria: Cohesion• Cohesion is a measure of the degree to which
an element adheres to a single purpose. • Good cohesion –software modules ( sections
of code) carry out a clearly defined process or group of processes that are functionally related to one another.
• It does what it says on the tin … and nothing else.
Basic Software Design Criteria: Coupling– degree of interconnectedness or dependency
between modules.• Coupling should be minimal. • The aim is to produce modules which are
independent and can be amended without producing knock-on effects to the rest of the system.
Cohesion in an Object Oriented Design
• Cohesion is the extent to which a class or operation relates to a single purpose.
• Operation cohesion – degree to which an operation focuses on a single functional requirement.
• Class cohesion reflects the degree to which a class is focused on a single requirement.
• Specialisation cohesion – the semantic cohesion of inheritance hierarchies.
• Liskov Substitution Principle – should be able to treat a derived object as if it were a base object.
Coupling in an Object-Oriented Design
• Coupling is the interconnectedness between components.
• This is reflected by the number of links an object has and the degree of interaction an object has with other objects.
• Inheritance coupling describes the degree to which a subclass actually needs the features it inherits.
• Interaction coupling measures the amount of message types an object sends to other objects and the number of parameters passed with these message types.
• Minimising coupling makes reuse easier : Why?
address
NumberStreetTownCountyCountrypostcode
Person
NameAgegender
Company
NameIncomeprofit
Poor Specialisation cohesion(Mc Bennett et al p385)
Is this cohesive?Vehicle
Serial numberModelYear
Getdetails()
New Vehicle
NameManufacturerBase Cost
Getdetails()
Trade in vehicle
Make
Getdetails()
Does the patient need the features it inherits?
Staff member
NameAddressDobRoleSalary
patient
condition
doctor
roster
Is this cohesive?Bank account
ID numberbalance
Getbalance()Lodge()Withdraw()
Current account
Overdraft limitInterest_rate
setoverdraft()Chargeinterest()
Deposit account
Deposit interest rate
addinterest()
Is this cohesive? Does it show inheritance coupling?
Current account
ID numberbalanceOverdraft limitInterest_rate
Getbalance()Lodge()Withdraw()setoverdraft()Chargeinterest()
Deposit account
Deposit interest rate
addinterest()
Logical and Physical design
• Design of the systems architecture will determine some of the choices that are made at lower levels.