Showing posts with label Developer. Show all posts
Showing posts with label Developer. Show all posts

2016-04-14

About_SoftwareDesign

Great Article

http://www.csharpstar.com/software-design-overview/

Software Design Overview

In this article, we will discuss:

  • Introduction to Software Design
  • Software Design Principles
  • Software Design Considerations
  • Software Design Process
  • Software Design Strategies and Methodologies

In this article, we will understand what is software design in real IT world and why is it important ?

What is Software Design?

Software Design

“Software design is the process of implementing software solutions to one or more set of problems. One of the important parts of software design is the software requirements analysis (SRA). It is a part of the software development process that lists specifications used in software engineering. ” ~Wiki


“Software Design describes how software is decomposed and organized into components and the interfaces between those components. It also describes the component at a level of detail that enable their construction.” ~IEEE Definition


In my own words:

“Software Design is the process of Analysing system requirements to enable building components and interfaces between those components.”



Software Design Principles:

Software Principles
  1. Abstraction

    • Process of Identifying the essential behavior, eliminating irrelevant details
  2. Coupling

    • Low coupling is recommended for good design
    • Advantages of loosely coupled system is changes in one module does not cause changes in other modules but in tightly coupled system, changes to one module causes changes in other modules.
  3. Modularity

    • System decomposed into a set of highly cohesive and loosely coupled modules
  4. Encapsulation

    • Abstraction is mainly achieved through information hiding.Objects encapsulate data and implementation details
  5. Cohesion

    • Modules with high cohesion is recommended because high cohesion is associated with characteristics such as robustness, reliability and reusability
  6. Sufficiency & Completeness

    • Ensuring the completeness and sufficiency of software with respect to given requirements
Also we need to follow SOLID principles. You can read more on SOLID principles here.

Software Design Considerations:

Software Design Considerations

Software Design Process:

Software Design Process

Architectural Design Decisions:

  • This is the stage between requirement specification and actual designs where we decide:
    • How to decompose the system into modules?
    • How the system will be distributed?
    • Which approach should be followed to define the system?
    • Which platform to be used?
    • WHat would be the communication topology etc..

Logical and Physical Design Decisions:

  • In this stage the more detailed description for the component and sub component is provided
  • Logical design is more theoreetical and abstract than physical design

Software Design Strategies and Methodologies:

There are 2 major design methodologies.
  • Structured or functional decomposition
  • Object oriented approach

Structured Design Methodologies:

  • This is a systems approach to the analysis and design of information systems
  • There are multiple stages involved in it
Stage 1: Feasibility study
This is required to determine whether or not a given project is feasible.
Technical – is the project technically possible?
Financial – can the business afford to carry out the project?
Organizational – will the new system be compatible with existing practices?
Ethical – is the impact of the new system socially acceptable?
Stage 2: Analysis on the Current environment
This is required to validate if the current environment can support the expected changes.
Stage 3: Reuirement Specifications
In this stage, The requirement needs to be specified to build the new system
Stage 4: Technical System Options
  • the hardware architectures
  • the software to use
  • the cost of the implementation
  • the staffing required
  • the physical limitations such as a space occupied by the system
  • the distribution including any networks which that may require
  • the overall format of the interface
Stage 5: Logical Design
The product of this stage is the logical design which is made up of:
  • Data catalogue
  • Required logical data structure
  • Logical process model – includes dialogues and model for the update and inquiry processes
  • Design document at component and sub component level
Stage 6: Physical Design
This is the final stage where all the logical specifications of the system are converted to descriptions of the system in terms of real hardware and software

Object Oriented Design Methodologies:

The five basic concepts of object-oriented design are the implementation level features that are built into the programming language.
These features are often referred to by these common names:
1. Object/Class: A tight coupling or association of data structures with the methods or functions that act on the data. This is called a class, or object (an object is created based on a class). Each object serves a separate function. It is defined by its properties, what it is and what it can do. An object can be part of a class, which is a set of objects that are similar.
2. Information hiding: The ability to protect some components of the object from external entities.
3. Inheritance: The ability for a class to extend or override functionality of another class. The subclass has a whole section that is derived (inherited) from the superclass and then it has its own set of functions and data.
4. Interface: The ability to defer the implementation of a method. The ability to define the functions or methods signatures without implementing them.
5. Polymorphism : The ability to replace an object with its subobjects. The ability of an object-variable to contain, not only that object, but also all of its subobjects.

