Please enable JavaScript.
Coggle requires JavaScript to display documents.
Programming and Development (Development Approaches (Methodology (Defined…
Programming and Development
Development Approaches
Methodology
Defined repeatable process
Deliverables at each stage of process
Roles and responsibilities assigned
Techniques specified and utilised
Technology
What technologies are available and used
New enabling technologies like cloud-based solutions
IEEE Standard Glossary
Procurement
Process of evaluation, selection, negotiation and purchase of software solutions or services
Management
Planning, monitoring and controlling of activities and processes including Governance
Build or Buy?
Bespoke
Once the only option to automate business proceesses
Make more efficient and reduce costs
Requirements are defined and developers build tailor made solution
Teams created to meet precise needs
Methodologies developed to formalise approach
Ready made
More and more popular
Driven by economies of scale
Minimise costs and time to deliver
Also need to consider potential risks
Two broad approaches
Commercial off-the-Shelf solutions
Open source
Commercial Off-the-Shelf Packages
Ready-made software packages that are purchased, leased or licensed
Generalised software
Specific application areas
Hr management
Accounting
Supply chain management
Advantages
Cost & Time
Quality
Documenetation
Training
Maintenance & Enhancement
Disadvantages
Not 100% fit to requirements
Ownership issues
Vendor's financial stability
Lack of competitive advantage
Limited legal redress
Changing requirements
Open Source Development
Software typically developed and maintained collaboratively rather than by a single software house
The end-product are available to the public, at no cost
Independent developers can gain access to the source code to maintain it for their own organisation
Anyone with the necessary skills can improve, change or redistribute the software free of license fees
Main benefits
Lower cost solution
Provision of ready made solution
Risks
Collaboration is voluntary and therefore quality is voluntary
Customer takes full responsibility for the solution meeting their needs
Customer needs the skills to maintain any changes they have made
Component Based Development
Systems often comprise of series of separate but integrated building blocks or components
Bespoke and / or ready madee
Different platforms and programming languages
A component is defined as
Something that can be deployed as a black box. It has an external specification which is independent of its internal mechanisms.
Exist independently but can be assembled together to build new solutions to provide and use services
Low-level
Designed for extensive reuse across a wide range of systems
Libraries of documented and tested components
Developers use to create applications
High-level
Complete encapsulated applications
Integrate with other applications to create broader scope solutions
Defined Process
Based on defined process control and management model
Extensively used in manufacturing industries
Adopted for software development
The software becomes the product in the manufacturing process
The premise is
Each piece of work is understood
Well defined inputs and outputs
Predictable and repeatable process
Criticism
Increased documentation and bureaucracy
'Cookbook' approach
Steps and activities followed blindly with understanding reason why
Often with disastrous consequencies
Structured Programming
Objective to improve clarity and quality whilst reducing time to develop
Based on three basic programming constructs
Sequence
Selection
Iteration
Each construct having a single entry and exit point
Jackson Structured Programming
Encouraged modular system and program design and associated principles
Coupling- Degree of interdependence between software modules
Cohesion- Degree to which the elements inside a module belong together
Low coupling / high cohesion
Object Oriented Developent
Approach to analysing, designing and developing systems that views the system as a set of objects
Each with defined roles and responsibilities
That dynamically interact with each other to deliver system functionality
Including the representation and manipulation of data
In software terms an object is
A discrete package of functions and procedures
All relating to a particular real-world concept such as an Order, or a physical entity like a car
OOD is based around the concept of objects collaborating directly with each other in order to realise system functionality
Objects can only collaborate by sending messages to each other that invoke one of their operations - a concept known as encapsulation
Isolating objects in this way makes software more manageable, robust and reusable