Feeds:
Posts
Comments

Posts Tagged ‘Software Development’

Identifying software needs to avoid undesirable consequences

 BOLD = Default choice if none given (does not mean this choice is the recommendation of the development group)

 

SOFTWARE CODE

Intellectual Property Rights

ð       Source code to become part of the Public Domain – No protection for source code

ð       Source code is to be Open Source – Source code and releases could be done with a website

ð       Source code must be copyrighted

ð       Source code must be kept secret – Source must be encrypted and executable secured

Importance of Source Control for Code

ð       Only end result is needed and code will be entirely redeveloped if application is needed again – No Source Control

ð       Having the source code for the delivered programs is not needed but would like to maintain the code for review and understand that code will likely be lost or destroyed – Manual Source Control

ð       Project is not of high importance but the source code which were used for particular releases should be maintained –Source Control Required, but does not need to be administered

ð       Project is important and all source code during development must be maintained to enable branching of source code, historical tracking of changes, and fixing of code bugs – Administered Source Control Required

Importance of Code Quality

ð       Code will be developed to solve the specific problem only and may not be changeable, readable, reusable, or understandable – Code quality is not important

ð       Code must be readable, but may require significant study to understand

ð       Code must be readable and logically structured

ð       Code must be immediately understandable and will be used to build a significantly larger system

 

SOFTWARE ARCHITECTURE

Software Failure Tolerance

ð       Failure is expected for some percentage of executions – No attempt will be made to recover from failure of the software

ð       Failure is not expected and should be minimized – Software should immediately fail upon any error and notify user/administrator

ð       Failure would be damaging and actions should be taken to mitigate the damage – Software Redundancy

ð       Failure would be catastrophic and actions should be taken to reduce chance of failure – Software and Hardware Redundancy

Software Resource Usage – Efficient utilization of Processing, Storage, Network, etc.

ð       There will be no desire to scale up the software and execution is not time sensitive – Software resource usage is not important

ð       Software resource usage is fixed but must be understood

ð       Scalability of the software is required – adding additional processing, storage, and network capacities will increase the abilities of the software

ð       Software must be massively scalable – adding additional processing, storage, and network capacities will increase the abilities of the software and the software is written to maximize the utilization of these resources

 

EXTERNAL SYSTEM DEPENDENCIES

Dependency of software on other systems

ð       Software will fail without warning if an any external system is unavailable or does not function properly

ð       Software will not function properly without external systems, but will notify user or administrator of the failure

ð       Software will be usable without relying on external systems, but will lose functionality

ð       Software will be fully independent of external systems – any failure of external systems will not be noticeable by the software user but will be reported to administrators for review

 

DATA REQUIREMENTS

Security of system data

ð       Data will not be secured and will be considered available to the public

ð       Access to the data must be limited to desired people, but those people will be physically able to release the data to the public

ð       Access to the data must be limited to desired people and to limited sets of information

ð       Data must be accountably secured for usage by a small number of individuals

Integrity of the data

ð       The data will be used for a limited time and its meaning will be highly dependent on external context and knowledge – Spreadsheets or limited database

ð       The data will be used for an extended period of time but not be protected from unintended alterations and its meaning will be highly dependent on external context and knowledge – Database with limited schema

ð       The data will be used for an extended period of time, protected from unintended alterations, with meaning that is not dependent on external context and knowledge – Database with well designed schema

Recovery of the Data

ð       Data loss will be unrecoverable but not important

ð       Data will be backed up periodically (days/weeks/months) or on request to allow recovery of data if a problem occurs

ð       Data interaction will be fully recoverable requiring an administered transactional database system

Data Processing Requirements

ð       System will process no data or small amounts of data and performance will not matter

ð       System will process data but will not be time sensitive

ð       System will process small volumes of data and will be time sensitive

ð       System will process large amounts of data and will be time sensitive

 

SOFTWARE DEVELOPMENT REQUIREMENTS

Software Architecture

ð       The architecture is not important – no consideration will be given to a proper architectural design

ð       A new unknown (to the development team) architecture will be created without resources given for proving out the design

ð       A new unknown (to the development team) architecture will be created with resources given for proving out the design

ð       System will be built of a known architecture which has been used previously

System Complexity

ð       Complexity of the system and software will not be a consideration – Software will tend to extremely complex even for simple systems

ð       System complexity will not be important as long as the code is readable

ð       It is desired that reducing the system complexity will be considered a significant factor as part of the design

ð       The system must be simple and easily understandable – Requires developers with considerable experience

Development Tools

ð       Development is not dependent on usage of particular development tools – development group is free to choose highly effective tools without consideration of cost

ð       Development is not dependent on usage of particular development tools, but development group must take cost of tools into consideration

ð       Development is dependent on usage of particular development tools, but the development group is free to choose the most highly effective tools within the dependency set without consideration of cost

ð       Development is dependent on usage of particular development tools, and the development group must take cost of tools into consideration

ð       Development tools must be free of cost even if it greatly increases development costs

Development Support Requirements

ð       No support of the system will be necessary after delivery or will come at significant cost and will not be timely – Zero support requirements

ð       Support of the system will likely be necessary but the cost must be minimized at the expense of timeliness – Volunteer support

ð       Immediate support of the system will be necessary but at lowest possible cost – Dedicated Volunteers or paid Intern support

ð       Immediate support of the system will be necessary even at higher cost – Dedicated professional support required

Advertisements

Read Full Post »