The input artifacts for object oriented designs are:
  • Conceptual model
  • Use case
  • System Sequence diagram
  • Relational data model etc..

We will look at each of the software design methodologies/strategies  in detail in next articles

2010-03-18

About iPhone

Optimizing Your Project
There are different people on your team list.
Create a list and register them on AppleDevSite as a developer, create your project list to upload (i.e. StarRD.txt) in your porta;
FirstName   LastName   Email
Joe    Doe    joe.doe@mail.com

There are developer certificates for each team member.
Once each of your team members has created a Certificate Signing Request (i.e. EnriqueEscobar.CertSigningRequest) you may submit uploading at AppleDevCenter.

There is an app ID to provide as com.domain.YourAppID.

There is a provisioning to set. You will need:
  • ProfileName
  • Certificate (a list of registered developers)
  • AppID
  • Device (list of device to register)

There is to validate the developer certificate once your portal admin has accepted you.
Retrieve and install in your own OSX machine the AppleDeveloperCertificate (AppleWWDRCA.cer) and your certificate (developer_identity.cer), you may download it at AppleDevSite.



There is a mobileprovision to deploy.

There are different configurations:

There is a configuration to manage in XCode for your your ProjectName:

  • Right click and choose GetInfo dialog ( or command I)
  • Select tab Configuration
  • On list of configurations choose Release and select the option Duplicate
  • Give a name to this configuration (i.e. Distribution)
  • Close window
There is a Target Information to set:
  • Right click and choose GetInfo dialog
  • Select Build tab
  • Choose Distribution from Configuration drop-down
  • In the Architectures section in the list of settings, choose a Base SDK (e.g. Device - iPhone OS 2.2.1)
  • From the Code Signing Section, under Code Signing Identity, choose the appropriate profile (e.g. Ad Hoc or Distribution Profile)
  • Select Properties tab
  • Set Executable name (e.g. theAstrologerFree). There is a default value here: ${EXECUTABLE_NAME} which will also work for most projects
  • Set Identifier to com.domain.application-name (e.g. com.3SixtySoftware.theAstrologerFree). There is a default value here: com.your company.${PRODUCT_NAME:identifier} which you may work for your project. If you run into errors or conflicts with other applications try replacing ${PRODUCT_NAME:identifier} with a unique string that represents your application name
  • Set Icon File to Icon.png
  • Make sure you have an icon that is 57x57 pixels, with the name Icon.png in the project
  • Set Version # (e.g. 1.1)
  • Close the window
For each active configuration you have to update your project:

There are an Active Configuration to set:
  • Select the Debug workspace button
  • From the drop-down (upper left) choose:
    • Choose the Device Setting you plan to target under Active SDK (e.g. Device - iPhone OS 2.2.1)
    • Choose Distribution as the Active Configuration
  • Select the Project workspace button (the button to the left of Debug)
  • If creating an Ad Hoc Distribution:
    • Create new file (Command N), select Code Signing, choose Entitlements, click Next
    • Name the file Entitlements.plist
    • Uncheck the get-task-allow button
    • Save file
    • Make sure the file is at the root of project hierarchy (e.g. drag the file just below the Project name)
    • Select the Target
    • Right click and choose Get Info dialog
    • Select Build tab
    • Fill in the Code Signing Entitlements with Entitlements.plist
There is a target settings verification to do:
  • Select the Target
  • Right click and choose Get Info dialog
  • Select Properties tab
  • Note the Executable name (e.g. theAstrologerFree)
  • Select Build tab
    • Scroll down to Packaging
    • Verify (or input) the Product Name to match the Executable name from above
  • Close the window

There are different *.plist foreach configuration to verify:


  • Check the Info.plist in the resources folder
  • Check the following:
    • Bundle Display Name - this is the text that will appear on the iPhone Home screen under the icon
    • Executable name - this should match what youʼve entered in the Properties settings
    • Icon must be set to Icon.png
    • Bundle Identifier - for example com.3SixtySoftware.theAstrologerFree
    • Bundle version - for example 1.1

For each configuration you have a Certificate *.cer and an ID *.p12 (it starts with iPhone):



There are different certificates for different users:


There is a Clean and Build to do:
  • From the Build menu choose choose Clean All Targets
  • From the Build menu choose Build (Command B)

RtoCSharp

We always read the manual.
Set a environment variable ROOTDRIVE='C:'

HTMLCode

HTMLCode Content