• 0

How to effectively design a software ?


Question

I have developing iOS application for some time now. The problem i have been facing is that i need to make a lot of changes while coding various phases of the app. I just start coding and add the functionality side by side. Due to this i have been facing problems. I want to know if someone suggest some books that can help designing the apps before starting the coding part of the application. I have read System analysis and design but i need a book that takes care of the life cycle of a mobile application not some big library softwares.

Thanks,

Regards,

Ravinder 

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

I have found that Martin Fowler has some good insights on enterprise-level software design that might be of interest to you. It's likely that you don't need "enterprise-level" design for an iOS application, but some of the basic stuff would certainly be helpful to you. He has a book and a website with some interesting stuff on it.

It's also worth looking into the concepts of Domain-Driven Design (DDD) and Test Driven Development (TDD). Domain driven design is the idea that you should design a software application around a core domain model (so all objects are correctly modeled, and any required hacks are limited to the object that they apply to), and Test Driven Development forces you to create small, testable objects, which can easily be replaced or changed as requirements change.

I'm sure there are plenty of other suggestions on the way. I wouldn't claim to be an authority on software design, heck very few people are, but I'd recommend hanging around for some more opinions :)

Link to comment
Share on other sites

  • 0

Step 1: Sketch it in paint
Step 2: Sketch it in Paint.Net (transparency n ######)
Step 3: Write what you want to do in notepad
Step 4: Learn to Code
Step 5: Take what you wrote in notepad and code that shiznit.

Link to comment
Share on other sites

  • 0

You are looking for a primer on how to do effective software engineering in my opinion. One of the most important general thing is compartmentalizing the software into separate pieces and defining interfaces between those components from the get-go. Drop in API stubs if you need to and fill them in later. The point is that you can do yourself a world of good if you take a top-down approach like that and just think about system interaction. OOP leads itself to these sort of things with its ideas of encapsulation and modular programming.

 

I imagine you are taking a more bottom-up approach and just thinking about specific components and the details surrounding those without formulating a big-picture about the needed interactions with other components; and that's what is leading to a lot of your re-designing.

  • Like 1
Link to comment
Share on other sites

  • 0

I would start with a high-level design document that describes the functionality and some common use cases. If it's a graphical application, include some mockups and interaction sketches as well.

Once that's done, however, I'd start coding one feature at a time, incrementally. This will lead to constant refactoring, but that's inevitable when building any non-trivial application, IMO. You code a bit, figure out what's wrong with your design, fix it, rince and repeat until it's done. It's an empirical process.

 

Good coding practices (SOLID and DDD in particular) go a long way towards making the refactoring part quick and pleasant.

  • Like 1
Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.